jQuery MiniUI

标题: 【新说】我就直接问你datagrid 如何获取当前所有行对象吧 [打印本页]

作者: shixianchun    时间: 2013-11-21 15:17:08     标题: 【新说】我就直接问你datagrid 如何获取当前所有行对象吧

如题,请阅读,【api】

作者: felt    时间: 2013-11-21 15:25:30

grid.getData();
作者: shixianchun    时间: 2013-11-21 15:27:53

felt 发表于 2013-11-21 15:25
grid.getData();

【我在直白点】现在我就是通过grid.getData()遍历在加上grid.getSelected()来找未被选中的行对象。可惜,我测试了n次,取出来的,都是与我不选中的实际不一致,你说是不是有问题?
作者: factory    时间: 2013-11-21 15:37:49

shixianchun 发表于 2013-11-21 15:27
【我在直白点】现在我就是通过grid.getData()遍历在加上grid.getSelected()来找未被选中的行对象。可惜, ...

getData()是全部的当前页数据

getSelecteds()是全部选中的数据

你把选中的数据从全部数据中删除,剩下的,不就是未选中的了?
作者: shixianchun    时间: 2013-11-21 15:41:06

factory 发表于 2013-11-21 15:37
getData()是全部的当前页数据

getSelecteds()是全部选中的数据

不就是这个:      
  function getUnselectedRows(){
                var data = projectgrid.getData();
                var selectedgrid = projectgrid.getSelecteds();
                var unselectedgrid = [];
                for(var i=0; i<data.length; i++){
                        var f = false;
                        for(var j=0; j<selectedgrid.length; j++){
                                if(data._uid != selectedgrid[j]._uid){
                                        f = true;
                                        break;
                                }
                        }
                        if(f){
                                unselectedgrid.push(data);
                        }
                }
                return unselectedgrid;
        }
作者: shixianchun    时间: 2013-11-21 15:52:01

shixianchun 发表于 2013-11-21 15:41
不就是这个:      
  function getUnselectedRows(){
                var data = projectgrid.getData();

【这个思路是不行】如题说 @factory
作者: factory    时间: 2013-11-21 16:11:36

shixianchun 发表于 2013-11-21 15:52
【这个思路是不行】如题说 @factory

你加了break;

如果表格数据中的一条数据,跟选中的数据不符合,就直接跳出循环了啊,下面都不继续循环下去了
作者: shixianchun    时间: 2013-11-21 16:20:11

factory 发表于 2013-11-21 16:11
你加了break;

如果表格数据中的一条数据,跟选中的数据不符合,就直接跳出循环了啊,下面都不继续循环下去 ...

你的意思是加一个 continue?
作者: factory    时间: 2013-11-21 16:22:47

shixianchun 发表于 2013-11-21 16:20
你的意思是加一个 continue?

你是要跳出整个循环,还是跳出当前循环?

如果是后者,你可以不用加continue,因为本次循环如果f=true之后,也就结束了
作者: shixianchun    时间: 2013-11-21 16:29:25

factory 发表于 2013-11-21 16:22
你是要跳出整个循环,还是跳出当前循环?

如果是后者,你可以不用加continue,因为本次循环如果f=true之后, ...

现在的问题是,我取出来的,不是未被选中的
作者: factory    时间: 2013-11-21 16:34:54

shixianchun 发表于 2013-11-21 16:29
现在的问题是,我取出来的,不是未被选中的

for(var i=0; i<data.length; i++){
           .....
       if(data._uid != selectedgrid[j]._uid){
              
          }
}
data他是一个表格当前页数据数组,
应该是data._uid吧

push的时候也是错的,你把整个data都push进去...那遍历过滤都是白做的了
作者: felt    时间: 2013-11-21 16:51:01

  1. Array.prototype.removeAt = function (index) {
  2.                         this.splice(index, 1);
  3.        }
  4.        function getUnselectedRows(){
  5.                          var data = grid.getData();
  6.                          var selectedgrid = grid.getSelecteds();
  7.                          for(var i=0; i<selectedgrid.length; i++){
  8.                                   var data1=selectedgrid[i];
  9.                for(var j=0;j<data.length;j++){
  10.                                             if(data1.id==data[j].id){
  11.                                                   data.removeAt(j)
  12.                                            }
  13.               }
  14.         }
  15.         return data
  16.         }
  17. 这是我写的方法,你试下
复制代码



作者: factory    时间: 2013-11-21 17:09:12

shixianchun 发表于 2013-11-21 15:41
不就是这个:      
  function getUnselectedRows(){
                var data = projectgrid.getData();
  1. var sels = grid.getSelecteds();
  2.             var data = grid.getData();
  3.             var unSelecteds = [];


  4.             for (var i = 0, l = data.length; i < l; i++) {
  5.                 var flag = true;
  6.                 for (var j = 0, len = sels.length; j < len; j++) {
  7.                     if (data[i]._uid == sels[j]._uid) {
  8.                         flag = false;
  9.                         break;
  10.                     }
  11.                 }
  12.                 if (flag) {
  13.                     unSelecteds.push(data[i]);
  14.                 }
  15.             }
复制代码
改了一下你的代码




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