Это проблема, когда я определяю ddl (выпадающий список или поле выбора), я не знаю выбранное значение. Когда пользователь редактирует строку, он может выбрать элемент из списка. Но выбранный пункт не установлен. Я хочу установить выбранный элемент, когда пользователь нажимает кнопку для редактирования строки.
Думаю, что правильным способом является получение ddl, созданного при сборке jqGrid, и установка выбранного значения.
$("#list").jqGrid({
datatype: 'clientSide',
colNames: ['Edit', 'Delete', 'Save', 'Cancel', 'Location'],
colModel: [
....
....
{ name: 'Location', index: 'Location', width: 90, editable: true, edittype: "select", editoptions: { value: SI:System Integration ; IM:Information Management ; IA:Industrial Automation ; CI:Custom Instrumentation}}]
});
Когда пользователь нажимает кнопку редактирования, я получаю данные из списка ddl
var locationText = $("#list").getRowData(rowNum).Location;
locationText =
<SELECT id=1_Location class=editable><OPTION value="R ">Rochester</OPTION><OPTION selected value="MA ">Massachusetts</OPTION><OPTION value="DL ">Data Librarian</OPTION><OPTION value="Buff ">Buffalo / Niagara Falls</OPTION><OPTION value="Bing ">Binghamton / Owego / Southern Tier</OPTION><OPTION value="Other ">All other locations</OPTION><OPTION value="Alb ">Albany and all points East</OPTION><OPTION value=""></OPTION></SELECT>
Вместо того, чтобы получать данные из ячейки в jqGrid, я бы предпочел получить объект элемента dom ddl.
Другая идея, которая у меня была, но я не думаю, что это правильно, - использовать locationText и использовать ее для создания нового элемента ddl dom.
как то так.
var locationTmp2 = document.createElement("select");
locationTmp2.innerHTML = locationText;
or
locationTmp2.text= locationText;
Есть ли простой способ сделать то, что я пытаюсь сделать.
Я знаю, что мог бы создать новый элемент dom select, а затем добавить к нему каждую опцию, например,
//populate and set the selected item for locations.
var locationSelect = document.createElement("select");
var arrayLocations = ('R:Rochester;MA:Massachusetts;DL:Data Librarian;Buff:Buffalo/Niagara Falls;Bing :Binghamton / Owego / Southern Tier;Other:All other locations;Alb:Albany and all points East;').split(";");
for (var i = 0; i < arrayLocations.length - 1; i++) {
var optionItem = document.createElement("option");
optionItem.value = trim(arrayLocations[i].split(":")[0]);
optionItem.text = trim(arrayLocations[i].split(":")[1]);
//check if this should be the selected item.
if (arrayLocations[i].indexOf(rowData.Location) != -1)
optionItem.selected = true;
locationSelect.add(optionItem);
}
но должен быть способ получить весь элемент dom из jqGrid.
Спасибо