【发布时间】:2014-06-14 06:37:50
【问题描述】:
我有一个数据网格视图(设计用于用户输入,然后将其制成数据库中的数据表)。当我加载表单时,一切都按我想要的方式加载。但是,如果我退出表单并重新加载它,我会收到以下错误消息:
A column named 'line' already belongs to this DataTable
'Line' 是我声明的第一个列名;
DataTable dt = new DataTable();
#region loadtable
public void newquoteForm_Load(object sender, EventArgs e)
{
getCompanyInfo();
loadTable();
}
private void loadTable()
{
dt.Clear();
DataRow dr;
dt.Columns.Add("Line");
dt.Columns.Add("Item Name");
dt.Columns.Add("Item Description");
dt.Columns.Add("Retail Price");
dt.Columns.Add("Supplier Number");
dt.Columns.Add("Quantity Required");
dt.Columns.Add("In Stock");
dt.Columns.Add("Cost Price");
dt.Columns.Add("Total Cost");
dt.Columns.Add("Total Retail");
dt.Columns["Line"].AutoIncrement = true;
dt.Columns["Line"].AutoIncrementSeed = -1;
dt.Columns["Line"].AutoIncrementStep = 1;
dt.Columns["Line"].ReadOnly = true;
dt.Columns["Item Name"].ReadOnly = true;
dt.Columns["Item Description"].ReadOnly = true;
dt.Columns["Cost Price"].ReadOnly = true;
dt.Columns["In Stock"].ReadOnly = true;
dt.Columns["Retail Price"].ReadOnly = true;
dt.Columns["Supplier Number"].ReadOnly = true;
dr = dt.NewRow();
dataGridView1.DataSource = dt;
}
如何防止这种情况发生?
【问题讨论】:
-
您可以将
loadTable方法调用移至表单ctor。 -
当表单重新加载时,没有人再次创建它。因此,您的
dt已经有列。我建议从Form.Load处理程序中删除loadTable调用并将其添加到表单构造函数中,该构造函数称为ones。 -
当然,如果你想清空一个表,你还是要在
Load处理程序中这样做 -
事情就这么简单,你能把它作为答案发布,这样我就可以完成问题了吗?
标签: c# datagridview datatable