1. 程式人生 > >分享一下jqgrid合併單元格在原先程式碼的基礎上進行有優化提高了效率

分享一下jqgrid合併單元格在原先程式碼的基礎上進行有優化提高了效率

轉自http://bbs.blueidea.com/thread-3067461-1-1.html 謝謝原作者的程式碼和分享

效果:同列相鄰的單元格,值相同的,合併單元格。

優化後的程式碼:

        function Merger(gridName, CellName) {
            //得到顯示到介面的id集合
            var mya = $("#" + gridName + "").getDataIDs();
            //資料總行數
            var length = mya.length;
            //定義合併行數
            var rowSpanTaxCount = 1;
            for (var i = 0; i < length; i += rowSpanTaxCount) {
                //從當前行開始比對下面的資訊
                var before = $("#" + gridName + "").jqGrid('getRowData', mya[i]);
                rowSpanTaxCount = 1;
                for (j = i + 1; j <= length; j++) {
                    //和上邊的資訊對比 如果值一樣就合併行數+1 然後設定rowspan 讓當前單元格隱藏
                    var end = $("#" + gridName + "").jqGrid('getRowData', mya[j]);
                    if (before[CellName] == end[CellName]) {
                        rowSpanTaxCount++;
                        $("#" + gridName + "").setCell(mya[j], CellName, '', { display: 'none' });
                    } else {
                        break;
                    }
                }
                $("#" + gridName + "").setCell(mya[i], CellName, '', '', { rowspan: rowSpanTaxCount });
            }
        }

呼叫方法:
                gridComplete: function (data) {
                    Merger('listname', 'columnname');
                }