1

我正在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);
            }
4

2 回答 2

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
     }
   }
}

还可以看..

于 2013-07-11T12:38:53.317 回答
0

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

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

        DataGridViewButtonColumn col = new DataGridViewButtonColumn();
        col.UseColumnTextForButtonValue = true;
        col.Text = "ADD";
        col.Name = "MyButton";
        dataGridView1.Columns.Add(col);
于 2013-11-15T22:46:21.953 回答