我有以下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"];
然而这不起作用。
答案 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;
}