繁体   English   中英

C#绑定表中的特定行

[英]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的新BindingSourceFilter属性中指定过滤表达式。 将您的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM