我想将文本框绑定到单个DataRow对象(传递给对话框表单进行编辑)。这是我的代码:
DataRow row = myDataTable.NewRow();
EditForm form = new EditForm(row);
//in EditForm constructor
nameTextBox.DataBindings.Add("Text", row, "name");
我发现错误:无法绑定到DataSource中的属性或列。你知道我错过了什么或者可能有任何变通方法吗?
[补充]
我的DataTable肯定包含DataName = ColumnName =“name”的DataColumn。这是我创建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 :(得分:2)
试试这个:
DataView dv = myDataTable.DefaultView;
dv.RowFilter = "id=1";
nameTextBox.DataBindings.Add("Text",dv,"NAME");
答案 1 :(得分:0)
我试图重现这个(使用VS 2008 SP1),如果行在名称列中有空数据,我会得到一个InvalidCastException,但程序会继续并且有效。
为了获得与您相同的异常,我必须在绑定时在列名中犯一个错误。所以我觉得有必要重复@Henk的问题,或者要求你展示如何创建DataTable。
答案 2 :(得分:0)
创建DataBinding时会出现重载,如果源对象是DBNull,则会引入要使用的对象。你可能想尝试一下。