jqgrid search: Как указать поисковый столбец? - PullRequest
0 голосов
/ 15 февраля 2012

Я использую jqgrid на EF4 MVC3 (C #).Я основал поиск на решении @Oleg, которое отлично работает и подходит для моих нужд.

В моей сетке определены следующие столбцы:

          ...
          { name: 'Stato', index: 'StatoTicketID', width: 20, align: 'left', sorttype: 'int', searchoptions: { sopt: ['eq']} },
          { name: 'StatoTicketID', index: 'StatoTicketID', width: 20, align: 'left', sorttype: 'int', hidden: true, searchoptions: { sopt: ['eq']} },
          ...

Как видите, столбец Stato упорядочен по индексу StatoTicketID (скрытое целочисленное поле), и порядок работает отлично.

ПРОБЛЕМА

Когда я пытаюсь найти значение Stato, фильтр передается по индексу StatoTicketID в виде строки, в то время как я хотел бы искатьна Stato значения.Таким образом, я получаю исключение внутри контроллера, которое указывает, что я не могу преобразовать тип String в Int32.

Существует ли способ указать, по какому столбцу применяется поиск, когда индекс находится в другом столбце, как в моем случае?

РЕДАКТИРОВАТЬ И ВРЕМЕННОЕ РЕШЕНИЕ: На данный момент я решил свою проблему с помощью следующего обходного пути.

        (inside foreach (Rule rule in rules) of FilterObjectSet by Oleg)
         ....

         if (rule.field == "StatoTicketID")
            {
                rule.field = "StatoTicket.Stato";
                propertyInfo = typeof(T).GetProperty("stringfield"); // where stringfield is a text type column of my model
            }

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

Спасибо взаранее

1 Ответ

3 голосов
/ 16 февраля 2012

Мне кажется, что вы выбрали слишком сложный путь.Я бы просто отправил клиенту (в jqGrid) только Stato и вообще должен StatoTicketID.С точки зрения вашего проекта StatoTicketID является частью реализации сервера, и клиент не должен зависеть от этого.

Если у вас есть уникальное ограничение (или уникальный индекс) для Stato столбца *Стол 1007 * вы очень быстро найдете StatoTicketID, когда вам нужно.Таким образом, jqGrid может содержать и «знать» только о Stato и не иметь никакой информации о StatoTicketID в качестве детали реализации.

Еще один способ решения проблемы - использование formatter: 'select' встолбец Stato.Важно понимать, что в случае, если отображение между Stato текстом и StatoTicketID должно быть загружено до того, как будет создана сетка.В случае, если столбец Stato должен иметь такие свойства, как

formatter: 'select', edittype: 'select', editoptions: {value: '12:Stato1;24:Stato2'},
stype: 'select', searchoptions: {value: ':All;12:Stato1;24:Stato2'}

Нельзя использовать dataUrl в случае вместо value в editoptions.

В результате вы сможете заполнить столбец Stato данными StatoTicketID, но соответствующие тексты будут отображаться с помощью jqGrid.

Я рекомендую вам лучше реализовать первый способ с чистым текстом Stato,Все проблемы, которые вы сможете решить только на серверной части.

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