访问动态添加的按钮列(在Datagrid中)单击事件。 C#/ ASP.NET

时间:2020-03-06 14:53:12  来源:igfitidea点击:

当我动态创建一个Datagrid并添加一个新的buttoncolumn时,如何访问buttoncolumn_click事件?

谢谢。

解决方案

MSDN网站上的这篇文章清楚地说明了如何向数据网格中添加按钮。代替使用按钮的click事件,我们将使用DataGrid的command事件。每个按钮都会传递我们要设置的特定命令参数。

本文介绍如何通过按钮使用命令事件。在其中使用CommandArguments和CommandNames。

这是我创建数据网格的地方:

System.Web.UI.WebControls.DataGrid Datagridtest =新的System.Web.UI.WebControls.DataGrid();

Datagridtest.Width = 600;
        Datagridtest.GridLines = GridLines.Both;
        Datagridtest.CellPadding = 1;

        ButtonColumn bc = new ButtonColumn();
        bc.CommandName = "add";
        bc.HeaderText = "Event Details";
        bc.Text = "Details";
        bc.ButtonType = System.Web.UI.WebControls.ButtonColumnType.PushButton;
        Datagridtest.Columns.Add(bc);
        PlaceHolder1.Controls.Add(Datagridtest);

        Datagridtest.DataSource = dt;
        Datagridtest.DataBind();

这是我尝试使用的事件:

受保护的void Datagridtest_ItemCommand(对象源,DataGridCommandEventArgs e)
{
....
}

这种想法可能会有所帮助,因为我似乎根本无法捕捉到该事件。

protected void Page_Load(object sender, EventArgs e)
{
  DataGrid dg = new DataGrid();

  dg.GridLines = GridLines.Both;

  dg.Columns.Add(new ButtonColumn {
    CommandName = "add",
    HeaderText = "Event Details",
    Text = "Details",
    ButtonType = ButtonColumnType.PushButton
  });

  dg.DataSource = getDataTable();
  dg.DataBind();

  dg.ItemCommand += new DataGridCommandEventHandler(dg_ItemCommand);

  pnlMain.Controls.Add(dg);
}

protected void dg_ItemCommand(object source, DataGridCommandEventArgs e)
{
  if (e.CommandName == "add")
  {
    throw new Exception("add it!");
  }
}

protected DataTable getDataTable()
{
  // returns your data table
}