使用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并绑定它。
使用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并绑定它。
如果有一些绑定,需要做的,你可以按照这个模式:
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;
}
}
假设你在谈论的WinForms,你有你的数据源为表单上的组件已经,这是相当简单的。
将一个新的BindingSource
拖放到您的表单上,并将其数据源设置为无论您现有的数据源是什么。然后,您可以在设计器的新BindingSource
的Filter
属性中指定过滤表达式。把你的TextBox
绑定到你的新BindingSource
,你就全都准备好了。
手动操作(没有设计者)只是稍微复杂一些。
BindingSource newSource = new BindingSource();
newSource.DataSource = yourExistingDataSource;
newSource.Filter = "special_categeory = 'tot'";
textBox.DataBindings.Add("Text", newSource, "DataMember");
您应该能够通过绑定...
myNameTextBox.DataBindings.Add("Text", MyTable, "NAME");
myPrenomTextBox.DataBindings.Add("Text", MyTable, "PRENOM");
mySpecial_CategoryTextBox.DataBindings.Add("Text", MyTable, "SPECIAL_CATEGORY");
其实我有一个框架,通过所有的控制滚动,如果他们在一个给定的匹配表列名,他们立即绑定他们自己像上面。
然后,当您滚动网格时,它也应该刷新窗体中的单个文本控件。
为什么不直接使用内置的数据绑定设计器呢?这也不会根据需要过滤结果。 – 2009-08-20 17:32:54
我要去假设它的WinForms,这是你如何能做到这:
myTable.DefaultView.RowFilter = "SPECIAL_CATEGORY = 'tot'";
this.textBox1.DataBindings.Add("Text",myTable.DefaultView,"Name");
-1。这个源被用于一个网格(你假设它是一个DataTable或DataView),你现在正在过滤网格的内容来获得TextBox。应该使用指向相同数据的新源,而不是修改现有源。 – 2009-08-20 17:33:42
您如何知道电网正在用于电网? OP从未指定表被绑定到其他任何东西...... – BFree 2009-08-20 17:36:24
好点。尽管如此,您不应该修改DefaultView上的属性。没有理由这样做。如果您想坚持使用传统的ADO.NET数据对象,请在该表上创建一个新的DataView并对其进行过滤。 – 2009-08-20 18:19:01
的WinForms,ASP.NET,WPF,? – 2009-08-20 17:09:54