从GridViewRow asp webform获取CommandArgument

时间:2018-03-25 10:06:26

标签: c# asp.net gridview webforms

是否可以从CommandArgument获取GridViewRow

在按钮点击事件的for-each循环中,我需要CommandArgument

示例代码:

foreach (GridViewRow row in MyGridView.Rows)
   {
       ...
       string commandArgument = ?;
       ...
   }

1 个答案:

答案 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数据。我已经使用过这个,因为我在第一个模板字段中放置了所有名称字段和复选框字段。

我认为这会对你有所帮助。 :)