如何动态添加gridview中的按钮

时间:2013-07-11 08:46:14

标签: asp.net gridview dynamically-generated

我动态创建gridview ...现在我想在其中添加一些按钮,并添加相关的rowCommand事件。请帮我这样做。这就是我在代码中动态创建GridView的方法

for (int i = 0; i < dtEmployees.Rows.Count; i++)
            {
                TableRow tr = new TableRow();
                TableCell tc = new TableCell();


                GridView gv = new GridView();
                gv.ID = "gv" + dtTasks.Rows[i]["TaskID"].ToString() + dtEmployees.Rows[i]["EmpID"].ToString();

                DataTable dt = dtTasks.Clone();

                foreach (DataRow dr in dtTasks.Rows)
                {
                    if (dr["EmpID"].ToString() == dtEmployees.Rows[i]["EmpID"].ToString())
                    {
                        dt.Rows.Add(dr.ItemArray);
                    }
                }
                gv.DataSource = dt;
                gv.DataBind();
                tc.Controls.Add(gv);
                tr.Cells.Add(tc);
                tblMain.Rows.Add(tr);
            }

2 个答案:

答案 0 :(得分:1)

虽然我不测试它,但逻辑上它将如下:

if(e.Row.RowIndex > -1) 
{ 
    Button button = new Button();
    button.CommandArgument = dt.Rows[e.Row.RowIndex][i].ToString(); 
    button.Attributes.Add("OnClick", "button_Clicked");

    e.Row.Cells[i].Controls.Add(button);
}

其中e为GridViewRowEventArgs。这些代码将放在您的for/foreach循环中。可能就像..

for (int i = 0; i < gv.Rows.Count; i++)

然后创建按钮事件处理程序

protected void button_Clicked(object sender, EventAgrs e)
{
   if (sender is Button)
   {
     try
     {
        String value = ((Button)sender).CommandArgument;
     }
     catch
     {
       //Check for exception
     }
   }
}

也可以查看..

答案 1 :(得分:0)

我知道你这样做是因为你在几个月之前问过,但我刚回答了那些研究这一点的人。

只需在显示的功能中执行此操作:

        DataGridViewButtonColumn col = new DataGridViewButtonColumn();
        col.UseColumnTextForButtonValue = true;
        col.Text = "ADD";
        col.Name = "MyButton";
        dataGridView1.Columns.Add(col);