将DataRow绑定到TextBox

时间:2010-03-16 22:52:40

标签: c# data-binding

我想将文本框绑定到单个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;
            }
        }
    }

3 个答案:

答案 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,则会引入要使用的对象。你可能想尝试一下。