【问题标题】:Binding DataRow to TextBox将 DataRow 绑定到 TextBox
【发布时间】:2011-01-28 08:38:41
【问题描述】:

我想将文本框绑定到单个 DataRow 对象(传递给对话框进行编辑)。这是我的代码:

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

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

我得到一个错误:无法绑定到数据源中的属性或列。你知道我错过了什么或任何解决方法吗?

[已添加]

我的 DataTable 肯定包含 ColumnName="name" 的 DataColumn。这是我创建数据表的代码

    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;
            }
        }
    }

【问题讨论】:

  • “行”是否有“名称”列?
  • 你试过用数据表绑定吗?
  • 当您想使用 DataRow 时,创建 DataBinding 似乎存在问题。我正在经历同样的事情。我创建了一个 NewRow() 并希望使用它将文本框直接绑定到行的列。然后,当单击“保存”时,我将 DataRow 添加到 DataTable...MS 显然不希望我们这样做。

标签: c# data-binding


【解决方案1】:

试试这个:

DataView dv = myDataTable.DefaultView;

dv.RowFilter = "id=1";

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

【讨论】:

    【解决方案2】:

    创建一个 DataBinding 有一个重载,它接收一个要使用的对象,以防源对象是 DBNull。您可能想尝试一下。

    【讨论】:

      【解决方案3】:

      我试图重现这一点(使用 VS 2008 SP1),如果该行在 name 列中有空数据,我会收到 InvalidCastException,但程序会继续运行。

      为了得到和你一样的异常,我在绑定的时候不得不把列名弄错了。所以我不得不重复@Henk 的问题,或者要求您展示如何创建 DataTable。

      【讨论】:

      • 我知道 InvalidCastException。为了避免它,我使用: Binding b = nameTextBox.DataBindings.Add("Text", row, "name"); b.NullValue = "";
      猜你喜欢
      • 1970-01-01
      • 2011-12-10
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      • 2011-02-08
      • 2014-06-03
      • 2019-12-05
      • 1970-01-01
      相关资源
      最近更新 更多