如何在jqGrid中禁用自动加载?

时间:2010-07-17 12:02:59

标签: javascript jqgrid autoload manual

如何在jqGrid中禁用自动加载并在需要时手动加载数据?

感谢。

4 个答案:

答案 0 :(得分:10)

如果将datatype设置为'local',则不会加载来自服务器的数据。要强制加载数据,您可以使用datatype方法将'json'更改为'xml'setGridParam(请参阅http://www.trirand.com/jqgridwiki/doku.php?id=wiki:optionshttp://www.trirand.com/jqgridwiki/doku.php?id=wiki:methods#grid_related_methods)和然后调用trigger("reloadGrid")方法。

请参阅jqGrid is not loading data,其中还包含您所询问的信息。

答案 1 :(得分:2)

只是不要在表格中设置默认网址。并在需要加载数据时(例如按下按钮)然后.trigger("reloadGrid")安装它。

你的例子:

jQuery("#grid").jqGrid(
         { 
            //Simply comment out the URL
            //url             :"salepointsprovider.php", 
            datatype:"json",
            colModel      :[
                {name:'SalePointId', index:'SalePointId'},
                {name:'Name', index:'Name'}
            ]
         }

 $('#ShowRecordsButton').click(function () {
           jQuery("#grid").jqGrid('setGridParam',
            {url:"salepointprovider.php?SalePointId=" + argSalePointId, page:1});
           jQuery("#grid").trigger('reloadGrid');
         }

答案 2 :(得分:0)

我的没有网址的网格向服务器发送请求:

... / _搜索=假安培; ND = 1370817124473&安培;行数= 20安培;页= 1&安培; SIDX =安培; SORD = ASC

设置数据类型:“本地”解决问题。

重新加载网格
`function reloadGrid(gridId, gridData){
    $(gridId).jqGrid('clearGridData');  // need for nonempty grig (see http://www.trirand.com/blog/?page_id=393/help/triggerreloadgrid-not-work/)
    $(gridId).jqGrid('setGridParam', {data: gridData}).trigger('reloadGrid');
}
`

无需更改数据类型(至少对于我的json情况,它已被识别)

答案 3 :(得分:0)

在treegrid中,您无法使用datatype ='local'。所以改为'local',我设置datatype ='jsonstring',定义空假数据和jsonReader。应根据检索到的数据正确定义jsonReader。感谢Oleg的answer。而且,当我需要加载数据时,我只需将数据类型更改为“json”。

var fakeData ={
    rows: []
};
...
datatype: 'jsonstring',
datastr: fakeData,
...
jsonReader: {
    repeatitems: false,
    root: function (obj) { return obj.rows; },
    page: function (obj) { return 1; },
    total: function (obj) { return 1; },
    records: function (obj) { return obj.length; }
}