如何在单击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)
{
}
}
每次
单击时,您都会创建一个只有一行的新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 块中的异常对象执行某些操作,例如日志记录、向用户显示消息等(