附加到gridview内链接按钮的事件不起作用

本文关键字:按钮 事件 不起作用 链接 gridview | 更新日期: 2023-09-27 18:24:44

我在asp.net中有一个网格,在asp.net内部,我将数据绑定为链接按钮。当单击链接按钮时,我需要在代码后面调用一个方法。所附的事件在我的代码中并不令人惊叹。我该怎么解决这个问题?

我的代码类似于此,

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            LinkButton link = new LinkButton();
            link.Text = e.Row.Cells[0].Text;
            link.CommandArgument = "Hello";
            link.Click += new EventHandler(this.onLinkClick);  
            e.Row.Cells[0].Controls.Add(link);
        }
    }
    protected void onLinkClick(object sender, EventArgs e)
    {
        LinkButton btn = (LinkButton)(sender);
        string value = btn.CommandArgument;
        TextBox1.Text=value;
    }  

附加到gridview内链接按钮的事件不起作用

每次在页面加载中都必须调用将源绑定到GridView的函数

前任。

protected void Page_Load(object sender, EventArgs e)
{
     PopulateGridView();
}

因为没有添加或不添加链接按钮的逻辑(我想你必须为每条记录添加它),为什么不在设计时添加它呢?

   <asp:GridView ID="GridView1" runat="server">
        ....
    <ItemTemplate>
            <asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">LinkButton</asp:LinkButton>            
    </ItemTemplate>
    ......
    </asp:GridView>

确保页面上的AutoEventWireup="true"

处理GridViewRowCommand事件以处理按钮的"事件",如果您正在动态添加LinkButton,则必须在Page_InitPage_Load执行数据绑定。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            LinkButton link = new LinkButton();
            link.Text = e.Row.Cells[0].Text;
            link.CommandArgument = "Hello";
            e.Row.Cells[0].Controls.Add(link);
        }
    }
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
       string value = e.CommandArgument.ToString();
       TextBox1.Text=value;
    }

您需要在GridView的RowCreated事件中为您的动态按钮挂起事件处理程序,否则它不会启动。然后在RowDataBound事件处理程序中使用"FindControl"。就我个人而言,我一点也不喜欢这种型号,但有时它是不可避免的。

您应该将GridView的<asp:ButtonField>与网格的RowCommand事件一起使用。这样,您就不是创建动态控件和连接事件的人。

下面是一篇关于如何使用它的文章。