2010-03-16 81 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");