jQuery MiniUI

标题: 根据另一个grid是否有数据,禁用编辑 [打印本页]

作者: MK_AlieZ    时间: 2017-11-22 11:12:51     标题: 根据另一个grid是否有数据,禁用编辑

两个grid,第二个grid的数据是根据第一个grid选中行进行加载的,现在需求是 让第一个grid的根据另一个grid是否有数据,控制第一个grid的单元格可编辑
请问如何实现?

作者: qsw    时间: 2017-11-22 11:31:47

var  grid1=mini.get("grid1");
var  grid2=mini.get("grid2");
var rows=grid2.getData();
//把以下判断写在grid2加载完成时的回调函数里或者是grid2的onload的事件里
if(rows.length>0){//有数据
    grid1.setAllowCellEdit(true);//可编辑
}else{
    grid1.setAllowCellEdit(false);//不可编辑
}
作者: dforce    时间: 2017-11-22 11:44:47

grid2.on("cellbeginedit",function(e){
    if(grid1.getData().length==0){
         e.cancel=true;
    }
})
作者: MK_AlieZ    时间: 2017-11-22 12:07:02

qsw 发表于 2017-11-22 11:31
var  grid1=mini.get("grid1");
var  grid2=mini.get("grid2");
var rows=grid2.getData();

需求是 要控制grid1选中行的其中几个单元格是否可编辑,请问如何实现
我原本是grid1的 oncellbeginedit去做控制,但是 grid1.load 是异步的,会有改变grid1选中行时,用的是改变选择前的行
作者: dforce    时间: 2017-11-22 12:41:42

MK_AlieZ 发表于 2017-11-22 12:07
需求是 要控制grid1选中行的其中几个单元格是否可编辑,请问如何实现
我原本是grid1的 oncellbeginedit去 ...

一样是在oncellbeginedit事件里处理,和异步不异步加载无关。
你编辑的时候数据肯定是已经加载好了。
作者: MK_AlieZ    时间: 2017-11-22 14:33:08

dforce 发表于 2017-11-22 12:41
一样是在oncellbeginedit事件里处理,和异步不异步加载无关。
你编辑的时候数据肯定是已经加载好了。 ...



[url=]1.zip[/url]

这是拿官网的例子 http://www.miniui.com/demo/#src=datagrid/detailgrid.html 改的,dept_grid的第一行对应的副表没有资料, 在第一二行之间点击,禁用会错乱, 请麻烦看一下.



作者: dforce    时间: 2017-11-22 15:22:37

MK_AlieZ 发表于 2017-11-22 14:33
1.zip

这是拿官网的例子 http://www.miniui.com/demo/#src=datagrid/detailgrid.html 改的,dept_grid ...

当选不存在的时候,grid2都没数据,何来编辑?
另外你打开的html里面oncellbeginedit都没有绑定表格,你到底是要控制哪一个表格?
作者: MK_AlieZ    时间: 2017-11-22 17:04:56

dforce 发表于 2017-11-22 15:22
当选不存在的时候,grid2都没数据,何来编辑?
另外你打开的html里面oncellbeginedit都没有绑定表格,你 ...

抱歉,上传错了oncellbeginedit绑定是grid1,要的效果是grid2没有数据,这时可以修改grid1的选中行id,如果grid2有数据,则禁止对grid1选中行id进行编辑

作者: felt    时间: 2017-11-22 17:39:34

MK_AlieZ 发表于 2017-11-22 17:04
抱歉,上传错了oncellbeginedit绑定是grid1,要的效果是grid2没有数据,这时可以修改grid1的选中行id,如果gr ...

grid1.on("cellbeginedit",function(e){
    if(e.field=="id"){
    if(grid2.getData().length==0){
         e.cancel=true;
    }
}
})
作者: MK_AlieZ    时间: 2017-11-23 09:26:39

felt 发表于 2017-11-22 17:39
grid1.on("cellbeginedit",function(e){
    if(e.field=="id"){
    if(grid2.getData().length==0){

这是想要的效果:
grid2没有资料,grid1选中行可对id进行编辑
[attach]10198[/attach]grid2有资料,grid1选中行禁止对id进行编辑
[attach]10199[/attach]
这是在多次切换grid1选中行时会发生的错误
[attach]10196[/attach]
[attach]10197[/attach]
这是出现会出现错误的案例,请麻烦看一下
[attach]10195[/attach]





作者: felt    时间: 2017-11-23 11:28:25

MK_AlieZ 发表于 2017-11-23 09:26
这是想要的效果:
grid2没有资料,grid1选中行可对id进行编辑
grid2有资料,grid1选中行禁止对id进行编辑

因为下面表格2加载是有时间的,如果你是直接换行,那么下面的表格还是加载中,也就获取不到真正的数据条数。
[attach]10201[/attach]




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2