获取包含<select> </select>的网格单元格的客户端值

时间:2010-07-02 13:16:16

标签: jqgrid

我正在尝试编写一个jquery函数来扫描整个jqrid以检查它的任何单元格是否有值。

我遇到的问题是,似乎没有办法检索包含选择框的单元格的选定值。 jqgrid docs明确指出了getCellgetRowData方法的以下内容。

  

当你使用这种方法时   编辑行或单元格。这将   返回单元格内容而不是   输入元素的实际值

这是公平的,但鉴于此,我如何实际获得价值?

无法解析从select内容返回的html,因为没有任何选项被标记为已选中,即使它们似乎在浏览器中被选中。

此处参考是我的代码片段:

var colModels = this.grid.jqGrid('getGridParam', 'colModel');
for (i = 1; i < colModels.length; i++) {
            var colModel = colModels[i];
            if (colModel.edittype == 'select') {
                var colData = this.grid.jqGrid('getCol', colModel.name, false);
                for (j = 0; j < colData.length; j++) {
                    if (colData[j] != 0) {
                        //alert("select change: " + colData[j]);
                        //alert(j+' GridName_' + colModel.name)
                        //alert("select change: " + $('#GridName_' + colModel.name).val());
                        //return has value?;
                    } 
                }
            }
        }

专栏定义:

{ name: "AppleId", index: "Appled", width: 150, align: "left", resizable: false, editable: true, edittype: "select", editoptions: { value: function() { return xxx.buildAppleSelect(); } }, formatter: function(cellvalue, options, rowObject, action) { return xxx.buildAppleSelectHtml(cellvalue); } };

我还尝试了afterEditCell和其他类似的事件 - 但问题是 - 单击选择框不会使卖出处于编辑模式 - 您必须先单击单元格然后单击选择。

简而言之 - 如何获得所选值,客户端 - 是否可以完成?

有类似的问题hereherehere。但似乎没有人解决这个问题(客户端)。

2 个答案:

答案 0 :(得分:0)

没有。以下是我使用getRowData从测试网格获得的一些HTML:

<select class="editable" size="1" name="test" id="5_test">
 <option value="0">Zero</option>
 <option value="1">One</option>
 <option value="3">Three</option>
 <option value="4">Four</option>
</select>

您是对的 - 标记中没有足够的信息来确定选择了哪个值。为了获得所选值,您必须使该行退出编辑模式,例如使用网格方法saveRow

答案 1 :(得分:0)

在我看来Dan,你是以错误的方式去的。我真的不明白为什么你想要包含<select>的网格单元,但如果你能解释我你想要什么,我相信我会找到你问题的解决方案。

首先,我解释一下我在你的问题中发现的奇怪内容。如果您定义edittype: "select",那么jqGid通常包含一个字符串,而不是<select>元素。如果您处于编辑模式(例如,在内联编辑模式下),则除了所选行之外的所有其他行都有一个字符串,而不是内部的<select>元素。如果用户进行了选择并按Enter键,则编辑模式将结束,修改后的数据将被保存(或发送至服务器)。因此,之前显示的值也不重要。

在我看来,由于buildAppleSelect中的一些自定义值构建和buildAppleSelectHtml中的自定义格式设置,您遇到了一些问题。

如果您想查看来自select的中间值,可以在dataEvents中使用'change' editoptions

我希望你现在明白我在你的问题中发现的奇怪之处。如果您解释我的问题是什么以及为什么您有多个<select>元素,并且想要读取中间选择值,我会尝试为您找到解决方案。

更新:我发布了一个代码,其中显示了如何在JQGrid Inline Editing : Filter subcategory dropdown list based on another category dropdown中使用dataEvents'change'。可能它会帮助你。