2013年11月25日 星期一

jqGrid 合併儲存格

首次玩新玩具(?
聽說在未來的專案還滿常用到的
所以上頭叫小弟一定要會
至少也要摸過知道怎麼從後端要資料



經過幾天的試玩後
大抵上有點適應了
不過此篇並不是講基本
而是在練習的過程中突然想到合併儲存格這東西
那麼jqGrid是不是也能做到呢?
上網找了一下還真的
如下嘍

$('#list').jqGrid({
datatype: "local",
height: 250,
colNames: ['City', 'Time', GetDate(0), GetDate(1), GetDate(2), GetDate(3), GetDate(4), GetDate(5), GetDate(6)],
sortorder: "desc",
colModel: [
{ name: 'City', index: 'City', width: 60, sorttype: "string",
cellattr: function (rowId, tv, rawObject, rdata) {
return 'id=\'City' + rowId + "\'";
}
},
{ name: 'Time', index: 'Time', width: 60, sorttype: "string",
cellattr: function (rowId, tv, rawObject, rdata) {
return 'id=\'Time' + rowId + "\'";
}
},
{ name: 'num_0', index: 'num_0', width: 90 },
{ name: 'num_1', index: 'num_1', width: 90 },
{ name: 'num_2', index: 'num_2', width: 90 },
{ name: 'num_3', index: 'num_3', width: 90 },
{ name: 'num_4', index: 'num_4', width: 90 },
{ name: 'num_5', index: 'num_5', width: 90 },
{ name: 'num_6', index: 'num_6', width: 90 }
],
multiselect: false,
gridComplete: function () {
var gridName = "list";
Merger(gridName, 'City');
Merger(gridName, 'Time');
}
});
function Merger(gridName, CellName) {
var mya = $("#" + gridName + "").getDataIDs();
var length = mya.length;
for (var i = 0; i < length; i++) {
var before = $("#" + gridName + "").jqGrid('getRowData', mya[i]);
var rowSpanTaxCount = 1;
for (j = i + 1; j <= length; j++) {
var end = $("#" + gridName + "").jqGrid('getRowData', mya[j]);
if (before[CellName] == end[CellName]) {
rowSpanTaxCount++;
$("#" + gridName + "").setCell(mya[j], CellName, '', { display: 'none' });
}
else {
rowSpanTaxCount = 1;
break;
}
$("#" + CellName + "" + mya[i] + "").attr("rowspan", rowSpanTaxCount);
}
}
}
function GetDate(diff) {
var d = new Date();
return d.getMonth() + 1 + '/' + (d.getDate() + diff);
}

結果如下:









參考:
http://bbs.blueidea.com/thread-3067461-1-1.html
http://www.trirand.com/jqgridwik ... %5B%5D=gridcomplete
http://www.trirand.com/jqgridwiki/doku.php?id=wiki:methods

沒有留言:

張貼留言