2015-08-27 3 views
2

Я получил этот код, который работает отлично:SQL базы данных: поиск более одного столбца

DataView dv = new DataView(bazaDataSet.tbl_baza); 

if (listBox1.SelectedIndex == 0)  
{ 
    dv.RowFilter = string.Format("Name LIKE '%{0}%'", txtSearchData.Text); 
    dataGridView1.DataSource = dv; 
} 

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

+1

'COLUMN1 как '% в%' или COLUMN2, как '% в%' ... '? –

+0

Спасибо, Иван, отлично работает! –

ответ

0

Вы можете создать строки, которые могут быть использованы в RowFilter, что-то вроде

dv.RowFilter = string.Format("Name LIKE '%{0}%' AND City LIKE '%{1}%'", txtSearchData.Text, txtSearchDataCity.Text) 

Вам придется перебирать поисковые термины, что ваш пользователь выбирает, хотя так и в случае listBox вы могли бы сделать что-то вроде этого построения строки, как вы идете

StringBuilder rowFilter = new StringBuilder(); 

foreach (var item in listBox1.SelectedItems) 
{ 
    if(rowFilter.Length > 0) 
    { 
     rowFilter.Append(" or "); 
     rowFilter.Append("Name LIKE '%" + item.ToString() "%'"); 
    } 
} 

Тогда для RowFilter

dv.RowFilter = rowFilter; 

Эта ссылка может помочь, а также - DataView RowFilter Syntax

+0

Спасибо за подробное описание, ваша и рекомендация Ивана отлично работали! –

+0

Как ответ работал отлично, не могли бы вы принять его как ответ, пожалуйста? –

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