2010-03-16 19 views
5

Ich möchte Textbox an einzelnes DataRow-Objekt binden (an Dialogformular zur Bearbeitung übergeben). Hier ist mein Code:DataRow an TextBox binden

DataRow row = myDataTable.NewRow(); 
EditForm form = new EditForm(row); 

//in EditForm constructor 
nameTextBox.DataBindings.Add("Text", row, "name"); 

und ich bin gettinh einen Fehler: nicht auf Eigentum oder Spalte in der Datasource binden kann. Weißt du, was ich vermisse oder irgendwelche Workarounds?

[Added]

My Datatable sicher enthält Datacolumn mit Spaltenname = "name". Hier ist mein Code für die Erstellung von Datatable

public DataTable SelectReturnDataTable(string tableName, string sql, params SQLiteParameter[] parameters) 
    { 
     using (SQLiteConnection conn = new SQLiteConnection(_connectionString)) 
     { 
      using (SQLiteCommand cmd = new SQLiteCommand(conn)) 
      { 
       cmd.CommandText = sql; 
       foreach (SQLiteParameter p in parameters) 
        cmd.Parameters.Add(p); 

       SQLiteDataAdapter da = new SQLiteDataAdapter(cmd); 
       DataTable dt = new DataTable(tableName);           

       conn.Open();      
       da.Fill(dt); 

       return dt; 
      } 
     } 
    } 
+0

Does 'row' haben eine Spalte 'Name'? –

+0

ja, hat es sicher. –

+0

haben Sie versucht, stattdessen mit Datatable zu binden? –

Antwort

0

Ich habe versucht, diesen (mit VS 2008 SP1) zu reproduzieren, und ich erhalte eine InvalidCastException, wenn die Zeile Null-Daten in dem Spalte Namen, aber das Programm fortgesetzt und arbeitet.

Um die gleiche Ausnahme wie Sie zu erhalten, muss ich einen Fehler in der Spalte Name beim Binden machen. Daher fühle ich mich gezwungen, @ Henks Frage zu wiederholen oder zu fragen, ob Sie zeigen, wie Sie die DataTable erstellen.

+0

Ich bin über InvalidCastException informiert. Um es zu vermeiden gehe ich mit: Binding b = nameTextBox.DataBindings.Add ("Text", Zeile, "Name"); b.NullValue = ""; –

0

Es gibt eine Überladung zum Erstellen einer DataBinding, die ein Objekt für den Fall verwendet, dass das Quellobjekt DBNull ist. Vielleicht möchten Sie das ausprobieren.

2

Versuchen Sie folgendes:

DataView dv = myDataTable.DefaultView; 

dv.RowFilter = "id=1"; 

nameTextBox.DataBindings.Add("Text",dv,"NAME"); 
Verwandte Themen