2013-06-27 5 views
2

это то, что я пытаюсь ...:фильтр datagirdview на входе два текстовых поля

DataView dv = new DataView(table); 
dv.RowFilter = String.Format("model like '%{0}%'", textBox2.Text); 
if (!String.IsNullOrEmpty(textBox1.Text)) 
{ 
    dv.RowFilter = String.Format("vendor like '%{0}%'", textBox1.Text); 
} 

purchase_mobile_DG.DataSource = dv; 

где таблица в DataTable, которые имеют все данные из базы данных .... У меня есть два текстовых окна так что я хочу сделать, так это то, что когда я ввожу первое текстовое поле, оно фильтрует datagridview, а после этого, когда я пишу во втором текстовом поле, оно фильтрует данные из отфильтрованного документа datagridview первого текстового поля.

+0

Итак, где проблема? –

+0

@ Усман, когда я набираю что-то в первом текстовом поле, он фильтрует данные ... но после этого, когда я набираю что-то во втором текстовом поле, он начинается с начала ... я хочу, чтобы он отфильтровывал данные, уже отфильтрованные из первого ввода текстового поля – user2137186

+0

@ user2137186 ​​вы должны использовать предыдущий фильтр с новым как 'dv.RowFilter = dv.RowFilter + ** (с оператором AND). Ваш необходимый фильтр **;' – Usman

ответ

2

вы должны использовать мой отредактированный код как

DataView dv = new DataView(table); 
if (!String.IsNullOrEmpty(textBox1.Text)) 
{ 
    dv.RowFilter = String.Format("vendor like '%{0}%'", textBox1.Text); 
} 

dv.RowFilter = dv.RowFilter == "" ? String.Format("model like '%{0}%'", textBox2.Text) : dv.RowFilter + String.Format("AND model like '%{0}%'", textBox2.Text); 

purchase_mobile_DG.DataSource = dv; 
+0

Значение второго текстового поля не фильтрует никакую вещь – user2137186

+0

Я хочу, чтобы при написании nokia в поставщике он должен был отображать все мобильные телефоны nokia в виде сетки данных и когда я пишу модель, например, 3310 или e71 или lumia 920 он должен отфильтровать эту записку, отфильтрованную от Nokia, и показать мне только одну запись, которая является nokia lumia 920 – user2137186

+1

@ user2137186 ​​'textbox1' - это текстовое поле' vendor', а другое - 'model' ?? OK ?? и, пожалуйста, используйте соглашение при назначении имени элемента управления, это лучшая практика. – Usman

1

Попробуйте это:

var dv = new DataView(table); 

dv.RowFilter = String.IsNullOrEmpty(vendorTextBox.Text) 
      ? "" 
      : String.Format("vendor like '%{0}%' and (model like '%{1}%' or '{1}' = '')", vendorTextBox.Text, modelTextBox.Text); 

purchase_mobile_DG.DataSource = dv; 

Также, пожалуйста, назовите элементы управления "vendorTextBox" и "modelTextBox"