我正在尝试向我的数据源添加项目,然后根据this answer重新加载网格。网格加载很好。 addItemToGrid
被调用了几次,我正在验证底层tableSrc对象是否被添加到了,但网格保持不变。
var tableSrc = { "rows": [
{ "title": "Title1", "subtitle": "subTitle", "authors": ["a1", "a2", "a3"] },
{ "title": "Title2", "subtitle": "subtitle", "authors": ["X", "Y"] },
{ "title": "Title3", "subtitle": "subTitle", "authors": ["1", "2", "3", "4"]}]
};
targetGrid = $("#jqGridElement").jqGrid({
datastr: tableSrc,
jsonReader: { repeatitems: false },
datatype: "jsonstring",
colNames: ['title', 'subtitle'],
colModel: [
{ name: 'title', index: 'title', width: 55 },
{ name: 'subtitle', index: 'subtitle'}],
height: 'auto',
gridview: true
});
function addItemToGrid() {
tableSrc.rows.push({ "title": "NEW", "subtitle": "HELLO", "authors": ["1", "2", "3", "4"] });
$("#jqGridElement").trigger('reloadGrid');
//$("#jqGridElement").jqGrid('reloadGrid');
}
答案 0 :(得分:2)
首先,语句$("#jqGridElement").trigger('GridUnload')
不执行任何操作,因为没有名称为'GridUnload'
的事件。 jqGrid当前支持的唯一事件是'reloadGrid'
。该事件支持您可能感兴趣的其他参数(请参阅here)。调用$("#jqGridElement").trigger("reloadGrid", [{current:true}]);
将刷新网格,但可以使用户的选择不会更改。
如果您需要在“新样式API”中调用GridUnload
,它应该看起来像
$("#jqGridElement").jqGrid('GridUnload');
调用GridUnload
方法后,将重新创建基于jqGrid的table
元素。因此,如果您将$("#jqGridElement")
保存在变量(例如var gridObj = $("#jqGridElement")
)中,则应刷新值(使用作业gridObj = $("#jqGridElement")
)。
现在谈谈你的主要问题。如果您需要向网格添加新列或在旧网格绝对另一个网格上创建,则方法GridUnload
非常有用。 (以the answer或this one为例)。如果您需要向现有网格添加一行数据,则可以使用addRowData。
让您理解的重要一点是每行使用id(<tr>
元素)。如果您不想自己管理ID,可以使用undefined
作为addRowData方法中的rowid
。如果$.jgrid.randId()
方法将在内部用于为新行生成唯一ID。