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

时间:2012-02-16 11:33:19

标签: c# asp.net

我在asp.net中有一个网格,在asp.net里面我绑定数据作为linkbutton点击链接按钮我需要在代码后面调用一个方法。附加事件不是我的代码中的woking。我怎么能解决这个问题?

我的代码与此类似,

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;
    }  

4 个答案:

答案 0 :(得分:1)

您必须每次在Page Load

中调用将源绑定到GridView的函数

离。

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

答案 1 :(得分:1)

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

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

确保页面上的AutoEventWireup="true"

答案 2 :(得分:0)

处理RowCommand事件GridView以处理按钮的“事件”,并且您正在动态添加LinkButton,然后必须在Page_Init或{{1}执行数据绑定}}

Page_Load

答案 3 :(得分:0)

您需要在GridView的RowCreated事件中为动态按钮挂钩事件处理程序,否则它将不会触发。然后在RowDataBound事件处理程序中使用“FindControl”。就个人而言,我根本不喜欢这种模式,但有时它是不可避免的。

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

Here's an article on how to use it.