2015-09-29 5 views
0

У меня есть RadGrid с GridEditCommandColumn. Я хотел бы иметь свойство EditText каждого изменения строки в зависимости от содержимого строки. Например, измените EditText на «Редактировать» на «Редактировать продукт» или «Редактировать пакет» на основе содержимого строки.Программно изменить Telerik GridEditCommandColumn EditText на строку в RadGrid

Я пробовал использовать синтаксис привязки данных, но получил сообщение о том, что он не поддерживает привязку данных.

Есть ли событие, в которое я могу подключиться, чтобы изменить значение EditText программно в строке?

ответ

1

Это то, что вы хотите? В любом случае вы можете легко найти и отредактировать через OnItemDataBound ... Поместите в UniqueName в колонке Edit Command. Помогите вам найти элемент управления для него.

.aspx

<asp:ScriptManager ID="sm" runat="server"></asp:ScriptManager> 
    <telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" OnItemDataBound="RadGrid1_ItemDataBound"> 
     <MasterTableView> 
      <Columns> 
       <telerik:GridEditCommandColumn ButtonType="LinkButton" UniqueName="GridEditCommandColumn"></telerik:GridEditCommandColumn> 
       <telerik:GridTemplateColumn> 
        <ItemTemplate> 
         <asp:Label ID="lbl" runat="server" Text='<%# Eval("A") %>'></asp:Label> 
        </ItemTemplate> 
       </telerik:GridTemplateColumn> 

      </Columns> 
     </MasterTableView> 
    </telerik:RadGrid> 
</asp:ScriptManager> 

.cs

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     DataTable dt = new DataTable(); 
     dt.Columns.Add("A"); 
     string[] array = { "Product", "Goods", "Category", "Foods" }; 

     // Loop & Add 
     for (int i = 0; i < array.Length; i++) 
      dt.Rows.Add(array[i]); 

     // Bind 
     RadGrid1.DataSource = dt; 
     RadGrid1.DataBind(); 

     dt.Dispose(); 

    } 
} 

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) 
{ 
    // CHeck 
    if (e.Item is GridDataItem) 
    { 
     // Variable & Find Control 
     string value = string.Empty; 
     GridDataItem item = e.Item as GridDataItem; 
     LinkButton lbtnEdit = item["GridEditCommandColumn"].Controls[0] as LinkButton; 
     Label lbl = item.FindControl("lbl") as Label; 

     // Check & Set Value 
     if (lbl != null) value = lbl.Text.Trim(); 

     // Check 
     if (lbtnEdit != null) 
      lbtnEdit.Text = "Edit " + value; 
    } 
} 

Результат
enter image description here