【问题标题】:columns: Datagridview to Datatable列:Datagridview 到 Datatable
【发布时间】:2016-11-25 06:02:38
【问题描述】:

我正面临这个问题,我有 datagridview 和一个数据表。

        VPfn_CreateDataGrid();//This fuction creates gridview columns
        DataTable invoice_table = (DataTable)invoice_data.DataSource;

现在第一件事,当表单加载时,datagridview 是空的。我想要做的是通过多个文本框和组合向 datagridview 添加数据,为此我正在使用数据表。

        private void btn_add_Click(object sender, EventArgs e)
    {
        DataRow x = invoice_table.NewRow();
        x["serial_number"] = tsr.Text.ToString();
        x["item"] = combo_items.SelectedItem.ToString();
        x["item_rate"] = tr.Text;
        x["item_qty"] = tq.Text;
        x["item_unit"] = combo_unit.SelectedItem.ToString();
        x["item_vat"] = combo_vat.SelectedItem.ToString();
        x["amount"] = ta.Text;

        invoice_table.Rows.Add(x);
        invoice_data.Refresh();

    }

错误是“列'serial_number'不属于表”

【问题讨论】:

  • 从错误看来,列绑定值有问题。使用正确的绑定值

标签: c# datagridview datatables


【解决方案1】:

首先您必须创建一个包含特定列的数据表。当您的 datagridview 为空时,DataTable 也将为空。

DataTable invoice_table = (DataTable)invoice_data.DataSource;

在这前面.. 在加载表单时,您可以使用列创建数据表。

DataTable invoice_table; //Global
private void load()
{
   invoice_table = new DataTable();
   invoice_table.Columns.Add("serial_number", typeof(int));
   invoice_table.Columns.Add("item");
   .....
}

之后

private void btn_add_Click(object sender, EventArgs e)
{
    DataRow x = invoice_table.NewRow();
    x["serial_number"] = tsr.Text.ToString();
    x["item"] = combo_items.SelectedItem.ToString();
    x["item_rate"] = tr.Text;
    x["item_qty"] = tq.Text;
    x["item_unit"] = combo_unit.SelectedItem.ToString();
    x["item_vat"] = combo_vat.SelectedItem.ToString();
    x["amount"] = ta.Text;

    invoice_table.Rows.Add(x);
    invoice_data.Refresh();
}

试试这个...

【讨论】:

  • 实际上我在datagridview中自己创建列的功能不能在数据表中自动创建?private void VPfn_CreateDataGrid() { invoice_data.ColumnCount = 7; invoice_data.Columns[0].Name = "Sr."; invoice_data.Columns[0].HeaderText = "Sr."; invoice_data.Columns[0].DataPropertyName = "serial_number"; invoice_data.Columns[0].Width = 30; invoice_data.Columns[0].ReadOnly = true;
  • 你能把你的源代码发过来吗?因为你的评论不清楚,理解。请尝试在命令或提问之前按照说明进行操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
  • 2020-03-13
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 2011-02-13
  • 1970-01-01
相关资源
最近更新 更多