jQuery MiniUI

 找回密码
 立即注册
查看: 6445|回复: 10
打印 上一主题 下一主题

根据另一个grid是否有数据,禁用编辑 [复制链接]

Rank: 2

跳转到指定楼层
楼主
发表于 2017-11-22 11:12:51 |只看该作者 |倒序浏览
两个grid,第二个grid的数据是根据第一个grid选中行进行加载的,现在需求是 让第一个grid的根据另一个grid是否有数据,控制第一个grid的单元格可编辑
请问如何实现?

Rank: 1

沙发
发表于 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);//不可编辑
}

Rank: 8Rank: 8

板凳
发表于 2017-11-22 11:44:47 |只看该作者
grid2.on("cellbeginedit",function(e){
    if(grid1.getData().length==0){
         e.cancel=true;
    }
})

Rank: 2

地板
发表于 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选中行时,用的是改变选择前的行

Rank: 8Rank: 8

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

一样是在oncellbeginedit事件里处理,和异步不异步加载无关。
你编辑的时候数据肯定是已经加载好了。

Rank: 2

6#
发表于 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的第一行对应的副表没有资料, 在第一二行之间点击,禁用会错乱, 请麻烦看一下.


附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 8Rank: 8

7#
发表于 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都没有绑定表格,你到底是要控制哪一个表格?

Rank: 2

8#
发表于 2017-11-22 17:04:56 |只看该作者
dforce 发表于 2017-11-22 15:22
当选不存在的时候,grid2都没数据,何来编辑?
另外你打开的html里面oncellbeginedit都没有绑定表格,你 ...

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

Rank: 8Rank: 8

9#
发表于 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;
    }
}
})

Rank: 2

10#
发表于 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进行编辑
grid2有资料,grid1选中行禁止对id进行编辑

这是在多次切换grid1选中行时会发生的错误


这是出现会出现错误的案例,请麻烦看一下





附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Archiver|普加软件

GMT+8, 2025-2-6 06:59 , Processed in 1.062918 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部