2

这就是问题所在,当我定义 ddl(下拉列表或选择框)时,我不知道所选值。当用户编辑一行时,用户可以从列表中选择一个项目。但未设置所选项目。我想在用户单击按钮编辑行时设置所选项目。

我认为正确的方法是获取构建 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 元素。

谢谢

4

1 回答 1

1

元素 id 将等于您在 colModel 中定义的列名。在你的情况下, $("#Location") 会给你你想要的元素,你可以从那里开始。

此外,请确保您使用正确的事件来处理此问题 - beforeShowForm 或 onInitializeForm 取决于您的需要。这是一个很好的讨论例子

于 2009-01-12T02:54:22.340 回答