JQGrid - Выберите значение списка, не заданное в режиме редактирования, используя IE - PullRequest
1 голос
/ 29 июня 2011

Я создаю веб-страницу, используя MVC, с JQGrid, показывающим некоторые данные. Сетка использует встроенное редактирование, и один из столбцов становится выбранным вводом в режиме редактирования. Когда я начинаю редактирование, выбранный ввод, кажется, не принимает значение ячейки, вместо этого первый выбранный элемент является первым в списке. Это происходит в IE, но при использовании Firefox выбранный элемент правильно принимает значение ячейки.

Я определяю свой столбец следующим образом: -

{ name: 'MyColumn', index: 'MyColumn', width: 80, align: 'left', editable: true,sortable: true,hidden: false,Key: false, edittype: 'select', editoptions: { value: "0:None;1:Option1;2:Option2;3:Option3", width: 'auto',size: 20, maxlength: 30}}

Я заполняю свою сетку, используя вспомогательный класс json для преобразования DataTable в строку. Функция привязки данных в моем классе контроллера выглядит так: -

DataTable results = GetResults(sidx, sord, startIndex, endIndex, out resultsCount);
        return Content(JsonHelper.JsonForJqgrid(results, rows, resultsCount, page), "application/json");

Я использовал firebug для проверки создаваемого html, и IE и FF выдают следующее после запуска режима редактирования.

<td aria-describedby="MyGrid_MyColumn" title="Option3" style="text-align: left; color: red;" role="gridcell">
   <select role="select" width="auto" formatter="select" size="1" maxlength="30" id="3_MyColumn" name="MyColumn" class="editable">
      <option role="option" value="0">None</option>
      <option role="option" value="1">Option1</option>
      <option role="option" value="2">Option2</option>
      <option role="option" value="3">Option3</option>
    </select>
</td>

Моя таблица данных в настоящее время получает значение столбца в виде значения «текст», поэтому FF сопоставляет значение ячейки со значением «текст» выбранного входа. У меня есть возможность получить значение как фактическое значение, используемое на входе select, но это означало, что ячейка показывала значение вместо текста, когда не находилась в режиме редактирования (и все еще не соответствовала режиму редактирования в IE).

Чтобы уточнить, проблема в том, что если ячейка имеет значение «Опция3», в IE при входе в режим редактирования выбранный вход будет показывать «Нет» в качестве выбранного элемента вместо «Варианта3». Firefox правильно покажет «Option3» в качестве выбранного элемента.

Какие-нибудь советы?

UPDATE:

Нашел решение, я бы не назвал его ответом. Я обновил свою функцию selectRow и собрал значение ячейки перед входом в режим редактирования, а затем обновил раскрывающийся список с выбранным параметром. Похоже на хак, но это работает.

onSelectRow: function(id){
    if (id){
        if (id != lastSel){
            jQuery('#MyGrid').restoreRow(lastSel);
            var rowdata = jQuery('#ShippingListGrid').getRowData(id);
            jQuery('#MyGrid').editRow(id, true, true, true, '/EditURL/', null, true, true);
            $("#" + id + "_MyColumn").val($("#" + id + "_MyColumn option:contains('" + rowdata.MyColumn + "')").val());
            lastSel = id;
         } 
         else { 
            lastSel = '';
         }
    }
}

1 Ответ

0 голосов
/ 07 июля 2011

Какую версию вы используете?

Попробуйте обновить до v4.1.1 .У меня была та же проблема, и она исправлена ​​после обновления.

Я только что успешно проверил это на IE7, IE8 и IE9

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