2009-08-20 17 views
1

使用c#.net 2.0,我想将文本框绑定到我的表的特定行。在示例:c#绑定表中的特定行

Table Person 
ID NAME PRENOM SPECIAL_CATEGORY 
    1 BOB BOB mex 
    2 AL AL  tot 
    3 PO PO  pap 

我想我的文本框绑定的字段名,其中行包含special_categeory =“TOT”。 这可能吗?或者我需要为这一行创建一个Datarow并绑定它。

+0

的WinForms,ASP.NET,WPF,? – 2009-08-20 17:09:54

回答

-1

如果有一些绑定,需要做的,你可以按照这个模式:

DataView dv = new DataView(MyTable); 
dv.RowFilter = "SPECIAL_CATEGORY = 'tot'"; 
GridView1.DataSource = dv; 
GridView1.DataBind(); 

但我不认为你绑定到一个TextBox?您可以设置Text属性,如:

foreach(DataRow dr in MyTable.Rows) 
{ 
    if (dr["SPECIAL_CATEGORY"] != DBNull.Value && 
      dr["SPECIAL_CATEGORY"].ToString() == "tot") 
    { 
     myTextBox.Text = dr["NAME"].ToString() 
     break; 
    } 
} 
0

假设你在谈论的WinForms,你有你的数据源为表单上的组件已经,这是相当简单的。

将一个新的BindingSource拖放到您的表单上,并将其数据源设置为无论您现有的数据源是什么。然后,您可以在设计器的新BindingSourceFilter属性中指定过滤表达式。把你的TextBox绑定到你的新BindingSource,你就全都准备好了。

手动操作(没有设计者)只是稍微复杂一些。

BindingSource newSource = new BindingSource(); 

newSource.DataSource = yourExistingDataSource; 
newSource.Filter = "special_categeory = 'tot'"; 

textBox.DataBindings.Add("Text", newSource, "DataMember"); 
0

您应该能够通过绑定...

myNameTextBox.DataBindings.Add("Text", MyTable, "NAME"); 
myPrenomTextBox.DataBindings.Add("Text", MyTable, "PRENOM"); 
mySpecial_CategoryTextBox.DataBindings.Add("Text", MyTable, "SPECIAL_CATEGORY"); 

其实我有一个框架,通过所有的控制滚动,如果他们在一个给定的匹配表列名,他们立即绑定他们自己像上面。

然后,当您滚动网格时,它也应该刷新窗体中的单个文本控件。

+0

为什么不直接使用内置的数据绑定设计器呢?这也不会根据需要过滤结果。 – 2009-08-20 17:32:54

-1

我要去假设它的WinForms,这是你如何能做到这:

myTable.DefaultView.RowFilter = "SPECIAL_CATEGORY = 'tot'"; 
this.textBox1.DataBindings.Add("Text",myTable.DefaultView,"Name"); 
+0

-1。这个源被用于一个网格(你假设它是一个DataTable或DataView),你现在正在过滤网格的内容来获得TextBox。应该使用指向相同数据的新源,而不是修改现有源。 – 2009-08-20 17:33:42

+0

您如何知道电网正在用于电网? OP从未指定表被绑定到其他任何东西...... – BFree 2009-08-20 17:36:24

+0

好点。尽管如此,您不应该修改DefaultView上的属性。没有理由这样做。如果您想坚持使用传统的ADO.NET数据对象,请在该表上创建一个新的DataView并对其进行过滤。 – 2009-08-20 18:19:01