从checkBox获取GridView中的ID

时间:2013-02-26 14:13:12

标签: c# asp.net gridview

我有以下GridView -

<ItemTemplate>

         <asp:CheckBox ID="CheckBox1" runat="server" OnCheckedChanged="checkButton_OnClick"  AutoPostBack="true"/>

     </ItemTemplate>

  </asp:TemplateField>

        <asp:BoundField HeaderText="tID" DataField="tID" 
                        SortExpression="tID" HeaderStyle-CssClass = "hideGridColumn" ItemStyle-CssClass="hideGridColumn"></asp:BoundField>
        <asp:BoundField HeaderText="Name" HeaderStyle-HorizontalAlign=Center DataField="NAME" 
                        SortExpression="NAME" ItemStyle-HorizontalAlign=Center></asp:BoundField>

    </Columns>

然后通过 -

找到检查复选框的行
 foreach (GridViewRow gvr in table_example.Rows)
        {
            if (((CheckBox)gvr.FindControl("CheckBox1")).Checked == true)
            {
                //Here I need the tID of the row that is checked


                WebService1 ws = new WebService1();
                ws.addID(tID);
            }
        }

我需要获取已检查行的tID,我试过 -

int tID = gvr.cells["tID"];

然而这不起作用。

3 个答案:

答案 0 :(得分:1)

要获取当前行ID,请执行以下操作:gvr.ID。 但我不确定你是否真的想使用行ID或索引。 我想你正在寻找这样的东西(考虑到索引1指的是“tID”BoundField):gvr.Cells [1] .Text。

答案 1 :(得分:0)

foreach (GridViewRow gvr in table_example.Rows)
        {
            if (((CheckBox)gvr.FindControl("CheckBox1")).Checked == true)
            {
                //Here I need the tID of the row that is checked

int tID = Convert.ToInt32(gvr.Cells[1].Text);
                WebService1 ws = new WebService1();
                ws.addID(tID);
            }
        }

试试这个。

答案 2 :(得分:0)

您无需在checkButton_OnClick事件上进行此循环,您可以按如下方式编写代码:

protected void checkButton_OnClick (object sender, EventArgs e)
    {
        CheckBox chk= (CheckBox)sender;
        GridViewRow gridViewRow = (GridViewRow)chk.NamingContainer;
        int rowindex = gridViewRow.RowIndex;
    }