【问题标题】:How to disable autoload in jqGrid?如何在 jqGrid 中禁用自动加载?
【发布时间】:2026-01-06 14:45:02
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: javascript jqgrid autoload manual


    【解决方案1】:

    如果您将datatype 设置为'local',则不会加载来自服务器的数据。要强制加载数据,您可以将setGridParam 方法的datatype 更改为'json''xml'(参见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,其中也包含您所询问的信息。

    【讨论】:

      【解决方案2】:

      只是不要在表格中设置默认 URL。并在您需要加载数据时安装它(例如通过按下按钮)然后.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');
               }
      

      【讨论】:

        【解决方案3】:

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

        .../?_search=false&nd=1370817124473&rows=20&page=1&sidx=&sord=asc

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

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

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

        【讨论】:

          【解决方案4】:

          在 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; }
          }
          

          【讨论】:

          • 这不是问题的答案。
          最近更新 更多