c# вход за търсене за datagrid

Искам да използвам моя textBox за търсене на моя datagridViewn. Направих това точно сега, но само с „Името“ в базата данни. Имам нужда от същото текстово поле, за да търся „име“ или „DataCad“ (datacad е тип DateTime) или „град“. Имам всички тези полета на масата си.

ако потребителят напише "John", всички потребители с това име се показват в мрежата. (вече работа с името). Ако потребителят въведе "12/08/2017", той показва всички данни с този ден. И същото с "град".

Това възможно ли е? Ето моя код, който работи с име:

if (!string.IsNullOrEmpty(txtSearch.Text))
            {
                pacientesBindingSource.Filter = string.Format("Nome LIKE '*{0}*'", txtSearch.Text);

            }

person Brugo    schedule 17.08.2017    source източник
comment
Не съм запознат с този подход, но изглежда, че промяната на Nome LIKE '*{0}*' на Nome LIKE '*{0}*' OR City LIKE '*{0}*' трябва да работи. DateTime е малко по-трудно, защото сравнявате низ с DateTime - отговорът ще зависи от това дали всичките ви DateTime имат време 00:00:00.000 и т.н., но опитайте да свържете заедно всичките си полета с OR   -  person Dave Smash    schedule 17.08.2017
comment
Не мога да затворя този прозорец на браузъра, без да ви предупредя за малко нещо, наречено SQL инжектиране. Моля, проверете тази връзка, преди да продължите с вашия код: https://stackoverflow.com/questions/35163361/how-can-i-add-user-supplied-input-to-an-sql-statement   -  person andiblas    schedule 17.08.2017
comment
тнк ти приятел. Ще разгледам това,   -  person Brugo    schedule 17.08.2017
comment
string.Format(Име КАТО '{0}' ИЛИ ​​DataCad = '{1}' ИЛИ ​​Град КАТО '{2}', txtSearch .Текст, txtSearch.Text, txtSearch.Text); мисля че това е? можете да го опитате   -  person Muj    schedule 19.08.2017


Отговори (1)


Не съм сигурен как работи останалата част от кода ви, но изглежда, че свойството Filter е клауза where. Вярвам, че можете просто да добавите ИЛИ за полето DataCad така:

string.Format("Nome LIKE '*{0}*' OR Cast(DataCad as date) = Cast('{0}' as date) OR City LIKE '*{0}*'", txtSearch.Text);

person Peter    schedule 17.08.2017
comment
Надмина ме, но не мисля, че можете да използвате оператора LIKE с DateTime (поне в света на SQL Server...) - person Dave Smash; 17.08.2017
comment
Ах, пропуснах частта, където DataCad е поле за дата. Ще коригирам отговора, но не ми харесва :) - person Peter; 17.08.2017
comment
да Получих грешка, че „КАТО“ не може да се използва с dateTime. - person Brugo; 17.08.2017
comment
Звездиците ли са? Опитайте да ги премахнете от Cast call:string.Format(Nome LIKE '{0}' OR Cast(DataCad as date) = Cast('{0}' as date) OR City LIKE '{0}', txtSearch.Text); - person Peter; 17.08.2017
comment
Същата грешка без звездички. undefined Cast() на израз. - person Brugo; 17.08.2017
comment
Каква база данни използвате? * ме кара да мисля за MS Access? - person Peter; 18.08.2017
comment
Локалната база данни на визуално студио. Нарича се базирана на услуги база данни. това е локален .mdf файл. - person Brugo; 18.08.2017
comment
string.Format("Nome LIKE '*{0}*' OR DataCad = '*{0}*' OR City LIKE '*{0}*'", txtSearch.Text); мисля, че това е? можете да го опитате - person Muj; 18.08.2017