2016-11-25 4 views
-1

Я столкнулся с этой проблемой, у меня есть datagridview и datatable.столбцы: Datagridview to Datatable

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

В настоящее время первое, datagridview пуст, когда форма загружается. То, что я пытаюсь сделать, это добавить данные в datagridview через несколько текстовых полей и combomox, и для этого я использую datatable.

 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“не принадлежит таблице»

+0

с ошибкой, то кажется, столбец привязки значение имеет вопрос. используйте правильное значение привязки –

ответ

0

сначала вы должны создать таблицу данных с определенного столбца. в то время как ваш datagridview пуст, DataTable также будет пустым.

DataTable invoice_table = (DataTable)invoice_data.DataSource; 

Infront этого .. при загрузке вашей формы вы можете создать DataTable с колоннами.

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(); 
} 

Попробуйте это ...

+0

На самом деле, функция, которую он сам создает столбцы в datagridview, может автоматически создаваться в datatable? 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; –

+0

вы можете отправить исходный код. Потому что ваш комментарий не ясен, чтобы понять. попробуйте следовать инструкциям перед командой или задавать вопросы. – user6730095

Смежные вопросы