0

我有以下 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"];

然而这并没有奏效。

4

3 回答 3

1

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

于 2013-02-26T14:18:45.837 回答
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);
            }
        }

试试这个。

于 2013-02-26T14:22:01.877 回答
0

不需要在 checkButton_OnClick 事件上进行此循环,您可以编写如下代码:

protected void checkButton_OnClick (object sender, EventArgs e)
    {
        CheckBox chk= (CheckBox)sender;
        GridViewRow gridViewRow = (GridViewRow)chk.NamingContainer;
        int rowindex = gridViewRow.RowIndex;
    }
于 2013-02-26T14:24:41.630 回答