是否可以从CommandArgument
获取GridViewRow
?
在按钮点击事件的for-each循环中,我需要CommandArgument
示例代码:
foreach (GridViewRow row in MyGridView.Rows)
{
...
string commandArgument = ?;
...
}
答案 0 :(得分:2)
根据你的评论我理解你的使命。你可以解决这个问题 通过创建隐藏字段来获取表的ID,您可以在选中复选框时访问此ID。然后根据id进行更新。我在这里更新 网格视图的名称列。
样品: 的 WebForm1.aspx的强>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand" OnRowEditing="GridView1_RowEditing">
<Columns>
<asp:TemplateField HeaderText="name">
<ItemTemplate>
<asp:Label ID="lblUpdate" runat="server" Text= '<%#Eval("name") %>'></asp:Label>
<asp:CheckBox ID="chkbox" runat="server" />
<asp:HiddenField ID="HiddenField1" runat="server" Value='<%#Eval("ID") %>' />
</ItemTemplate>
</asp:TemplateField>
<强> WebForm1.aspx.cs中强>
protected void btnSave_Click(object sender, EventArgs e) {
foreach (GridViewRow row in GridView1.Rows)
{
if (row.RowType==DataControlRowType.DataRow)
{
CheckBox chkbox = (CheckBox)row.Cells[0].FindControl("chkbox");
HiddenField hdID = (HiddenField)row.Cells[0].FindControl("id");
Label lbl = (Label)row.Cells[0].FindControl("lblUpdate");
if (chkbox!=null)
{
if(chkbox.Checked)
{
string Id = hdID.Value;
//now update name... here by the help of this RowId===> Id
}
}
}
}
注意这里Cells [0]表示第一个TemplateField数据。我已经使用过这个,因为我在第一个模板字段中放置了所有名称字段和复选框字段。
我认为这会对你有所帮助。 :)