【问题标题】:ASP.NET C# Code button in gridviewgridview 中的 ASP.NET C# 代码按钮
【发布时间】:2011-04-06 09:26:13
【问题描述】:

大家好,我有一个 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();


        }

    }

但它什么也没做。基本上我需要它来查看该行,如果单击了标记按钮,请将标记下的注释更新为“是”。

【问题讨论】:

    标签: c# asp.net visual-studio-2010 webforms


    【解决方案1】:

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

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

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

    onrowcommand="GridView1_RowCommand"
    

    您可以获取更多信息here

    【讨论】:

    • 嗨谢谢你我已经添加了它,但它没有做我想要的。你能再看看我的帖子吗?我已经更新了更多信息。
    • 谢谢伙计,它现在做了一些事情,但更新了所有行,我认为我需要一个 WHERE 语句,只是不确定如何根据该行的位置来编写它,只有任何想法?如果有帮助,我有一个 Comment_ID 字段。
    • 你需要通过 Row.Cells[] 获取值或者你可以做一个查找控件。
    【解决方案2】:

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

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

    然后在代码中你可以从

    var id = e.CommandArgument.ToString();
    

    更新:刚刚更新了代码

    【讨论】:

    • 您好,我添加了您放置的代码,但出现错误:Eval()、XPath() 和 Bind() 等数据绑定方法只能在数据绑定控件的上下文中使用。
    • 尝试将 CommandArgument='' 替换为 CommandArgument="Comment_ID"
    【解决方案3】:

    通过执行此操作在您的代码隐藏文件中注册事件处理程序

    GridView1.RowCommand += new GridViewCommandEventHandler(GridView1_RowCommand);
    

    并将其添加到您的 aspx 页面中

    OnRowCommand="GridView1_RowCommand"
    

    【讨论】:

      【解决方案4】:

      您忘记在您的 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">
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-14
        • 1970-01-01
        • 2013-07-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多