代码之家  ›  专栏  ›  技术社区  ›  Dan TheCodeJunkie

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

  •  0
  • Dan TheCodeJunkie  · 技术社区  · 16 年前

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

    我遇到的问题是,似乎没有办法检索包含选择框的单元格的选定值。JQGrid docs 清楚地说明 getCell getRowData 方法。

    当你 编辑行或单元格。这个遗嘱 返回单元格内容,而不是 输入元素的实际值

    哪一个足够公平,但考虑到这一点,我如何才能真正得到价值?

    无法分析从选定内容返回的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 以及其他类似的事件-但问题是-单击选择框不会将sell置于编辑模式-您必须先单击单元格,然后单击select。

    简而言之-我如何获得选定的值,客户端-可以做到吗?

    有模拟问题 here , here here . 但似乎没有人解决这个问题(客户端)。

    2 回复  |  直到 16 年前
        1
  •  0
  •   Justin Ethier    16 年前

    不,这是我从测试网格中获得的一些html getRowData :

    <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>
    

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

        2
  •  0
  •   Community Mohan Dere    9 年前

    我看你好像走错了路。我真的不明白你为什么要让网格单元包含 <select> ,但如果你能告诉我你想要什么,我相信我会找到解决你问题的办法。

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

    在我看来你有些问题是因为 buildAppleSelect 和自定义格式 buildAppleSelectHtml .

    如果要查看select中的中间值,可以使用 dataEvents 具有 'change' editoptions .

    我希望你现在明白我在你的问题中发现的奇怪之处。如果你告诉我你的问题是什么,为什么你有更多 <选择> 元素并希望读取中间选择值,我将尝试为您找到解决方案。

    更新 :我发布了一个代码,显示如何使用 数据事件 具有 '更改' 在里面 JQGrid Inline Editing : Filter subcategory dropdown list based on another category dropdown . 也许它会帮助你。

    推荐文章