【问题标题】:Linkbutton click event does not work inside gridview链接按钮单击事件在gridview中不起作用
【发布时间】:2012-03-27 10:18:47
【问题描述】:

我有一个网页,其中有一个网格视图。我已经在页面加载事件中填充了 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 事件中的一个网格视图列中添加了链接按钮。

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 很好地出现在数据网格中,但点击事件没有得到执行。控件永远不会到达事件处理程序代码。当我单击链接按钮时,页面会被刷新。可能是什么问题?

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

【问题讨论】:

标签: c# asp.net


【解决方案1】:

尝试使用“命令”属性而不是 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);

否则,如果我的建议不能满足您的要求,您必须删除 !Postback on Page_Load 事件。

【讨论】:

  • 不幸的是它不起作用:(我尝试将 loadGridView() 调用移到回发块之外,但没有帮助:(
  • 好的,老派 :) TemplateField 进入 Gridview,里面有一个 LinkBut​​ton;通过 e.row.findcontrol 查找对象,设置 RowDataBound 事件所需的属性,不要忘记 CommandArgument/CommandName;在 RowCommand 上执行您需要的代码。如果您需要更多示例,请告诉我:)
【解决方案2】:

您必须使用 GridView 的 OnRowCommand 事件。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-28
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多