Не удается получить объект из ячейки в jqGrid (jQuery)

Это проблема, когда я определяю 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, а затем добавить к нему каждую опцию, например

        //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.

Спасибо


person Brad8118    schedule 07.01.2009    source источник
comment
Есть ли в jqGrid встроенная функция редактирования строк? Создает ли он раскрывающийся список, когда пользователь нажимает кнопку «Редактировать», или вам приходится делать это самостоятельно?   -  person Crescent Fresh    schedule 08.01.2009


Ответы (1)


Идентификатор элемента будет равен имени столбца, которое вы определили в colModel. В вашем случае $ ("# Location") предоставит вам нужный элемент, и вы сможете перейти оттуда.

Кроме того, убедитесь, что вы используете правильное событие для обработки этого - либо beforeShowForm, либо onInitializeForm, в зависимости от того, что вам нужно. Вот хорошее обсуждение этого с помощью пример.

person nshaw    schedule 12.01.2009