JQGrid:dataEvents更改中的依赖项下拉列表
我正在开发一个网格,其中包含每个模块的许可列表 我想要的是在列中的组合框中进行更改时,每2个事件验证一次。我使用1和0来激活/停用 第一种情况:如果我激活“写入”、“修改”、“删除”或“打印”,则表示自行选择“读取” 第二种情况正好相反:如果禁用“读取”,将自动关闭“写入”、“修改”、“删除”和“打印” 通过研究,我找到了使用输入事件函数的选项:JQGrid:dataEvents更改中的依赖项下拉列表,events,drop-down-menu,jqgrid,dependencies,onchange,Events,Drop Down Menu,Jqgrid,Dependencies,Onchange,我正在开发一个网格,其中包含每个模块的许可列表 我想要的是在列中的组合框中进行更改时,每2个事件验证一次。我使用1和0来激活/停用 第一种情况:如果我激活“写入”、“修改”、“删除”或“打印”,则表示自行选择“读取” 第二种情况正好相反:如果禁用“读取”,将自动关闭“写入”、“修改”、“删除”和“打印” 通过研究,我找到了使用输入事件函数的选项: {"name":"read", "index":"read", "width":48, "resizable":false, "editable"
{"name":"read",
"index":"read",
"width":48,
"resizable":false,
"editable":true,
"edittype":"select",
"editoptions":{
"value":"0:0;1:1",
"dataEvents":[{
"type":"change",
"fn":function(e){
if($(e.target).val() == '0')
{
// actions here...
}
}
}]
}
}
您可以更改其他列的元素。。。按排
编辑
我的解决方案:
$('tr.jqgrow select[name*="read"]').live("change",function()
{
if($(this).val() === '0') $(this).closest('tr.jqgrow').find('select.editable').not(this).find('option:first-child').attr("selected", "selected");
});
$('tr.jqgrow select[name!="read"]').live("change",function()
{
$(this).closest('tr.jqgrow').find('select[name*="read"]').find('option:last-child').attr("selected", "selected");
});
在中,您将看到一个如何在jqGrid中实现依赖选择的示例。顺便说一句,您可以对格式化程序使用相同的想法:“复选框”。在这种情况下,实施将容易得多。必须手动修改
元素或chachbox,这一点很重要
您可以展示另一个您可以使用的实施选项吗。感谢您的回复,我阅读了有关国家和州的主题。。。但是我看到使用的代码非常广泛,对于我发布的第二个案例,还必须在每个字段中复制相同的函数。我用自己的解决方案编辑了我的问题,这些解决方案适合我的需要。Thanks@csotelo当前位置我写信告诉你,在你的情况下,解决办法会容易得多。重要的是您必须手动更改
元素或复选框。在关于国家和州的主题中,应根据在另一列中选择的值构建下一个选择列表。如果只选择“0”和“1”,我继续建议您使用复选框而不是选择框。现在,关于问题“编辑”部分的代码。dataEvents
使用的live
不如bind
有效。此外,第n个子项(4),不是(这)
等的使用使得代码不够常见。@csotelo:所有内联编辑选项都有ID,其构造类似于3\u read
,其中3
是行ID,'read'
是列中的名称。或者,您可以搜索“按属性选择”name=“read”
。它的代码可读性更高,并且独立于对colModel
的小修改(例如插入新列或使用rownumbers:true
选项)。好的,我将继续研究相关解决方案并编辑我的回答。我已经更改了使用选择器的功能,这些选择器引用了选择列表的id。也许这些相同的逻辑可以用于每个组合框列。您可以在dataEvents中使用外部函数?在哪里我可以使用与我的解决方案类似的东西?