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