jQuery MiniUI

标题: 可不可以做到更新整列 [打印本页]

作者: 24302    时间: 2015-2-27 17:48:01     标题: 可不可以做到更新整列

如题,我想选中几行,然后编辑其中一行的某一列,完成编辑之后更新其他列为相同值,有什么方法可以做到这样的效果?求管管帮忙!
作者: dforce    时间: 2015-2-28 09:25:04

监听oncellendedit事件,结束编辑的时候用grid.updateRow(row,{field1:value1,field2,value2...})去更新其他列
作者: 24302    时间: 2015-2-28 09:31:25

dforce 发表于 2015-2-28 09:25
监听oncellendedit事件,结束编辑的时候用grid.updateRow(row,{field1:value1,field2,value2...})去更新其 ...

好的,那结束编辑的时候怎么获取编辑的这一列的field?如果更新整列后发现写入错误可不可以回退?可以实现吗?
作者: dforce    时间: 2015-2-28 09:42:14

24302 发表于 2015-2-28 09:31
好的,那结束编辑的时候怎么获取编辑的这一列的field?如果更新整列后发现写入错误可不可以回退?可以实 ...

e.field
回退的话只能另外调用rejectRecord(row)方法去还原
作者: 24302    时间: 2015-2-28 09:48:22

dforce 发表于 2015-2-28 09:42
e.field
回退的话只能另外调用rejectRecord(row)方法去还原

谢啦,去试试
作者: 24302    时间: 2015-2-28 10:45:43

dforce 发表于 2015-2-28 09:42
e.field
回退的话只能另外调用rejectRecord(row)方法去还原

function endedit(e){
                var value = e.value;
                var field = e.field;
                var rows = grid.getSelecteds();
                console.log(rows);
                for(var i=0;i<rows.length;i++){
                        grid.updateRow(rows,{field:value});
                }
        }
是不是我代码有问题,grid.updateRow(rows,{field:value});更新行的时候找不到field,弹出field却有值,这是什么原因??
作者: dforce    时间: 2015-2-28 10:54:37

24302 发表于 2015-2-28 10:45
function endedit(e){
                var value = e.value;
                var field = e.field;

这个e.field是编辑的列的field,你要更新别的列就写别的
作者: 24302    时间: 2015-2-28 11:00:29

dforce 发表于 2015-2-28 10:54
这个e.field是编辑的列的field,你要更新别的列就写别的

我要更新的就是这一列,但是grid.updateRow(rows,{field:value});这段代码里面没得到field, 上面alert弹出有值
作者: dforce    时间: 2015-2-28 11:09:07

24302 发表于 2015-2-28 11:00
我要更新的就是这一列,但是grid.updateRow(rows,{field:value});这段代码里面没得到field, 上面alert弹 ...

更新这列,只能遍历所有行来更新
作者: 24302    时间: 2015-2-28 11:11:47

dforce 发表于 2015-2-28 11:09
更新这列,只能遍历所有行来更新

for(var i=0;i<rows.length;i++){
                        grid.updateRow(rows,{field:value});
                }
我已经遍历了,但是没更新到,如果写成grid.updateRow(rows,{"ydwz":value});这样就可以更新了,但是这样太不灵活了
作者: 24302    时间: 2015-2-28 11:45:16

dforce 发表于 2015-2-28 11:09
更新这列,只能遍历所有行来更新

这样要怎么弄,可以给个例子吗?
作者: factory    时间: 2015-2-28 13:01:40

24302 发表于 2015-2-28 11:45
这样要怎么弄,可以给个例子吗?

var data = grid.getData();

for(var i=0,l=data.length;i<l;i++){
    var row = data
   grid.updateRow(row,{field:value})
}
作者: 24302    时间: 2015-2-28 14:39:22

factory 发表于 2015-2-28 13:01
var data = grid.getData();

for(var i=0,l=data.length;i

还是不行,是不是grid.updateRow(row,{field:value})里面的field一定得是常量??
作者: dforce    时间: 2015-2-28 14:43:25

24302 发表于 2015-2-28 14:39
还是不行,是不是grid.updateRow(row,{field:value})里面的field一定得是常量??
  1. grid.on("cellendedit",function(e){
  2.       var field=e.field;
  3.       var rows=grid.getData()
  4.       for(var i=0,l=rows.length;i<l;i++){
  5.          var rowData={};
  6.          rowData[field]=e.value;
  7.          grid.updateRow(rows[i],rowData)
  8.       }
  9.    })
复制代码

作者: 24302    时间: 2015-2-28 14:52:19

dforce 发表于 2015-2-28 14:43

可以了,谢谢




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