2010-03-16 6 views
5

Je souhaite lier la zone de texte à un seul objet DataRow (transmis au formulaire de dialogue pour modification). Voici mon code:Liaison DataRow à TextBox

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

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

et je suis gettinh une erreur: Impossible de se lier à la propriété ou de la colonne DataSource. Savez-vous ce que je manque ou des solutions de contournement peut-être?

[Ajouté]

Mon DataTable sûr contient DataColumn avec ColumnName = "nom". Voici mon code pour créer 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

de la ligne »a une colonne 'nom'? –

+0

oui, c'est sûr. –

+0

avez-vous essayé à la place de liaison avec datatable? –

Répondre

0

J'ai essayé de reproduire ce (avec VS 2008 SP1), et je reçois un InvalidCastException si la ligne a des données nulles dans la colonne de nom, mais le programme se poursuit et les travaux.

Afin d'obtenir la même exception que vous, je dois faire une erreur dans le nom de la colonne lors de la liaison. Je me sens donc obligé de répéter la question de @ Henk, ou de vous demander de montrer comment vous créez le DataTable.

+0

Je connais InvalidCastException. Pour l'éviter je pars avec: Liaison b = nameTextBox.DataBindings.Add ("Text", row, "name"); b.NullValue = ""; –

0

Il existe une surcharge pour créer un DataBinding qui prend en compte un objet à utiliser dans le cas où l'objet source est DBNull. Vous pourriez vouloir essayer cela.

2

Essayez ceci:

DataView dv = myDataTable.DefaultView; 

dv.RowFilter = "id=1"; 

nameTextBox.DataBindings.Add("Text",dv,"NAME"); 
Questions connexes