【问题标题】:Can't get the object from a cell in jqGrid (jQuery)无法从 jqGrid(jQuery)中的单元格获取对象
【发布时间】:2009-01-07 22:42:07
【问题描述】:

这是问题所在,当我定义 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 元素。

谢谢

【问题讨论】:

  • jqGrid 有内置的行编辑功能吗?当用户点击编辑时它会为您创建下拉菜单还是您必须自己做?

标签: jquery dom select jqgrid ddl


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    相关资源
    最近更新 更多