【问题标题】:A column named [column name] already belongs to this DataTable when form is reloaded重新加载表单时,名为 [column name] 的列已属于此 DataTable
【发布时间】: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


【解决方案1】:

这样的事

DataTable dt = new DataTable();

public newquoteForm()
{
    InitializeComponent();
    loadTable();
}

public void newquoteForm_Load(object sender, EventArgs e)
{
    getCompanyInfo();
    clearTable();
}

private void clearTable()
{
   DataRow dr;
   dt.Clear();
   dr = dt.NewRow();
   dataGridView1.DataSource = dt;
}

private void loadTable()
{
   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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多