2009-01-07 3 views
2

Это проблема, когда я определяю ddl (выпадающий список или поле выбора), я не знаю выбранного значения. Когда пользователь редактирует строку, пользователь может выбрать элемент из списка. Но выбранный элемент не установлен. Я хочу установить выбранный элемент, когда пользователь нажимает кнопку для редактирования строки.Не удается получить объект из ячейки в jqGrid (jQuery)

Правильный способ, я думаю, состоит в том, чтобы получить 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 я предпочел бы получить объект дом 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.

Благодаря

+0

Имеет ли jqGrid встроенные функции редактирования строк? Создает ли это раскрывающийся список для вас, когда пользователь нажимает на редактирование или вам нужно сделать это самостоятельно? –

ответ

1

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

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

+2

Ваша ссылка сломана ... –

Смежные вопросы