2009-01-08 36 views
0

假設我有一個這樣的數據表:數據綁定到programmaticly創建數據表

 DataTable dt = new DataTable("Woot"); 

     dt.Columns.AddRange(new DataColumn[]{ 
      new DataColumn("ID",typeof(System.Guid)), 
      new DataColumn("Name",typeof(String)) 
      }); 

當我嘗試控件綁定到它:

 this.txtName.DataBindings.Add("Text", _dtRow, "Name"); 

我得到這個異常:

無法綁定到數據源上的屬性或列 名稱。參數 名稱:數據成員

知道爲什麼這可以工作在一個DataAdapter創建數據表,但不能在programmaticly創建一個?

回答

1

不應該引用dt而不是_dtRow?

例如:

this.txtName.DataBindings.Add("Text", dt, "Name"); 

編輯:

此代碼爲我工作:

DataTable dt = new DataTable("Woot"); 

    dt.Columns.AddRange(new DataColumn[]{ 
     new DataColumn("ID",typeof(System.Guid)), 
     new DataColumn("Name",typeof(String)) 
    }); 

    DataRow r = dt.NewRow(); 
    r["ID"] = new Guid(); 
    r["Name"] = "AAA"; 
    dt.Rows.Add(r); 

    r = dt.NewRow(); 
    r["ID"] = new Guid(); 
    r["Name"] = "BBB"; 
    dt.Rows.Add(r); 

    dataGridView1.DataSource = dt; 

    this.txtName.DataBindings.Add("Text", r.Table , "Name"); 
+0

不,我綁定到在數據網格中選擇的單個行,而不是整個表。 – FlySwat 2009-01-08 19:14:38

+0

爲什麼不綁定到數據表呢?這樣,如果您在表格中選擇不同的行,text屬性將相應地改變。我猜這就是數據綁定的全部目的...... – 2009-01-08 19:21:41

3

OK,你的代碼搞亂了一段時間後,我一直得到難倒。然後我終於意識到了這個問題。我假設_dtRow是一個DataRow。您需要參考實際的DataTable(dt)。

this.textBox1.DataBindings.Add("Text", dt, "Name"); 

編輯:看到你對伊戈爾的職位的評論後。如果綁定到dt,那麼比如說你有一個datagridview綁定到這個DataTable,每次你選擇一個不同的行時,文本框都會改變。

下面是對我的作品的代碼:在DGV

  DataTable dt = new DataTable("Woot"); 

      dt.Columns.AddRange(new DataColumn[]{ 
      new DataColumn("ID",typeof(System.Guid)), 
      new DataColumn("Name",typeof(String)) 
      }); 


      dt.Rows.Add(Guid.NewGuid(), "John"); 
      dt.Rows.Add(Guid.NewGuid(), "Jack"); 

      this.dataGridView1.DataSource = dt; 

      this.textBox1.DataBindings.Add("Text", dt, "Name"); 

更改行,你會看到文本框的變化文本。

EIDT再次好的,有時間來破解它。這是我如何得到它的工作:

this.textBox1.DataBindings.Add("Text",_dtRow.ItemArray[1], ""); 

我用索引1,但你可以使用任何索引,你需要在數組中。