2015-02-27 4 views
0

У меня есть управление с помощью радиоуправления и у него есть столбец шаблона с itemtemplate с использованием TextBox. Когда radgrid загружается, он показывает все данные с текстовым полем NULL. Теперь я хочу, чтобы после загрузки radgrid значение текстового поля было заполнено в соответствии с данными, основанными на моих условиях, которые я предоставляю.Как изменить значение столбца шаблона решетки после DataBound при загрузке

Я пробовал OnItemDataBound, OnColumnCreated Событие, но мне не удалось получить значение метки.

код ниже:

<telerik:RadGrid ID="gridmaterial" runat="server" AutoGenerateColumns="false" AllowSorting="false" OnColumnCreated="gridmaterial_OnColumnCreated" OnItemDataBound="gridmaterial_OnItemDataBound" > 
            <MasterTableView AutoGenerateColumns="false" ShowHeadersWhenNoRecords="true"> 
             <Columns> 
              <telerik:GridTemplateColumn UniqueName="RowSelect" AllowFiltering="false"> 
               <HeaderStyle Width="5%" /> 
               <ItemTemplate> 
                <asp:CheckBox runat="server" ID="chbxmatrow" ClientIDMode="Static" ViewStateMode="Enabled"/> 
               </ItemTemplate> 
              </telerik:GridTemplateColumn> 
              <telerik:GridTemplateColumn HeaderText="#" UniqueName="SerialNumber" AllowFiltering="false"> 
               <HeaderStyle Width="5%" /> 
               <ItemTemplate> 
                <asp:Label runat="server" ID="lblSNo" CssClass="control-label" ClientIDMode="Static" Text='<%# Container.DataSetIndex + 1 %>'></asp:Label> 
               </ItemTemplate> 
              </telerik:GridTemplateColumn> 
               <telerik:GridTemplateColumn HeaderText="Material Id" UniqueName="MasterMatId" Visible="false"> 
               <HeaderStyle Width="40%" /> 
               <ItemTemplate> 
               <asp:Label runat="server" ID="lblMaterialid" CssClass="control-label" ClientIDMode="Static" Text='<%# Eval("MasterMatID") %>'></asp:Label> 
               </ItemTemplate> 
              </telerik:GridTemplateColumn> 
              <telerik:GridTemplateColumn HeaderText="Group" UniqueName="Group"> 
               <HeaderStyle Width="20%" /> 
               <ItemTemplate> 
               <asp:Label runat="server" ID="lblMaterialGroup" CssClass="control-label" ClientIDMode="Static" Text='<%# Eval("Group") %>'></asp:Label> 
               </ItemTemplate> 
              </telerik:GridTemplateColumn> 
              <telerik:GridTemplateColumn HeaderText="Material Description" UniqueName="MasterMatDesc"> 
               <HeaderStyle Width="50%" /> 
               <ItemTemplate> 
               <asp:Label runat="server" ID="lblMaterialDesc" CssClass="control-label" ClientIDMode="Static" Text='<%# Eval("Description") %>'></asp:Label> 
               </ItemTemplate> 
              </telerik:GridTemplateColumn> 
              <telerik:GridTemplateColumn HeaderText="Qty" UniqueName="Qty" AllowFiltering="false"> 
               <HeaderStyle Width="20%" /> 
               <ItemTemplate> 
                <asp:TextBox runat="server" CssClass="form-control" ID="txtQty" ViewStateMode="Enabled" Width="100" onKeyPress="return isNumber(event);"></asp:TextBox> 
               </ItemTemplate> 
              </telerik:GridTemplateColumn> 

             </Columns> 

            </MasterTableView> 
            <ClientSettings> 
             <Scrolling AllowScroll="true" ScrollHeight="400px" /> 
            </ClientSettings> 
           </telerik:RadGrid> 

Кодекс Я попытался:

protected void gridmaterial_OnItemDataBound(object sender, GridItemEventArgs e) 
    { 
     foreach (GridDataItem item in gridmaterial.Items) 
     { 
      CheckBox rowcheck = (CheckBox)item.FindControl("chbxmatrow"); 
      Label lblMaterialid = (Label)item.FindControl("lblMaterialid"); 
      Label lblMaterialDesc = (Label)item.FindControl("lblMaterialDesc"); 
      TextBox txtQty = (TextBox)item.FindControl("txtQty"); 
      var result = (from r in MapppedItem.AsEnumerable() where r.Field<int>("MasterMatID") == Convert.ToInt32(lblMaterialid.Text) select r).ToList(); 
      foreach (DataRow dr in result) 
      { 
      txtQty.Text=dr["BOMQty"].ToString(); 
      rowcheck.Checked = true; 
      } 
     } 
     GridDataItem item = e.Item as GridDataItem; 
     GridColumn column = gridmaterial.MasterTableView.GetColumn("MasterMatId"); 
     /*CheckBox rowcheck = (CheckBox)item.FindControl("chbxmatrow"); 
     Label lblMaterialid = (Label)item.FindControl("lblMaterialid"); 
     Label lblMaterialDesc = (Label)item.FindControl("lblMaterialDesc"); 
     TextBox txtQty = (TextBox)item.FindControl("txtQty");*/ 


     // int MatID = Convert.ToInt32(item.GetDataKeyValue("MasterMatId")); 
     // var result = (from r in MapppedItem.AsEnumerable() where r.Field<int>("MasterMatID") == Convert.ToInt32(MatID) select r).ToList(); 
     // foreach (DataRow dr in result) 
     // { 
     //  txtQty.Text = dr["BOMQty"].ToString(); 
     //  rowcheck.Checked = true; 
     // } 
    } 

