У меня чертовски много времени пытается отобразить мой jqGrid только когда записи возвращаются из моего веб-сервиса. Я не хочу, чтобы оно было свернуто так, чтобы вы видели только панель с заголовками, но если это лучшее, что я могу сделать, я полагаю, что я мог бы добавить содержательное сообщение в подпись. Тем не менее, я бы предпочел просто спрятать сетку и показать блок сообщений «No Records Found».
Я также предполагаю, что если худшее дошло до худшего, я мог бы решить этот вопрос Как отобразить информацию в jqGrid об отсутствии данных? (ссылка включена в качестве альтернативного возможного решения) для других).
Я пытался сделать .hide () внутри функции, используемой при загрузке данных из функции, и события GRIDCOMPLETE, но ни один из них не смог скрыть сетку. Я новичок в 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'
});
...
Спасибо за любую помощь, которую вы можете предоставить.
Я обнаружил, что это:
parseInt($("#grid").getGridParam("records"),10);
возвращает «NaN». Свойство records имеет значение null, если в сетке нет записей. Поэтому вы не можете привести его к числу и проверить, равно ли оно нулю.
Попробуйте использовать этот метод, чтобы скрыть jqGrid:
$("#someGridTableName").jqGrid("GridUnload");
Обязательно укажите:
jquery.jqGrid-x.x.x / src / grid.custom.js файл.
См. Этот пост , в котором больше говорится о вышеупомянутом методе. Или jqGrid wiki , где говорится об этом методе в разделе Add on Grid Methods
.
Еще один важный момент:
Избегайте использования обертки (см. post ) < div > теги на jqGrid, чтобы скрыть его, потому что его атрибут overflow: auto;
не будет работать, если вы попытаетесь сделать столбцы сетки вручную шире и превысить ширину div-оболочки.
Другими словами, jqGrid уже оснащен логикой для создания горизонтальной полосы прокрутки без помощи внешних элементов div.
Примечание: Проверено на IE8 & amp; 9
getchar()
возвраты NUL.
– ephemient
16.10.2019, 18:42
Достаточно не включать опцию «заголовок» в определение сетки. Протестировано с версией 5.0.1