none
GridView и хранимая процедура RRS feed

  • Вопрос

  • Всем привет!

    Будьте так добры, подскажите как правильно организовать поиск в списке который отображается с помощью gridview.

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

    Я написал хранимую процедуру(с помощью неё не решал такую задачу), в процедуре есть множество параметров и от них зависит отображение данных в гриде, например: пользователь выбирает в дропдауне, что нужно отобразить в списке только менеджеров и в результате в гриде отображаются только они. Вопрос у меня такой - какое дефолтное значение для параметра задать который как раз определяет каких работников(должности) отображать? Если я укажу так в процедуре: DECLARE @TypeDolgnost nvarchar(max) = null, а в WHERE напишу так ... WHERE [TypeDolgnost] =' +@TypeDolgnost' + ... то какое дефолтное значение для этого параметра должно быть, чтобы выводились и менеджеры и программисты и аналилики и т.д. если пользователь не фильтровал список ?

    13 ноября 2014 г. 11:11

Ответы

  • Немного непонятно как у вас данные расположены в таблице и как конкретно определяется кого выводить. Если у вас всегда должна быть необходимость вывести или весь список или только людей конкретно одной профессии, то в первом случае просто передавайте null во втором параметр описывающий должность которая должна быть получена.

    В своей хранимой вы можете обычным условием if проверить значение переданного параметра и выполнить необходимый запрос.


    [Блог] [Twitter]

    13 ноября 2014 г. 11:27
  • " Если пользователь ищет не только менеджеров, но и сотрудников с другими должностями, то есть всех, то как это указать в хранимой процедуре? Ведь в БД у всех сотрудников прописана должность и если задать по умолчанию значение null для DolgnostValue, то нечего в результате не найдется" - использовать дополнительные параметры. Т.е. значение должности передаётся через параметр.

    "Второй вопрос вытекает из первого - если пользователь будет искать не только по значению должности, но и например размеру заработной платы(SummZP), то как это обыграть в запросе?" - аналогично и тут.


    Сделаем содержимое сообщества лучше, вместе!

    7 декабря 2014 г. 9:01
    Модератор

Все ответы

  • Немного непонятно как у вас данные расположены в таблице и как конкретно определяется кого выводить. Если у вас всегда должна быть необходимость вывести или весь список или только людей конкретно одной профессии, то в первом случае просто передавайте null во втором параметр описывающий должность которая должна быть получена.

    В своей хранимой вы можете обычным условием if проверить значение переданного параметра и выполнить необходимый запрос.


    [Блог] [Twitter]

    13 ноября 2014 г. 11:27
  • Спасибо за ответ! То что можно null использовать мне уже подходит, а вот про if почитаю.
    13 ноября 2014 г. 12:47
  • Сказать честно так и не понятно мне как правильно реализовать в хранимой процедуре фильтрацию данных.

    Например, есть список работников который в хранимой процедуре я получаю таким запросом -

    DECLARE @DolgnostValue nvarchar(max) = 'Manager'

    ...

     SELECT  IdSotrudnik, Dolgnost, DataStart, YearDR, ManWoman, SummZP   
     FROM Sotrudniki   
     WHERE Dolgnost = ' + @DolgnostValue

    ...

    Теперь, что мне не понятно

    1. Если пользователь ищет не только менеджеров, но и сотрудников с другими должностями, то есть всех, то как это указать в хранимой процедуре? Ведь в БД у всех сотрудников прописана должность и если задать по умолчанию значение null для DolgnostValue, то нечего в результате не найдется

    2. Второй вопрос вытекает из первого - если пользователь будет искать не только по значению должности, но и например размеру заработной платы(SummZP), то как это обыграть в запросе?

    Просьба не пинать, а дать линк где есть пример либо прямо тут в посте дать пример, заранее спасибо за ответы.

    14 ноября 2014 г. 13:17
  • " Если пользователь ищет не только менеджеров, но и сотрудников с другими должностями, то есть всех, то как это указать в хранимой процедуре? Ведь в БД у всех сотрудников прописана должность и если задать по умолчанию значение null для DolgnostValue, то нечего в результате не найдется" - использовать дополнительные параметры. Т.е. значение должности передаётся через параметр.

    "Второй вопрос вытекает из первого - если пользователь будет искать не только по значению должности, но и например размеру заработной платы(SummZP), то как это обыграть в запросе?" - аналогично и тут.


    Сделаем содержимое сообщества лучше, вместе!

    7 декабря 2014 г. 9:01
    Модератор