jqGrid - 网格中没有数据消息?

时间:2010-10-14 17:05:49

标签: jquery jqgrid

如果我们的搜索当前没有返回任何数据,我们使用loadComplete回调向用户打印一条消息,表明没有数据。有没有办法配置jqGrid在网格中打印出“无数据”消息?目前我们在网格上方div打印出来,但希望它在实际网格内。

3 个答案:

答案 0 :(得分:8)

jqGrid仅在寻呼机区域的末尾显示“没有要查看的记录”消息($.jgrid.defaults.emptyrecords),仅在发生以下所有情况的情况下显示

  • 您定义了一个寻呼机
  • viewrecords: true
  • 当前记录计数(reccount参数)为0。

我不知道在网格数据区域内(网格主体顶部)显示消息的任何“标准”方式。在我看来,如果您需要这样的消息,您必须继续使用放置在网格主体上的div并在loadComplete事件句柄中隐藏/显示它。

答案 1 :(得分:0)

To Oleg:是的,你是对的,因为jqGrid仅在寻呼机中显示消息,即navGrid。因此,在jqGrid表之后放置一个<DIV>是显示消息的最佳方式。

To Marcus:请参阅以下方法,了解我在其中一个项目中所做的工作。我粘贴了HTML代码段和loadComplete实现,您必须触发逻辑以显示“无记录显示”消息。

HTML:

<pre>
  <div class="cols jsGridOuter" style="position:relative;">
    <table id="mandateList" class="jsStretchGridWidth"><tr><td></td></tr></table>
    <div class="noResultsDiv gridNoRecords jstHidden">
      <span class="notice"><label>No records to show</label></span>
    </div>
    <div id="pagination"></div>
  </div>
</pre>

Java脚本:

loadComplete: function() {
  if (j$(this).getGridParam("records")==0) 
  {
    j$('div#pagination').hide();
    if (j$('div.noResultsDiv').hasClass('jstHidden'))
    {
      j$('div.noResultsDiv').removeClass('jstHidden');
    }
  }
  else
  {
    j$('div#pagination').show();
    if (j$('div.noResultsDiv').length>0)
    {
      j$('div.noResultsDiv').addClass('jstHidden');
    }
  }
}

答案 2 :(得分:0)

您可以覆盖正文表格html以显示您的消息。 用它来做:

loadComplete: function() {
                if ($('#Grid').getGridParam('records') === 0) {
                    oldGrid = $('#GridIdb2 tbody').html();
                    $('#Grid tbody').html("<div style='padding:6px;background:#D8D8D8'>No records found</div>");
                }
                else
                    oldGrid = "";
             }

使用oldGrid var作为辅助来保存更改之前jqgrid的内容;在提交新搜索之前设置旧值:

if(oldGrid!=""){
    $("#Grid tbody").html(oldGrid);
}