如何在单击Winforms上添加新行

本文关键字:添加 新行 Winforms 单击 | 更新日期: 2023-09-27 18:34:35

我有一个正在开发的winforms应用程序,我遇到了死胡同。我正在尝试做的是在每次"单击"时,使用表单中输入的值向我的DataTable添加新行。此Datatable是我DataGridView的数据源。有人可以指出我如何实现这一目标的正确方向吗?

我看过的文章:

如何向数据表网格视图添加新行

我的代码:

private void btnAdd_Click(object sender, EventArgs e)
        {
        //inserting into order table
        DataTable dt = new DataTable();
        string articleId = cmbArticle.Text;
        string productDescription = txtDesc.Text;
        string type = txtType.Text;
        string materialType = txtMaterial.Text;
        string size = cmbSizes.Text;
        string quantity = txtQuantity.Text;
        try
        {
            dt.Columns.Add("Article");
            dt.Columns.Add("Description");
            dt.Columns.Add("Type");
            dt.Columns.Add("Material");
            dt.Columns.Add("Size");
            dt.Columns.Add("Quantity");
            dt.Columns.Add("DateTime");
            DataRow dr = dt.NewRow();
                //addrows
                dr["Article"] = articleId;
                dr["Description"] = productDescription;
                dr["type"] = type;
                dr["Material"] = materialType;
                dr["Size"] = size;
                dr["Quantity"] = quantity;
            dt.Rows.Add(dr);
            dgvView.DataSource = dt;
        }
        catch (Exception ex)
        {
        }
    }

如何在单击Winforms上添加新行

每次

单击时,您都会创建一个只有一行的新DataTable,您需要创建一次DataTable,然后继续在单击中添加行。在类级别定义DataTable,然后在事件中只需向其添加新行即可。

DataTable dt = new DataTable(); //at class level
private void Form1_Load(object sender, EventArgs e)
{
    CreateDataTableColumns();
    //.... your code
}

然后有一个创建表结构的方法,从From_Load事件调用该方法一次

private void CreateDataTableColumns()
{
    dt.Columns.Add("Article");
    dt.Columns.Add("Description");
    dt.Columns.Add("Type");
    dt.Columns.Add("Material");
    dt.Columns.Add("Size");
    dt.Columns.Add("Quantity");
    dt.Columns.Add("DateTime");
}

稍后Add事件中向班级级别DataTable添加行。

private void btnAdd_Click(object sender, EventArgs e)
{
    string articleId = cmbArticle.Text;
    string productDescription = txtDesc.Text;
    string type = txtType.Text;
    string materialType = txtMaterial.Text;
    string size = cmbSizes.Text;
    string quantity = txtQuantity.Text;
    try
    {
        DataRow dr = dt.NewRow();
        //addrows
        dr["Article"] = articleId;
        dr["Description"] = productDescription;
        dr["type"] = type;
        dr["Material"] = materialType;
        dr["Size"] = size;
        dr["Quantity"] = quantity;
        dt.Rows.Add(dr);
        dgvView.DataSource = dt;
    }
    catch (Exception ex)
    {
    }
}

(我相信您正在对 catch 块中的异常对象执行某些操作,例如日志记录、向用户显示消息等(