Member 7763261 Ответов: 2

Как преобразовать числа в строки при фильтрации datagridview


Привет, я получаю это ошибка, когда я ищу с номером сотрудника вместо чего-то другого, то есть имя или адрес электронной почты отсутствует операнд после оператора 'Employee_ID'? Пожалуйста, помогите в предоставлении руководства для правильного пути фильтрации gridview

private void txtSearch_KeyUp(object sender, KeyEventArgs e)
       {
           string outputInfo = "";
           string[] keyWords = txtSearch.Text.Split(' ');


           try {

               foreach (string word in keyWords)
               {
                   if (outputInfo.Length == 0)
                   {

                       /*Convert Employee number to string if search text is numbers*/
                      outputInfo = "(Firstname LIKE '%" + word + "%' OR LastName LIKE '%" +
                           word + "%' OR Emailaddress LIKE '%" + word + "%' OR GID LIKE '%" + word + "%' OR '" + string.Format("'Employee_ID LIKE '%" + word + "%')");


                   }
                   else
                   {
                       /*Convert Employee number to string if search text is numbers*/
                       outputInfo = "(Firstname LIKE '%" + word + "%' OR LastName LIKE '%" +
                           word + "%' OR Emailaddress LIKE '%" + word + "%' OR GID LIKE '%" + word + "%' OR '" + string.Format("'Employee_ID LIKE '%" + word.ToString() + "%')");


                   }
               }

               //Applies the filter to the DataView
               myView.RowFilter = outputInfo.ToString();

           }catch(Exception ex){
               MessageBox.Show("Result " + ex.Message.ToString() + " Not Found");
           }


       }


Что я уже пробовал:

Я попытался преобразовать Employee_ID в строку не уверен что делаю это правильно
outputInfo = "(Firstname LIKE '%" + word + "%' OR LastName LIKE '%" +
                            word + "%' OR Emailaddress LIKE '%" + word + "%' OR GID LIKE '%" + word + "%' OR '" + string.Format("'Employee_ID LIKE '%" + word + "%')");

2 Ответов

Рейтинг:
6

Member 7763261

/*Convert Employee_ID column to string before using like */
outputInfo = "(Firstname LIKE '%" + word + "%' OR LastName LIKE '%" + word + "%' OR Emailaddress LIKE '%" + word + "%' OR GID LIKE '%" + word + "%' OR "+ string.Format("CONVERT(Employee_ID,'System.String')")+" LIKE '%" + word + "%')";


Это прекрасно работает. Я надеюсь, что кто-то найдет это полезным. Заранее всем спасибо за помощь


Рейтинг:
20

Graeme_Grant

OR '" + string.Format("'Employee_ID 

Похоже на дополнительные одинарные кавычки после OR а раньше Employee_ID .


Member 7763261

@Graeme_Grant

Спасибо за ваш ответ. Я удалил лишние кавычки, теперь я получаю эту ошибку "не могу выполнить подобную операцию на system. double и system.string". Столбец Employee_ID, который я хотел бы преобразовать в строку, находится в виде чисел из листа excel в виде базы данных. правильно ли я обращаюсь? Спасибо за дальнейшую помощь.

Graeme_Grant

Да, LIKE это строковая операция. Двойные значения вам нужно сравнить:=,!=, <, <=, >=, >.

[no name]

да, я думаю, что эта проблема связана со строкой запроса

Member 7763261

@Arvind Zamakia и @Graeme_Grant очень благодарны Вам за вашу помощь. Мне удалось исправить мою строку запроса. На самом деле проблема была в моей базе данных, так как я использую excel. Все, что я сделал, это изменил Employee_ID на text. Сейчас все работает нормально. Большое спасибо за помощь.