c # Привязка к определенной строке в таблице - PullRequest
1 голос
/ 20 августа 2009

Используя 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'. Является ли это возможным? или мне нужно создать Datarow для этой строки и связать ее.

Ответы [ 4 ]

0 голосов
/ 20 августа 2009

Я предполагаю, что это Winforms, и вот как вы можете это сделать:

myTable.DefaultView.RowFilter = "SPECIAL_CATEGORY = 'tot'";
this.textBox1.DataBindings.Add("Text",myTable.DefaultView,"Name");
0 голосов
/ 20 августа 2009

Если вы говорите о Winforms и у вас уже есть источник данных как компонент в вашей форме, это довольно просто.

Перетащите новый BindingSource на свою форму и установите его источник данных таким, каким является существующий источник данных. Затем вы можете указать фильтрующее выражение в новом свойстве BindingSource Filter в конструкторе. Свяжите свой TextBox с новым BindingSource, и все готово.

Выполнение этого вручную (без дизайнера) лишь немного сложнее.

BindingSource newSource = new BindingSource();

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

textBox.DataBindings.Add("Text", newSource, "DataMember");
0 голосов
/ 20 августа 2009

Вы должны быть в состоянии связать через ...

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

На самом деле у меня есть структура, которая прокручивает все элементы управления, и если они соответствуют имени столбца в данной таблице, они немедленно связываются, как указано выше.

Затем, когда вы прокручиваете сетку, она также должна обновить отдельные элементы управления текстом в вашей форме.

0 голосов
/ 20 августа 2009

Если есть какая-то привязка, которую необходимо выполнить, вы можете следовать этому шаблону:

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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...