2009-01-07 73 views
2

這是問題所在,當我定義ddl(下拉列表或選擇框)時,我不知道選定的值。當用戶編輯一行時,用戶可以從列表中選擇一個項目。但所選項目未設置。我想在用戶單擊按鈕編輯行時設置選定的項目。無法從jqGrid中的單元格獲取對象(jQuery)

正確的方法,我認爲,是讓時的jqGrid建成並設置選定值已創建的DDL。

$("#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); 
     } 

但應該有搶從jqGrid的整個DOM元素的方式。

感謝

+0

jqGrid有內置的行編輯功能嗎?當用戶點擊編輯時是否會爲您創建下拉菜單,或者您是否必須自己做這些操作? – 2009-01-08 15:47:58

回答

1

元素ID將等於您在colModel定義的列名。在你的情況下,$(「#位置」)會給你你想要的元素,你可以從那裏去。

此外,務必使用正確的事件來處理這一點 - 無論是beforeShowForm或onInitializeForm取決於你所需要的東西。這是一個很好的與example討論。

+2

您的鏈接已損壞... – 2010-03-15 17:07:38

相關問題