2009-08-20 6 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 = «» полн. Возможно ли это? или мне нужно создать Datarow для этой строки и привязать ее.

+0

WinForms, ASP.NET, WPF,? –

ответ

-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

Почему бы просто не использовать встроенный конструктор привязки данных для этого? Это также не фильтрует результаты по мере необходимости. –

-1

Я буду считать это Winforms и это, как вы можете это сделать:

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

-1. Этот источник используется для сетки (вы предполагаете, что это DataTable или DataView), и теперь вы фильтруете содержимое сетки только для получения TextBox. Следует использовать новый источник, указывающий на одни и те же данные, а не на изменение существующего источника. –

+0

Как вы знаете, что источник используется для сетки? OP никогда не указывал, что таблица привязана ко всему остальному ... – BFree

+0

Хорошая точка. Тем не менее, вы не должны изменять свойства в DefaultView. Нет причин для этого. Если вы хотите придерживаться классических объектов данных ADO.NET, создайте новый DataView в этой таблице и отфильтруйте это. –

Смежные вопросы