Я создаю веб-страницу, используя 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 = '';
}
}
}