columns:Datagridview到Datatable

时间:2016-11-25 06:02:39

标签: c# datagridview datatables

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

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

现在首先,当表单加载时,datagridview为空。我想要做的是通过多个文本框和combomoxes向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'不属于表"

1 个答案:

答案 0 :(得分:0)

首先,您必须使用特定列创建数据表。当您的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();
}

试试这个......