Это порождает Null исключение.

ответ

0

Пожалуйста, попробуйте приведенный ниже фрагмент кода.

ASPX

<telerik:RadGrid ID="gridmaterial" runat="server" AutoGenerateColumns="false" AllowSorting="false" OnColumnCreated="gridmaterial_OnColumnCreated" OnItemDataBound="gridmaterial_OnItemDataBound"> 
    <MasterTableView AutoGenerateColumns="false" ShowHeadersWhenNoRecords="true" DataKeyNames="MasterMatId"> 
     <Columns> 
      <telerik:GridTemplateColumn UniqueName="RowSelect" AllowFiltering="false"> 
       <HeaderStyle Width="5%" /> 
       <ItemTemplate> 
        <asp:CheckBox runat="server" ID="chbxmatrow" ClientIDMode="Static" ViewStateMode="Enabled" /> 
       </ItemTemplate> 
      </telerik:GridTemplateColumn> 
      <telerik:GridTemplateColumn HeaderText="#" UniqueName="SerialNumber" AllowFiltering="false"> 
       <HeaderStyle Width="5%" /> 
       <ItemTemplate> 
        <asp:Label runat="server" ID="lblSNo" CssClass="control-label" ClientIDMode="Static" Text='<%# Container.DataSetIndex + 1 %>'></asp:Label> 
       </ItemTemplate> 
      </telerik:GridTemplateColumn> 
      <telerik:GridTemplateColumn HeaderText="Group" UniqueName="Group"> 
       <HeaderStyle Width="20%" /> 
       <ItemTemplate> 
        <asp:Label runat="server" ID="lblMaterialGroup" CssClass="control-label" ClientIDMode="Static" Text='<%# Eval("Group") %>'></asp:Label> 
       </ItemTemplate> 
      </telerik:GridTemplateColumn> 
      <telerik:GridTemplateColumn HeaderText="Material Description" UniqueName="MasterMatDesc"> 
       <HeaderStyle Width="50%" /> 
       <ItemTemplate> 
        <asp:Label runat="server" ID="lblMaterialDesc" CssClass="control-label" ClientIDMode="Static" Text='<%# Eval("Description") %>'></asp:Label> 
       </ItemTemplate> 
      </telerik:GridTemplateColumn> 
      <telerik:GridTemplateColumn HeaderText="Qty" UniqueName="Qty" AllowFiltering="false"> 
       <HeaderStyle Width="20%" /> 
       <ItemTemplate> 
        <asp:TextBox runat="server" CssClass="form-control" ID="txtQty" ViewStateMode="Enabled" Width="100" onKeyPress="return isNumber(event);"></asp:TextBox> 
       </ItemTemplate> 
      </telerik:GridTemplateColumn> 
     </Columns> 
    </MasterTableView> 
    <ClientSettings> 
     <Scrolling AllowScroll="true" ScrollHeight="400px" /> 
    </ClientSettings> 
</telerik:RadGrid> 

ASPX.CS

protected void gridmaterial_OnItemDataBound(object sender, GridItemEventArgs e) 
{ 
    if (e.Item is GridDataItem) 
    { 
     GridDataItem item = e.Item as GridDataItem; 
     CheckBox rowcheck = (CheckBox)item.FindControl("chbxmatrow"); 
     Label lblMaterialDesc = (Label)item.FindControl("lblMaterialDesc"); 
     TextBox txtQty = (TextBox)item.FindControl("txtQty"); 
     var result = (from r in MapppedItem.AsEnumerable() 
         where r.Field<int>("MasterMatID") == Convert.ToInt32(item.GetDataKeyValue("MasterMatId").ToString()) 
         select r.BOMQty).FirstOrDefault(); 
     txtQty.Text = result; 

    } 
} 

Позвольте мне знать, если я не понимаю ваше требование.

+0

Кроме того, это хорошее справочное руководство по доступу к элементам управления: http://www.telerik.com/help/aspnet-ajax/grid-accessing-cells-and-rows.html. – rdmptn

Смежные вопросы