ASP.. NET c#代码按钮在gridview

本文关键字:gridview 按钮 代码 NET ASP | 更新日期: 2023-09-27 17:49:02

大家好,我有一个GridView (GridView1),我添加了一列,并插入一个按钮:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
            AutoGenerateColumns="False" DataSourceID="ObjectDataSource2" 
            onselectedindexchanged="GridView1_SelectedIndexChanged" Width="798px">
            <Columns>
                .....
                <asp:ButtonField ButtonType="Button" CommandName="cmdFlag" Text="Flag" />
            </Columns>
        </asp:GridView>

基本上点击按钮,我想运行SQL更新,但似乎不能点击按钮进入c#并添加查询。我可以在c#中找到页面,但不确定该为方法写什么。

下面是c#代码:

 void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "cmdFlag")
        {
        con.Open();
        cmd = new SqlCommand("UPDATE Comments SET Flagged = '" + "Yes" + "'", con); 
        cmd.ExecuteNonQuery();

        }
    }

它什么也没做。基本上,我需要它来查看行,如果标记按钮被单击,则将标记下的评论更新为"Yes"。

ASP.. NET c#代码按钮在gridview

您不会获得直接事件。您需要在RowCommand事件上编写代码。

void GridView1_RowCommand(Object sender, GridViewCommandEventArgs e)
{
    if(e.CommandName=="cmdFlag")
        {
        //Write code update database
    }
}

你还需要修改GridView控件。像这样添加事件。

onrowcommand="GridView1_RowCommand"

你可以在这里获得更多信息

如果您想添加ID以在WHERE语句中使用它,您可以将其放入CommandArgument中,如

<asp:ButtonField ButtonType="Button" CommandName="cmdFlag" Text="Flag" CommandArgument='<%# Eval("Comment_ID") %>' />

那么在代码中你可以从

得到它
var id = e.CommandArgument.ToString();

更新:刚刚更新了代码

通过以下操作在代码隐藏文件中注册事件处理程序

GridView1.RowCommand += new GridViewCommandEventHandler(GridView1_RowCommand);

并添加到你的aspx页面

OnRowCommand="GridView1_RowCommand"

您忘记在Gridview上添加OnRowCommand="GridView1_RowCommand",这就是为什么它没有触发RowCommand事件。

<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand" AllowPaging="True" 
        AutoGenerateColumns="False" DataSourceID="ObjectDataSource2" 
        onselectedindexchanged="GridView1_SelectedIndexChanged" Width="798px">