jqGrid - 如何设置网格最初不加载任何数据?

Mar*_*eon 20 jquery load jqgrid

如何创建网格但不加载任何数据?

如果我省略该url选项,则loadError触发回调.

目前我们设置url:NoData.jsonNoData.json是一个静态文件,其中没有行.

问题在于我们的loadComplete回调,如果网格不包含任何数据,我们想要消息 - 除了我们不想在初始加载时显示此消息.目前我们处理如下:

//jqGrid load complete handler
function loadComp(grid) {
    if (grid.getGridParam("url") != "NoData.json" && grid.getGridParam("records") == 0) {
        setStatus("Your search did not return any results");
    }
}
Run Code Online (Sandbox Code Playgroud)

这看起来有点hacky ..想让网格最初没有加载任何数据.

有任何想法吗?

Ole*_*leg 33

datatype: 'local'最初应该使用.在您需要加载数据时,您应该更改datatypejsonxml:

$("#list").jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid');
Run Code Online (Sandbox Code Playgroud)

  • @Marcus:因为在所有情况下都会调用`loadComplete`事件句柄.如果只想在从服务器加载的情况下显示消息,只有当`datatype`等于"json"时才能显示消息,如http://stackoverflow.com/questions/3564898/jqgrid-programatically-select -grid行/ 3571392#3571392 (4认同)
  • `grid.getGridParam('datatype')==="json"`解决方案效果很好.. (2认同)

Tom*_*olk 21

我想创建一个网格,在加载页面时不加载数据,但是当用户单击刷新或使用搜索时加载数据.我的解决方案有点hacky但是非常简单并且运行良好.

我正在使用回调事件loadBeforeSend来在加载页面时停止对数据的ajax请求.我的回调函数将自行删除,因此它只会被执行一次.

loadBeforeSend: function (xhr, settings) {
  this.p.loadBeforeSend = null; //remove event handler
  return false; // dont send load data request
}
Run Code Online (Sandbox Code Playgroud)