Jqgrid 获取包含<;的网格单元的客户端值;选择>;

Jqgrid 获取包含<;的网格单元的客户端值;选择>;,jqgrid,Jqgrid,我正在尝试编写一个jquery函数,它扫描整个jqrid,以检查它的任何单元格是否有值 我遇到的问题是,似乎没有一种方法可以检索包含选择框的单元格的选定值。jqgrid清楚地说明了getCell和getRowData方法的以下内容 当您需要时,请不要使用此方法 编辑行或单元格。这将 返回单元格内容,而不是 输入元素的实际值 这很公平,但考虑到这一点,我如何实际获得价值? 无法解析从“选择”内容返回的html,因为没有任何选项被标记为“已选择”,即使它们在浏览器中显示为已选择 以下是我的代码片段供

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

我遇到的问题是,似乎没有一种方法可以检索包含选择框的单元格的选定值。jqgrid清楚地说明了
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?;
                    } 
                }
            }
        }
我还尝试了其他类似的事件——但问题是——单击“选择”框不会将“销售”置于编辑模式——您必须先单击单元格,然后单击“选择”

简言之,如何获取所选值,客户端-可以这样做吗


有类似的问题,还有。但是似乎没有一个能解决这个问题(客户端)。

没有。下面是我使用
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

在我看来,您可能走错了方向。我真的不明白你为什么想要网格单元包含
,但如果你能解释一下你想要什么,我相信我会找到你问题的解决方案

首先,我解释一下我对你的问题感到奇怪的地方。如果定义
edittype:“选择”
,则jqGid通常有一个字符串,而不是内部的
元素。如果您处于en编辑模式(例如,处于内联编辑模式),则除所选行之外的所有其他行中也有一个字符串,而不是
元素。如果用户选择并按enter键,编辑模式将结束,修改后的数据将被保存(或发送到服务器)。因此,之前显示的值也不重要

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

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

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


更新:我发布了一个代码,显示了如何在中使用
数据事件
的“更改”
。可能它会对您有所帮助。

不,这不起作用-要清楚,像这样的html总是会返回(即,没有选择的选项)。无论单元格是否处于编辑模式。确定。。。我在生产代码中有使用选择的网格。在这些网格中,我使用了
editable:true,edittype:“select”}
来指示它们使用下拉列表。然后,当我想要获取所选值时,我只需使用
getRowData
并说
data.ColumnName
,它包含下拉列表中所选项目的值。我错过什么了吗?您是否试图让行始终显示下拉列表,即使它未被编辑??请提供您正在使用的jQuery的一个片段,以获取实际值。当我尝试此操作时:
$('#MyGrid').getRowData(-1).APropertyWithSelect
。尽管你最后的评论让我思考。是的,我总是显示下拉列表,即使它没有被编辑。那一定是问题所在?是的,我想这就是问题所在。jqGrid希望隐藏未被编辑行的下拉列表。Oleg-我需要一个单元格来包含下拉框,这就是为什么需要
选择
。我不完全理解您的第一个查询-但我不能依赖发送到服务器的任何变量,对于这个函数,我需要客户端值。我不确定
buildAppleSelect
buildAppleSelectHtml
方法是否存在故障,因为这些方法仅在首次构建网格时调用。我会查看dataEvents,看看这是否能满足我的需要。我想说的是,带有
edittype:“select”
的列有一个字符串作为值,而不是带有
的html片段。唯一具有
的行是处于编辑模式的行。因此,网格中只有一个单元格会出现问题。我不明白为什么在不保存行之前,您需要当前选择
。如果同一行中有多个
,并尝试根据另一行上的当前选择修改一个
,则可以将
dataEvents
'change'
一起使用。
<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>