Jqgrid显示第1页的0为空 [英] Jqgrid showing page 1 of 0 on empty
问题描述
我有一个问题,当网格为空时,为什么显示Page 1 of 0
不能为Page 1 of 1
或更合理?
I have a question, when the grid is empty why does it show Page 1 of 0
can't it be Page 1 of 1
or something more reasonable?
我的代码
var xml=client.responseText;
var xmlDoc = $.parseXML(xml);
var $xml = $(xml);
xml=xml.replace(/<productId>1/g, "<productId>"+productMap['1']);
xml=xml.replace(/<productId>2/g, "<productId>"+productMap['2']);
xml=xml.replace(/<productId>3/g, "<productId>"+productMap['3']);
$('#configDiv').empty();
$('#configDiv').html( '<div id="configDetailsGrid" width="100%"><table id="list1" width="100%"></table><div id="gridpager"></div></div>');
//var grid = jQuery("#list1");
//var iconAlert;
var getColumnIndexByName = function (grid, columnName) {
var cm = grid.jqGrid('getGridParam', 'colModel'), i = 0, l = cm.length;
for (; i < l; i += 1) {
if (cm[i].name === columnName) {
return i; // return the index
}
}
return -1;
},
grid = jQuery("#list1"),
iconAlert = '<span class="ui-state-error" style="border:0"><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span></span>';
grid.jqGrid({
datastr : xml,
datatype: 'xmlstring',
//datatype: 'clientside',
colNames:['cfgId','Name', 'Host','Operating System', 'Description','Product', 'Type', 'Last Updated Time','Last Updated By','',''],
colModel:[
{name:'cfgId',index:'cfgId', width:90, align:"left", hidden:true},
//{name:'updateDate',index:'updateDate', width:12, align:'center', /*formatter: oldConfigurationWarning*/ },
{name:'cfgName',index:'cfgName', width:70, align:"left", formatter: 'showlink', formatoptions: {baseLinkUrl: '#'} },
{name:'hostname',index:'hostname', width:70, align:"left"},
{name:'osname',index:'osname', width:90, align:"left"},
{name:'cfgDesc',index:'cfgDesc', width:90, align:"left"},
{name:'productId',index:'productId', width:40, align:"left"},
{name:'cfgType',index:'cfgType', width:50, align:"left"},
{name:'updateDate',index:'updateDate',sorttype:'Date', width:120, align:"left"},
{name:'emailAddress',index:'emailAddress', width:120, align:"left"},
{name:'absolutePath',index:'absolutePath', width:90, align:"left", hidden:true},
{name:'fileName',index:'fileName', width:90, align:"left", hidden:true}
],
pager : '#gridpager',
rowNum:1000,
rowList:[10,50,100],
scrollOffset:0,
height: 'auto',
emptyrecords: 'No configurations loaded',
autowidth:true,
viewrecords: true,
gridview: true,
multiselect: true,
xmlReader: {
root : "list",
row: "Response",
userdata: "userdata",
repeatitems: false
},
loadComplete: function () {
var count = grid.jqGrid('getGridParam');
var ts = grid[0];
if (ts.p.reccount === 0) {
grid.hide();
emptyMsgDiv.show();
} else {
grid.show();
emptyMsgDiv.hide();
}
//for showlink and icon alert having date difference more than 90 days
var iRow, row, trClasses, $cell,
icfgName = getColumnIndexByName(grid, 'cfgName'),
iupdateDate = getColumnIndexByName(grid, 'updateDate'),
mygrid = grid[0],
rows = mygrid.rows,
cRows = rows.length,
myLink = function (e) {
var $td = $(e.target).closest('td'),
text = $td.text(),
$tr = $td.closest('tr'),
rowid = $tr[0].id;
goToViewAllPage(rowid);
};
for (iRow = 0; iRow < cRows; iRow += 1) {
row = rows[iRow]; // row.id is the rowid
trClasses = row.className.split(' ');
if ($.inArray('jqgrow', trClasses) > 0) {
// the row is a standard row (only if subGrid:true are used)
var cellvalue1,firstDate,secondDate;
$cell = $(row.cells[icfgName]);
cellvalue1=$(row.cells[iupdateDate]).text();
firstDate = new Date();
//console.info(cellvalue1+", "+cellvalue1.length);
//var cellvalue1="08-18-2011 11:49:01";
if(cellvalue1.length>25)
{
secondDate=new Date();
//secondDate = secondDate.substring(0, secondDate.length-3);
if(diffOf2Dates(firstDate,secondDate,true)>=expireCondition)
{
$cell.prepend(iconAlert);
}
$cell.click(myLink);
}
else
{
secondDate = cellvalue1.substring(0, cellvalue1.length-6);
if(diffOf2Dates(firstDate,secondDate,false)>=expireCondition)
{
$cell.prepend(iconAlert);
}
$cell.click(myLink);
}
}
}
},
onSelectRow: function(id,status){
}
});
grid.jqGrid('navGrid','#gridpager',{edit:false,add:false,del:false});
var myGrid = $("#list1");
$("#cb_"+myGrid[0].id).hide();
// place div with empty message insde of bdiv
emptyMsgDiv.insertAfter(grid.parent());
//$("#list1").setGridParam({rowNum:10});
//$("#list1").trigger("reloadGrid");
$("#list1").setGridParam({rowNum:10}).trigger("reloadGrid");
$("#list1").sortGrid('updateDate', false, 'desc');
我的Xmldata(如果为空)
My Xmldata (when empty)
<Response>
<isSuccess>true</isSuccess>
<operation>viewall</operation>
<message>No configurations loaded</message>
</Response>
更新
我进行了相应的更新,但仍然没有运气,我仍然得到相同的旧Page 1 of 0
I updated accordingly but no still no luck, I still get the same old Page 1 of 0
xmlReader: {
/*root : "list",
row: "Response",*/
root:"Response",
row:"list",
userdata: "userdata",
repeatitems: false
},
我的 jquery.jqGrid.min.js 文件更改
if(locdata) {
ts.p.records = gl;
//Change after 1 of 0 (Oleg)ts.p.lastpage = Math.ceil(gl/ rn);
ts.p.lastpage = Math.max(ts.p.page,Math.ceil(gl/ rn)); //line no 1181
}
我的回应
<Response>
<isSuccess>true</isSuccess>
<operation>viewall</operation>
<message>No configurations loaded</message>
</Response>
更新,有用的东西
如果我们重新加载网格,它也可以解决问题
If we reload the grid it solves the problem too
jQuery("#list1").setGridParam({rowNum:10}).trigger("reloadGrid");
推荐答案
我看不到XML数据对应于您使用的xmlReader
.可能应该切换root
和row
属性的值:
I don't see that the XML data corresponds to xmlReader
which you use. Probably you should switch the values of root
and row
properties:
xmlReader: {
root : "list",
row: "Response",
userdata: "userdata",
repeatitems: false
}
此外,输入XML数据不包含page
,total
和records
属性.如果将任何其他datatype
用作'xml'
或'xmlstring'
,则可以将page
,total
和records
定义为jsonReader
内部的函数. xmlReader
参数不支持.
Additionally the input XML data contain no page
, total
and records
properties. In case of usage of any other datatype
as 'xml'
or 'xmlstring'
you can define page
, total
and records
as functions inside of jsonReader
. The xmlReader
parameter don't support it.
当前您未定义page
,total
和records
属性.因此,将使用默认值:page: "rows>page"
,total: "rows>total"
,records: "rows>records"
.
Currently you don't define page
, total
and records
properties. So the default values are used: page: "rows>page"
, total: "rows>total"
, records: "rows>records"
.
我在错误报告仍未在jqGrid 4.2.0的代码中修复.因此,在应用此修复程序之前,您当前的数据将显示为"NaN 1".
The bug which I described in the answer and in the bug report is still not fixed in the code of jqGrid 4.2.0. So your current data will display "1 of NaN" before you apply the fix.
After all you can consider to change the line 1193 of the jqGrid code
ts.p.lastpage = Math.ceil(gl/ rn);
在lastpage
中具有其他值.
已更新:我建议您将jqGrid代码的行ts.p.lastpage = Math.ceil(gl/ rn);
修改为ts.p.lastpage = Math.max(ts.p.page,Math.ceil(gl/ rn));
.
UPDATED: I suggest that you modify the line ts.p.lastpage = Math.ceil(gl/ rn);
of the jqGrid code to ts.p.lastpage = Math.max(ts.p.page,Math.ceil(gl/ rn));
.
如果您的输入数据不包含任何<page>
元素,或者如果该数据包含<Response><page>1</page>...
,您将看到1 of 1
.如果您的XML数据包含<Response><page>0</page>...
,您将看到0 of 0
.
In the case if your input data will contain no <page>
element or if it contains <Response><page>1</page>...
you will see 1 of 1
. If your XML data will contain <Response><page>0</page>...
you will see 0 of 0
.
这篇关于Jqgrid显示第1页的0为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!