从Gridview获取每个EditItemTemplate的ID

时间:2014-04-24 14:29:30

标签: c# asp.net gridview

我有一个包含许多列和行的gridview。我需要从gridview获取每个模板字段的复选框状态。

我知道我可以通过获得每个人来实现这一目标:

CheckBox cbTrans = (CheckBox)gvStations.Rows[rowindex].FindControl("cbTaxEdit");
CheckBox cbReg = (CheckBox)gvStations.Rows[rowindex].FindControl("cbRegEdit");

如果我有20个模板字段,我怎样才能一次获得所有模板字段。我的想法是在for循环中获取一次并为每个复选框执行操作。

//Something along this lines but I know I can't use J here
for (int i = 0; i <= this.gvStations.Rows.Count - 1; i++)
{
  for (int j = 0; j <= this.gvSta.Columns.Count - 1; j++)                
  {
    //I WANT TO GO THRU EACH COLUMN, J can't be used here, throws error
    CheckBox cbox = (CheckBox)gvStations.Rows[i].FindControl(j);

    if(cbox.Checked)
    {
      //Perform Operation
    } 
 } 
}

的GridView

  <asp:TemplateField HeaderText="TAX" SortExpression="Taxes">
       <EditItemTemplate>
           <asp:CheckBox ID="cbTaxEdit" runat="server" Checked='<%# (int)Eval("Taxes") == 1 %>' />
       </EditItemTemplate>
       <ItemTemplate>
                 <asp:CheckBox ID="cbTax" runat="server" Enabled="false" Checked='<%# (int)Eval("Taxes") == 1 %>'>
                  </asp:CheckBox>
        </ItemTemplate>
         <ItemStyle HorizontalAlign="Center" />
     </asp:TemplateField>
      <%--Registrations--%>
       <asp:TemplateField HeaderText="REG" SortExpression="Registrations">
           <EditItemTemplate>
               <asp:CheckBox ID="cbRegEdit" runat="server" Checked='<%# (int)Eval("Registrations") == 1 %>' />
           </EditItemTemplate>
      <ItemTemplate>
               <asp:CheckBox ID="cbReg" runat="server" Enabled="false" Checked='<%# (int)Eval("Registrations") == 1 %>'>
                </asp:CheckBox>
       </ItemTemplate>
       <ItemStyle HorizontalAlign="Center" />
      </asp:TemplateField>

       <asp:TemplateField HeaderText="BTRColumn" SortExpression="BTR">
       <EditItemTemplate>
                <asp:CheckBox ID="cbBTREdit" runat="server" Checked='<%# (int)Eval("BTR") == 1 %>' />
        </EditItemTemplate>
       <ItemTemplate>
               <asp:CheckBox ID="cbBTR" runat="server" Enabled="false" Checked='<%# (int)Eval("BTR") == 1 %>'>
               </asp:CheckBox>
        </ItemTemplate>
      <ItemStyle HorizontalAlign="Center" />
     </asp:TemplateField>

1 个答案:

答案 0 :(得分:0)

发布它作为评论,但意味着发布它作为答案哈哈!过了漫长的一天。

我会遍历复选框并在列表中收集它们的ID。让呼叫列表“CheckBoxIDs”。然后我会这样做: CheckBox cbox =(CheckBox)gvStations.Rows [i] .FindControl(CheckBoxIDs [j]);