[英]c# Binding on specific row in table
使用c#.net 2.0,我想将文本框绑定到表的特定行。 在示例中:
Table Person
ID NAME PRENOM SPECIAL_CATEGORY
1 BOB BOB mex
2 AL AL tot
3 PO PO pap
我想将文本框绑定到该行包含special_categeory ='tot'的字段名称上。 可能吗? 或者我需要为此行创建一个数据行并将其绑定。
假设您正在谈论Winforms,并且您已经将数据源作为表单上的组件,这非常简单。
将一个新的BindingSource
拖到您的窗体上,并将其数据源设置为您现有的数据源。 然后,您可以在设计Filter
的新BindingSource
的Filter
属性中指定过滤表达式。 将您的TextBox
绑定到新的BindingSource
,就一切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" );
我实际上有一个可滚动浏览所有控件的框架,如果它们与给定表中的列名匹配,它们将像上面那样立即绑定自己。
然后,当您滚动网格时,它也应该刷新表单中的各个文本控件。
如果需要完成某些绑定,则可以遵循以下模式:
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,这是您可以执行的操作:
myTable.DefaultView.RowFilter = "SPECIAL_CATEGORY = 'tot'";
this.textBox1.DataBindings.Add("Text",myTable.DefaultView,"Name");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.