【问题标题】:how to create button click event in gridview RowDataBound c# asp.net如何在gridview RowDataBound c# asp.net中创建按钮单击事件
【发布时间】:2015-04-01 06:36:17
【问题描述】:

我正在尝试在 gridview c# asp.net 中的 rowdatabound 中创建按钮和单击事件,如下面的代码

 protected void btnerror_Click(object sender, EventArgs e)
{
         GridView gv = new GridView();
        gv.RowDataBound += gv_RowDataBound;
        gv.RowCommand += gv_RowCommand;
        gv.RowCreated += gv_RowCreated;

        gv.EnableViewState = true;

        gv.DataSource = _dt;
        gv.DataBind();
}


void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {

        ImageButton btnUpdate = new ImageButton();

        btnUpdate.ID = "btnupdate";
        btnUpdate.ImageUrl = "~/SmartAdmin/Images/update.png";
        btnUpdate.ToolTip = "Click Update";
        btnUpdate.CommandName = "update";


        btnUpdate.Click += btnUpdate_Click;

        TableCell tc = new TableCell();

        tc.Controls.Add(btnUpdate);
        e.Row.Cells.Add(tc);

    }
}


void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "update")
    {

    }
}

单击该按钮时,单击事件未触发...

我犯错的地方...

谢谢你.......

【问题讨论】:

  • 您真的要手动创建GridView 吗?我强烈怀疑这一点。而是将其添加到 aspx 并使其在 btnerror_Click 中可见。

标签: c# asp.net gridview


【解决方案1】:

您需要为点击事件添加功能

btnUpdate.Click += btnUpdate_Click;

protected void btnUpdate_Click(object sender, EventArgs e)
{

}

【讨论】:

    【解决方案2】:

    您真的要手动创建GridView 吗?我强烈怀疑这一点。而是以声明方式将其添加到 aspx 页面并使其在 btnerror_Click 中可见。

    不要动态创建控件并在RowDataBound 中注册事件处理程序,而是在每次回发时触发的RowCreated(与RowDataBound 相对):

    void gv_RowCreated(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            ImageButton btnUpdate = new ImageButton();
            btnUpdate.Click += btnUpdate_Click;
            TableCell tc = new TableCell();
    
            tc.Controls.Add(btnUpdate);
            e.Row.Cells.Add(tc);
        }
    }
    
    void gv_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {    
            ImageButton btnUpdate = (ImageButton)e.Row.FindControls("btnupdate") 
            btnUpdate.ID = "btnupdate";
            btnUpdate.ImageUrl = "~/SmartAdmin/Images/update.png";
            btnUpdate.ToolTip = "Click Update";
            btnUpdate.CommandName = "update";
        }
    }
    

    所以在RowCreated 中创建它,但在RowDataBound 中初始化它,您还可以在其中访问数据源(如果需要)。

    另请注意,您应该 DataBindGridViewif(!IsPostBack) 而不是每次回发(如果是这种情况)。因此,在您分配数据源的位置添加此检查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      • 2011-09-26
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多