jqGrid的treegrid的bug修复

刚开始使用jqGrid,就碰到了难题。想把列表做成树形的treegrid,在网上查了下jqgrid也正好有这个方法,但是使用的过程中发现个问题,就是传入的数据顺序如果不是一棵树一棵树的排列好的,就会出现节点排序错乱的问题,比如这个树的节点跑到另外一棵树的后面。在官网上面找了好多资料,也没有人说过这个问题,可能没什么人用,也有可能是我使用错误了吧,如果是我使用错误了,官网例子也会出现这个问题。我也不管是我的操作错还是真的bug了,我自己在源码中修改了下。

先说明下我使用的是jqGrid 4.6的版本,后面有修改后的插件

在jqGrid.src 1577行中增加了

<span style="white-space:pre">			</span>/*
                            增加了给树排序的代码
                             */
                            var tempRowData = [];
                            var count = -1;
                            for (var i = 0; i < rowData.length; i++) { //把数据分成树的节点单位
                                if (rowData[i].match('<tr')) {
                                    count++;
                                    tempRowData[count] = "";
                                }
                                tempRowData[count] += rowData[i];
                            }
                            var data = '';
                            for (var i = 0; i < tempRowData.length; i++) {
                                if (ts.p.data[i].pid == null) {
                                    var dataArry = new Array();
                                    dataArry[0] = tempRowData[i];
                                    sortLeaf(dataArry, tempRowData, ts.p.data, ts.p.data[i].id); //依次排列出树的节点
                                    data += dataArry.join('');
                                }
                            }
                            // $("#" + $.jgrid.jqID(ts.p.id) + " tbody:first").append(rowData.join(''));原来代码
                            $("#" + $.jgrid.jqID(ts.p.id) + " tbody:first").append(data);
在12655行中增加了

/*
 依次查找出树的节点,dataArray是返回数据,tempRowData是树的节点数据,ts包含了树的据节点信息,parentId是父节点
 */
function sortLeaf(dataArray, tempRowData, node, parentId) {
    for (var i = 0; i < node.length; i++) {
        if (node[i].pid == parentId) {
            dataArray[dataArray.length] = tempRowData[i];
            sortLeaf(dataArray, tempRowData, node, node[i].id);
        }
    }
}

这里需要注意的是,因为我在插件中增加了新的方法,所以在jqGrid方法中的colmodel方法和colName方法中必须要加上id和parentId。

插件下载链接:http://download.csdn.net/detail/qq805911956/9515640

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值