{"id":"1","name":"<input type='checkBox' class='itmchk' ><strong>ECHANGEUR<\/strong>","level":"0","parent":"null","isLeaf":false,"expanded":true,"loaded":true}
因为这些复选框跟随树边缘(我希望我很好理解,因为我是法国人).
当我标记/取消标记一行时,我想检查/取消选中子标题复选框,但在阅读后可能会发布帖子,我可以获得预期的结果.
解释例如:
如果我单击父行复选框(因此它变为UNCHECKED),则子级别行将变为UNCHECKED
我是jqgrid的新手,但它是一个很棒的工具,我想学习属性.
请你能以这种方式开车送我吗?或者你能建议我在哪里找到我想做的例子吗?我查了一下文档但没有成功.
提前谢谢了
JiheL
解决方法
formatter: function (cellvalue) { return "<input type='checkBox' class='itmchk' ><strong>" + $.jgrid.htmlEncode(cellvalue) + "</strong>"; }
要控制复选框的选中/取消选中,您可以使用beforeSelectRow回调网格. jqgrid绑定内部单击事件到网格主体.因此,没有事件处理程序直接存在于event bubbling发生的元素上.它允许捕获一个beforeSelectRow回调中的任何复选框的检查/取消选中.在beforeSelectRow中,您应首先测试是否单击了您要控制的复选框.
回调beforeSelectRow有两个参数:rowid和event object.事件对象的属性目标是用户点击的DOM元素.因为您将自定义itmchk类添加到每个这样的复选框,所以足以验证单击元素上的类.
下一个问题是许多与TreeGrid一起使用的jqgrid方法(如getNodeChildren)都将记录作为输入参数,但您只有rowid. jqgrid在本地保存网格的加载项.因此从rowid获取记录的最简单方法是使用getLocalRow方法.
结果,beforeSelectRow回调的代码可能如下:
beforeSelectRow: function (rowid,e) { var $this = $(this),isLeafName = $this.jqgrid("getGridParam","treeReader").leaf_field,localIdName = $this.jqgrid("getGridParam","localReader").id,localData,state,setChechedStateOfChildrenItems = function (children) { $.each(children,function () { $("#" + this[localIdName] + " input.itmchk").prop("checked",state); if (!this[isLeafName]) { setChechedStateOfChildrenItems($this.jqgrid("getnodechildren",this)); } }); }; if (e.target.nodeName === "INPUT" && $(e.target).hasClass("itmchk")) { state = $(e.target).prop("checked"); localData = $this.jqgrid("getLocalRow",rowid); setChechedStateOfChildrenItems($this.jqgrid("getnodechildren",localData),state); } }
重要的是要提到仅在先前加载的项目上检查/取消选中子复选框.因为您一次加载网格数据并使用loaded:true属性,所以它对您没有问题.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。