简体   繁体   English

每按一次按钮添加行datagridview

[英]Add row datagridview at every button click

I have on a usercontrol a datagridview. 我在usercontrol上有一个datagridview。 I created a datatable and I set the source of datagrid to be this datatable. 我创建了一个数据表,并将datagrid的源设置为此数据表。 I want,at runtime,to be able to add how many rows on gridview I want at every button click. 我希望,在运行时,能够在每次按钮点击时添加gridview上我想要的行数。

My code : 我的代码:

 private DataTable CreateTable()
    {
        Datatable table=new Datatable();
        table.Columns.Add("Name".ToString());
        table.Columns.Add("Size".ToString());
        DataRow dr = table.NewRow();
        dr["Name"] = "Mike";
        DataRow dr2 = table.NewRow();
        dr2["Name"] = "Ryan;
        DataRow dr3 = table.NewRow();
        dr3["Name"] = "Taylor";
        dr["Size"] = " one";
        dr2["Size"] = "two";
        table.Rows.Add(dr);
        table.Rows.Add(dr2);
        table.Rows.Add(dr3);
        return table;
     //and on my constructor I set gridview.DataSource=Datatable;
    }

 //Code  on the event:
 private void button_Click(object sender, EventArgs e)
    {

        DataRow NewRow = table.NewRow();
        table.Rows.Add(NewRow);
    }

You need to define the DataTable at form level. 您需要在表单级别定义DataTable Then in button click you can do: 然后在按钮单击中您可以执行:

private void button_Click(object sender, EventArgs e)
{
    DataRow NewRow = table.NewRow();
    table.Rows.Add(NewRow);
    gridview.DataSource=table; //specify the source
}

For defining table at form level: 用于在表单级别定义表:

DataTable table; //DataTable at form level

private DataTable CreateTable()
{
    table=new Datatable(); //here insntianting the form level table. 
    table.Columns.Add("Name".ToString());
    table.Columns.Add("Size".ToString());
    DataRow dr = table.NewRow();
    dr["Name"] = "Mike";
    DataRow dr2 = table.NewRow();
    dr2["Name"] = "Ryan;
    DataRow dr3 = table.NewRow();
    dr3["Name"] = "Taylor";
    dr["Size"] = " one";
    dr2["Size"] = "two";
    table.Rows.Add(dr);
    table.Rows.Add(dr2);
    table.Rows.Add(dr3);
    return table;
 //and on my constructor I set gridview.DataSource=Datatable;
}

I would recommend the following approach for better handling. 我建议采用以下方法以便更好地处理。

Create generic list, for every click append the list with the new set of data, then convert the list to DataTable as said in the below link, then bind DataTable to the grid. 创建通用列表,每次单击都会使用新的数据集附加列表,然后将列表转换为DataTable,如下面的链接所示,然后将DataTable绑定到网格。

Convert generic List/Enumerable to DataTable? 将通用List / Enumerable转换为DataTable?

If you want sample code please let me know. 如果您需要示例代码,请告诉我。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM