2016-11-25 19 views
-1

Ich bin mit diesem Problem konfrontiert, ich habe Datagridview und eine Datentabelle.Spalten: Datagridview zu Datatable

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

jetzt erste, was, ist Datagridview leer, wenn das Formular geladen wird. Was ich versuche, ist das Hinzufügen von Daten zu Datagridview über mehrere Textfelder und Combomoxen und dafür verwende ich 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(); 

    } 

und der Fehler „Spalte‚serial_number‘nicht zu Tabelle gehört“

+0

aus dem Fehler es Spalte Bindungswert scheint hat das Problem. Verwenden Sie den richtigen Binding-Wert –

Antwort

0

zuerst müssen Sie eine mit der bestimmten Spalte der Datentabelle erstellen. Während Ihre DataGrid-Ansicht leer ist, ist die DataTable ebenfalls leer.

DataTable invoice_table = (DataTable)invoice_data.DataSource; 

Infront diese .. , während die Form Laden können Sie mit den Spalten Datentabelle erstellen.

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

nach diesem

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

Try this ...

+0

Eigentlich ich die Funktion selbst erstellt Spalten in Datagridview kann nicht automatisch in Datentabelle erstellt werden? 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

können Sie Ihren Quellcode senden. coz dein Kommentar ist nicht klar, zu verstehen. Bitte versuchen Sie der Anweisung vor dem Befehl zu folgen oder Fragen zu stellen. – user6730095

Verwandte Themen