我是jqGrid的新手,但我正在快速学习......
我正在使用jqGrid和本地数据。它显示某些对象的状态,并且它们正在实时更改。我通过基于彗星的API接收状态更改,这些更改要求我在表中添加/更改/删除行。数据需要按隐藏的"排序顺序排序"柱。我认为这使得更容易实现静态排序。
所以我没有使用"数据"参数,我不是"加载"任何数据,我一次添加一行。
我想要做每次插入,我可以在每次插入后使用行,或者更好地迭代表格数据中的项目,直到最后我或者找到一个更大的(按此排序值)比我添加的更大。然后在此行之前添加新的。目前我在第1行添加它们,每个对象都是这样的:
jQuery("#mygrid").jqGrid('addRowData',1, obj);
所以我看到它们,它们看起来很棒,但它们的顺序还不正确。
删除(我认为)非常简单。我还没到那儿。
但是变化怎么样?数据的变化可能包括" sortorder"值,所以我希望在每次更改后使用数据。我相信我可以将此隐藏列定义为排序列,并在数据更改时更改基础数据。是否有一种简单的方法让网格重新排序"它有的行?我试过了 $(' #mygrid')。触发器(" reloadGrid")但是没有采取任何措施...... 使用' addRowData'加载初始数据后上面打电话,但没有效果。数据保持不变......
我是否在正确的轨道上?是否有一个样本以编程方式添加行,更改行,删除行,使用网格真的只是为了显示当前的排序状态?
这是我在$(document).ready()
中创建的网格定义html: < table id =' mygrid'>< / table>
jQuery("#mygrid").jqGrid({
datatype: "local",
loadonce: true,
scroll:1,
height: "auto",
width: '100%',
colNames:['A','B', 'C', 'D', 'SortKey'],
colModel:[
{name:'a',index:'a'},
{name:'b',index:'b'},
{name:'c',index:'c'},
{name:'d',index:'d'},
{name:'sortordering',index:'sortordering', hidden:true}
],
rowNum:200,
sortname: 'sortordering',
sortorder: 'asc',
shrinkToFit: true,
autowidth: true,
viewrecords: true,
multiselect: false,
imgpath: "lib/basic/images",
caption: "Testing 123"
});
我添加的数据对网格看起来很棒,我只需要对其进行排序并立即管理状态更改......
感谢您的任何建议!
编辑#1:我一直在忙着尝试并学习最好的东西。这是我目前所知道的:1)$(' #mygrid')。触发器(" reloadGrid")不适用于" loadonce" /"本地"数据。它用于从主机获取/刷新数据,如果这是您正在做的事情。
2)我在改变后成功采取的唯一方法是致电 jQuery的("#mygrid&#34)的jqGrid。(' sortGrid'" sortordering",FALSE);但是,我必须调用它两次:-(因为每次调用TOGGLES方向(升序或降序)就像我点击了列一样。无法在' sortGrid'调用中指定方向 - 应该是我认为还有一个额外的参数......
3)为了改变数据,我需要使用jQuery(" #mygrid")。jqGrid(' setRowData',...);并可能在那之后采取行动
4)删除数据我需要使用jQuery(" #mygrid")。jqGrid(' delRowData',...);
我的下一个任务是找出找到我想要更改的行的rowID的正确方法,希望不会遍历所有这些行,但如果我必须这样做,我会这样做...
编辑#2: 我现在明白了rowID的重要性,这有很大帮助!正如我在这里解释的那样,你可以指定一个列值作为rowID值(它最好是唯一的!)这使得以后很容易引用该行...所以,当新信息到达时你需要无论是编辑(setRowData)还是删除(delRowData),都将此列的值作为setRowData或delRowData的rowID参数传递,然后将整个对象(作为新数据)传递给您。如果你不想看到这个" key"在网格中,只需将其隐藏。要将此列指定为隐藏,并将其指定为colModel规范中的rowID(将主键更改为数据中属性名称):
{name:'primarykey',index:'primarykey', key: true, hidden:true}
顺便一提 - 在上面的例子中,我昨天尝试使用" sortordering"列作为键,但它始终是唯一的,它实际上可以随时间变化,因此它不能成为key:true属性的良好候选者。
答案 0 :(得分:0)
试试这个,
将sortname: 'sortordering',
更改为sortname: 'a',
并在插入$('#mygrid').trigger("reloadGrid")
后重新加载网格。因此,网格将始终在加载时和插入
我不明白列排序的用途。
答案 1 :(得分:0)
看起来您将被设置为:
$('#GridName').jqGrid().sortGrid('ColumnName',true);
如果您想更改刚刚设置的列的colModel中该列的默认排序方向:
firstsortorder: 'desc',