2010-03-16 82 views
5

我想將文本框綁定到單個DataRow對象(傳遞給對話框窗體進行編輯)。這裏是我的代碼:綁定DataRow到文本框

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

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

和我得到一個錯誤:無法綁定到屬性或DataSource中的列。你知道我錯過了什麼或者可能有什麼解決辦法嗎?

[新增]

我的DataTable中肯定包含的DataColumn用的ColumnName = 「名字」。這裏是我創建的代碼數據表

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

不 '行' 有一個 '名稱' 列? – 2010-03-16 23:02:49

+0

是的,它確實有。 – 2010-03-16 23:11:08

+0

你試過用datatable綁定嗎? – 2010-05-10 02:48:35

回答

0

我試圖重現這個(用VS 2008 SP1),我也得到一個InvalidCastException如果行在名稱列空數據,但程序繼續和作品。

爲了得到和你一樣的異常,我必須在綁定時在列名中出錯。所以我覺得不得不重複@ Henk的問題,或者要求你展示如何創建DataTable。

+0

我知道InvalidCastException。爲了避免它,我去:Binding b = nameTextBox.DataBindings.Add(「Text」,row,「name」); b.NullValue =「」; – 2010-03-17 17:57:05

0

在創建一個DataBinding時,如果源對象是DBNull,那麼需要重載一個對象。你可能想嘗試一下。

2

試試這個:

DataView dv = myDataTable.DefaultView; 

dv.RowFilter = "id=1"; 

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