我一直试图在jqGrid中"合并"单元格,也就是说,我想让特定行的单元格具有colspan = 2(或更多).到目前为止,我已经能够使用列模型中的cellattr选项使边框正常工作,如下所示:
colModel = { name: "a", width=50,
cellattr: function(rowId, tv, rawObject, cm, rdata) {
if (rowId < 5) { return 'sytle="border-right:0px"'; } },
name: "b", width=50,
cellattr: function(rowId, tv, rawObject, cm, rdata) {
if (rowId < 5) { return 'sytle="border-left:0px"'; } } };
Run Code Online (Sandbox Code Playgroud)
这只是删除了我要合并的单元格的边框(a&b到第5行).但是,如果我在任何这些框中添加文本,text-align显然不会正常工作,如果文本大于50像素,文本就会被切断.
我可以做一些疯狂的事情,我通过将所有文本切成两半进行居中对齐,并将每一半分别添加到右对齐和左对齐下的列"a"和"b".但是,似乎应该有更好的方法.
我目前正在使用afterSaveCell手动更新网格中的某些单元格.如果用户使用enter保存当前编辑的单元格,我可以正常工作.
不幸的是,如果他们点击或跳出单元格,他们正在直接编辑到另一个单元格,我不能再抓取新编辑的单元格的单元格值,因为getCell只返回输入控件的html.
总之,即使在编辑单元格时,有没有办法访问单元格的值?
jQuery(document).ready(function () {
var mydata = [
{id:"1", invdate:"2007-10-01",name:"test", note:"note", amount:"200.00",tax:"10.00",total:"210.00"},
{id:"2", invdate:"2007-10-02",name:"test2", note:"note2", amount:"300.00",tax:"20.00",total:"320.00"},
{id:"3", invdate:"2007-09-01",name:"test3", note:"note3", amount:"400.00",tax:"30.00",total:"430.00"},
{id:"4", invdate:"2007-10-04",name:"test", note:"note4", amount:"200.00",tax:"10.00",total:"210.00"},
{id:"5", invdate:"2007-10-05",name:"test5", note:"note5", amount:"300.00",tax:"20.00",total:"320.00"},
{id:"6", invdate:"2007-09-06",name:"test", note:"note6", amount:"400.00",tax:"30.00",total:"430.00"},
{id:"7", invdate:"2007-10-04",name:"test7", note:"note7", amount:"200.00",tax:"10.00",total:"210.00"},
{id:"8", invdate:"2007-10-03",name:"test8", note:"note8", amount:"300.00",tax:"20.00",total:"320.00"},
{id:"9", invdate:"2007-09-01",name:"test", note:"note9", amount:"400.00",tax:"30.00",total:"430.00"},
{id:"10",invdate:"2007-09-08",name:"test10",note:"note10",amount:"500.00",tax:"30.00",total:"530.00"},
{id:"11",invdate:"2007-09-08",name:"test11",note:"note11",amount:"500.00",tax:"30.00",total:"530.00"},
{id:"12",invdate:"",name:"TOTAL", note:"",amount:"",tax:"",total:""}
];
var grid = $("#list");
grid.jqGrid({
cellsubmit: 'remote',
cellurl: '/Example/GridSave',
datatype: "local",
data: mydata,
mtype: 'POST',
colNames: ['Inv No', 'Date', 'Client', 'Amount', 'Tax', 'Total', 'Notes'],
colModel: …Run Code Online (Sandbox Code Playgroud) 是否可以在固定位置设置行?例如,我们现在有一个总行,我们总是希望总计在排序等之后.
有插件吗?
我们尝试通过重绘整个表来在onLoadComplete中执行此操作,如下所示:
var rowIDs = $(this).getDataIDs();
var rowID, columnID;
$(this).clearGridData();
for (rowID in rowIDs) {
for (columnID in data.rows[rowID]) {
$(this).addRowData(rowIDs[rowID], data.rows[rowID], (data.rows[rowID][columnID].first ? 'first' : null));
break; // Only do this for the first column
}
}
Run Code Online (Sandbox Code Playgroud)
但这对性能不利,我们有数千行.
在奥列格的评论之后:
总行只是我们数据集的一行.数据集具有以下格式:
专栏:'网络','点击','观看'
data = [
{
'Network': {value:'Google'}, 'Clicks': {value:38392882}, 'Views':{value:3939922}
},
{
'Network': {value:'Sanoma'}, 'Clicks': {value:177883}, 'Views':{value:39293}
},
...
,
{
'Network': {value:'Total'}, 'Clicks': {value:993832732223}, 'Views':{value:3932293939}, 'first': true
},
...
]
}
Run Code Online (Sandbox Code Playgroud)
所以我们在数据行中设置我们想要在哪一行('first':true).
通过处理,我们使用它来设置在表的顶部.希望这更容易理解:)
提前致谢,
涡流