如果没有数据返回,我怎样才能完全隐藏jqgrid?
当我从我的webservice返回记录时,我有一段时间试图只显示我的jqGrid。 我不希望它被折叠到你只看到标题栏的地方,但如果那是我能做的最好的,我想我可以在标题中加入一条有意义的信息。 不过,我更愿意隐藏网格并显示“找不到记录”消息div块。
我也猜测,如果最坏的情况发生,我可以在这个问题上做解决方案如何在jqGrid中显示没有任何数据的信息? (链接包括作为其他人的替代可能解决方案)。
我已经尝试在从函数和GRIDCOMPLETE事件加载数据时使用的函数内部执行.hide(),并且都没有完成隐藏网格。 我是JQuery的新手,更不用说使用jqGrid了。
$(document).ready(function() { $("#list").jqGrid({ url: 'Service/JQGridTest.asmx/AssetSearchXml', datatype: 'xml', mtype: 'GET', colNames: ['Inv No', 'Date', 'Amount'], colModel: [ { name: 'invid', index: 'invid', width: 55 }, { name: 'invdate', index: 'invdate', width: 90 }, { name: 'amount', index: 'amount', width: 80, align: 'right' }], pager: jQuery('#pager'), postData: { "testvar": "whatever" }, rowNum: 10, rowList: [10, 20, 30], sortname: 'id', sortorder: "desc", viewrecords: true, imgpath: 'themes/sand/images', caption: 'My first grid', gridComplete: function() { var recs = $("#list").getGridParam("records"); if (recs == 0) { $("#list").hide(); } else { alert('records > 0'); } } }); ...
并试过这个:
$(document).ready(function() { $("#list").jqGrid({ datatype: function(postdata) { jQuery.ajax({ url: 'Service/JQGridTest.asmx/AssetSearchXml', data: postdata, dataType: "xml", complete: function(xmldata, stat) { if (stat == "success") { var thegrid = $("#list")[0]; thegrid.addXmlData(xmldata.responseXML); var recs = $("#list").getGridParam("records"); if (recs == 0) { $("#list").hide(); alert('No rows - grid hidden'); } else { alert(recs); } } else { alert('FAIL'); } } }); }, mtype: 'GET', colNames: ['Inv No', 'Date', 'Amount'], colModel: [ { name: 'invid', index: 'invid', width: 55 }, { name: 'invdate', index: 'invdate', width: 90 }, { name: 'amount', index: 'amount', width: 80, align: 'right' }], pager: jQuery('#pager'), postData: { "testvar": "whatever" }, rowNum: 10, rowList: [10, 20, 30], sortname: 'id', sortorder: "desc", viewrecords: true, imgpath: 'themes/sand/images', caption: 'My first grid' }); ...
感谢您的任何帮助,您可以提供。
jqGrid用它的特殊酱汁和div包裹你的桌子,这样你就可以通过用你自己的div包装那个表来做你想做的事情你可以隐藏:
然后在你的gridComplete中:
gridComplete: function() { var recs = parseInt($("#list").getGridParam("records"),10); if (isNaN(recs) || recs == 0) { $("#gridWrapper").hide(); } else { $('#gridWrapper').show(); alert('records > 0'); } }
希望这可以帮助。
只是对seth解决方案的一点点扭曲:
-
你可以使用var recs = $(’#list’)。jqGrid(’getGridParam’,’ records ‘);
var recs = $('#list').jqGrid('getGridParam','reccount');
jqGrid网格选项’ records ‘默认值=’无’
jqGrid网格选项’ reccount ‘默认为0,即使没有记录也会返回一个数字(返回0)
请参阅wiki:options @ jqGrid Wiki
-
如果你不想使用包装div,你可以使用
$('.ui-jqgrid').hide()
或$('.ui-jqgrid').show()
来隐藏整个jqGrid。ui-jqgrid类仅用于jqGrid父类。
我发现这个:
parseInt($("#grid").getGridParam("records"),10);
正在回归“NaN”。 如果网格中没有记录,则“records”属性设置为null。 因此,您无法将其强制转换为数字,并检查它是否等于零。
<%: CommonText.NoRecords %>
JqGrid没有记录检查
gridComplete: function () { var recs = $("#").getGridParam("records"); if (recs == 0 || recs == null) { $(tableContacts).setGridHeight(100); $("#NoRecordContact").show(); } }
尝试使用此方法隐藏jqGrid:
$("#someGridTableName").jqGrid("GridUnload");
一定要包括:
jquery.jqGrid-xxx / src / grid.custom.js文件。
请参阅此文章 ,其中详细介绍了上述方法。 或者在jqGrid wiki中 ,它在Add on Grid Methods
部分中讨论了这个方法。
另一点需要考虑:
避免在jqGrid上使用包装器(见post )
overflow: auto;
如果您尝试手动使网格列更宽并超过包装div的宽度,则属性将不起作用。 换句话说,jqGrid已经配备了逻辑来创建水平滚动条而无需外部div。
注意:在IE8和9上测试过
假设您有以下标记,您将在其中创建jqgrid:
现在在jqgrid代码的js脚本中,您可以将loadcomplete选项修改为:
loadComplete: function () { if(jQuery("#jqgridtab").getDataIDs().length==0){ noDataError(); } }
noDataError的定义将如下:
function noDataError(){ document.getElementById("jqgridcontent").style.visibility="hidden"; document.getElementById("jqgridcontent").style.display="none"; }
在网格定义中不包括“标题”选项就足够了。 使用5.0.1版测试
伙计们,不需要创建div或使用CSS。 它使用setGridState本机可用:
gridComplete: function () { var recs = $('#myGrid').jqGrid('getGridParam', 'reccount'); if (isNaN(recs) || recs == 0) { $("#myGrid").jqGrid('setGridState', 'hidden'); } else { $("#myGrid").jqGrid('setGridState', 'visible'); } }
- 使用Javascript从字符串中删除数字
- document.activeElement的jQuery替代方案
- 如何使用jQuery选择具有唯一文本内容的XML节点?
- jQuery检测Bootstrap 3状态
- dataTable fnUpdate具有新值的行
- 使用window.onbeforeunload事件中的window.event.keyCode在javascript中捕获f5 keypress事件始终为0而不是116
- Chart.js在饼图上显示标签
- 无法通过ajax将javascript对象传递给php
- KnockoutJS可排序组observableArray by field和conditionally sort