Linkbutton click事件在gridview中不起作用

时间:2012-03-27 10:18:48

标签: c# asp.net

我有一个网页,我有一个gridview。我在页面加载事件上填充了gridview。

protected void Page_Load(object sender, EventArgs e)
{          
   if (!IsPostBack)
   {
      loadGridView();
   }
}

这是加载gridview方法。

private void loadGridView()
{
   dataTable dt = getData(); // this function populates the data table fine.
   gridView1.dataSource = dt;
   gridview1.dataBind();
}

现在我在网格视图的RowDataBound事件的gridview列之一中添加了linkBut​​tons。

protected void gvTicketStatus_RowDataBound(object sender, GridViewRowEventArgs e)
{
   LinkButton lb = new LinkButton();
   lb.Text = str1; // some text I am setting here
   lb.ID = str2;   // some text I am setting here
   lb.Click += new EventHandler(lbStatus_click);
   e.Row.Cells[3].Controls.Add(lb);
}

最后这是链接按钮点击事件的事件处理程序代码。

private void lbStatus_click(object sender, EventArgs e)
{
    string str = ((Control)sender).ID;
    // next do something with this string
}

问题是,LinkBut​​tons很好地出现在数据网格中,但是click事件没有得到执行。控件永远不会到达事件处理程序代码。当我单击链接按钮时,页面只会刷新。可能是什么问题?

我试过从(!isPostBack)范围之外调用loadGridView()方法,但它没有帮助!

2 个答案:

答案 0 :(得分:0)

尝试使用“Command”属性而不是Click事件

LinkButton lnkStatus = new LinkButton();
lnkStatus.ID = string.Format("lnkStatus_{0}", value);
lnkStatus.Text = "some text here";                    
lnkStatus.CommandArgument = "value";
lnkStatus.CommandName = "COMMANDNAME";
lnkStatus.Command += new CommandEventHandler(lnkStatus_Command);

否则,如果我的提案不满足您,您必须删除Page_Load事件上的!Postback。

答案 1 :(得分:0)

你必须使用GridView的OnRowCommand事件。

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName.Equals("LinkButton1")) //call the CommandArgument name here.
    {
       //code            
    }      
}