在分页页脚中,不是应该将0的页面[1]说成"0的页面[0]";如果没有找到记录? [英] In the Paging footer, aren't the Page [1 ] of 0 supposed to say "Page [0 ] of 0" if no record is found?

查看:86
本文介绍了在分页页脚中,不是应该将0的页面[1]说成"0的页面[0]";如果没有找到记录?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我注意到,如果没有记录要返回,那么分页页脚是否应该说"0之0"而不是"0之1"?

I noticed if there's no records to be returned then shouldn't the Paging footer say "0 of 0" instead of "1 of 0"??

此外,也不应该禁用分页"文本框.

Also, shouldn't the Paging textbox be disabled as well.

这是我发回jqGrid的JSON响应

This is the JSON response I sent back to jqGrid

{ "total":0, "page":0, "records":0, "rows":[] }

我正在使用jqGrid 4.5.0版

I'm using jqGrid version 4.5.0

谢谢...

P.S.下面的源代码...

P.S. Source Code below...

        $('#'+jqgridSpreadsheetId).jqGrid({
            url: '../websrvc/JqGrid.ashx',
            datatype: 'json',
            mtype: 'POST',
            postData: { WhichJqgridTemplate: '<%=JqqridTools.Template.MyInventory%>', WhichAction: '<%=JqqridTools.Action.Display%>', WebpageQuickQuoteSalePrice: '<%=postQuickQuoteSalePrice%>' },
            colNames: ['Id', 'Stock Number', 'VIN', 'Year', 'Make', 'Model', 'Trim', 'Mileage', 'Purchase Price', 'Stock Date', 'Repair Cost', 'Total Cost', 'Days In Inventory', 'Hidden-Inventory-Tracker-Location-Id', 'Inventory Tracker Location', 'Links'],  //Display Text in Column Header...
            colModel: [
                       //In this case, use "sorttype" property in "colModel" for it to work when "loadonce" is set to true...
                       //formatter doc --> "http://www.trirand.com/jqgridwiki/doku.php?id=wiki:predefined_formatter&s[]=cell&s[]=formatter"...
                       //formatter hyperlink --> Stackoverflow posting was said to use formatter's function declaration instead of formatter's "showlink" followed by "formatoptions"...
                       //                    --> (Old Link) - http://stackoverflow.com/questions/5010761/linking-from-a-column-value-in-jqgrid-to-a-new-page-using-get...
                       //                    --> (New Link) - http://stackoverflow.com/questions/14529358/jqgrid-need-hyperlink-need-to-capture-value-through-jquery/14537512#14537512...
                       //                    --> (New Link) - http://www.trirand.com/jqgridwiki/doku.php?id=wiki:custom_formatter...
                       //                    --> Reasons are --> 1) far simpiler to use formatter for reading/writing and 2) much quicker and better performance...
                       { name: 'Id', index: 'Id', sorttype: 'int', width: 0, align: 'left', hidden: true, hidedlg: true },  //"hidedlg" is use to hide the hidden column in "Column Chooser"...
                       { name: 'StockNumber', index: 'StockNumber', sorttype: 'text', width: 100, align: 'center', searchoptions: { sopt: ['eq', 'ne'] } },
                       { name: 'Vin', index: 'Vin', sorttype: 'text', width: 140, align: 'center', searchoptions: { sopt: ['eq', 'ne'] } },
                       { name: 'Year', index: 'Year', sorttype: 'int', width: 50, align: 'center', searchoptions: { sopt: ['eq', 'ne'] } },
                       { name: 'Make', index: 'Make', sorttype: 'text', width: 80, align: 'center', searchoptions: { sopt: ['eq', 'ne'] } },
                       { name: 'Model', index: 'Model', sorttype: 'text', width: 80, align: 'center', searchoptions: { sopt: ['eq', 'ne'] } },
                       { name: 'Trim', index: 'Trim', sorttype: 'text', width: 100, align: 'center', searchoptions: { sopt: ['eq', 'ne'] } },
                       { name: 'Mileage', index: 'Mileage', sorttype: 'int', width: 60, align: 'center', formatter: 'number', formatoptions: {decimalSeparator:'',thousandsSeparator:',',decimalPlaces:0,defaultValue:'0'} },
                       { name: 'PurchasePrice', index: 'PurchasePrice', sorttype: 'currency', width: 80, align: 'center', formatter: 'currency', formatoptions: {decimalSeparator:'.',thousandsSeparator:',',decimalPlaces:2,defaultValue:'0.00',prefix:'$',suffix:''} },
                       { name: 'StockDate', index: 'StockDate', sorttype: 'date', width: 90, align: 'center', formatter: 'date', formatoptions: { newformat: 'm/d/Y' } },  //"formatter" and "formatoptions" is required for date sorting to works properly...
                       { name: 'RepairCost', index: 'RepairCost', sorttype: 'currency', width: 80, align: 'center', formatter: 'currency', formatoptions: { decimalSeparator: '.', thousandsSeparator: ',', decimalPlaces: 2, defaultValue: '0.00', prefix: '$', suffix: '' } },
                       { name: 'TotalCost', index: 'TotalCost', sorttype: 'currency', width: 80, align: 'center', formatter: 'currency', formatoptions: { decimalSeparator: '.', thousandsSeparator: ',', decimalPlaces: 2, defaultValue: '0.00', prefix: '$', suffix: '' } },
                       { name: 'DaysInInventory', index: 'DaysInInventory', sorttype: 'int', width: 65, align: 'center', formatter: 'number', formatoptions: { decimalSeparator: '', thousandsSeparator: ',', decimalPlaces: 0, defaultValue: '1' } },
                       { name: 'InventoryTrackerLocationId', index: 'InventoryTrackerLocationId', sorttype: 'int', width: 0, align: 'left', hidden: true, hidedlg: true },  //"hidedlg" is use to hide the hidden column in "Column Chooser"...
                       { name: 'InventoryTrackerLocation', index: 'InventoryTrackerLocation', sorttype: 'text', width: 120, align: 'center', searchoptions: { sopt: ['eq', 'ne'] } },
                       //Links is not present in json data from the website, so we customize it here...
                       { name: 'Links', index: 'Links', sorttype: 'text', width: 80, align: 'center', formatter: function (cellValue, options, rowObject) { return "<span style='text-decoration:underline;cursor:pointer;'>Links</span>" }, search: false }  //"search" is use to hide the field in search dialog...
            ],
            beforeSelectRow: function (rowid, e) {
                //http://stackoverflow.com/questions/16592547/how-to-have-custom-formatter-built-in-function-to-call-a-non-jqgrid-seperate-fun
                //http://stackoverflow.com/questions/16592547/how-to-have-custom-formatter-built-in-function-to-call-a-non-jqgrid-seperate-fun
                //http://stackoverflow.com/questions/14529358/jqgrid-need-hyperlink-need-to-capture-value-through-jquery/14537512#14537512
                //http://stackoverflow.com/questions/13761222/how-to-fire-loadcomplete-after-new-row-is-added-in-jqgrid/13765086#13765086
                //To attached javascript function to a clickable "Links" cell...
                if (this.p.colModel[$.jgrid.getCellIndex($(e.target).closest("td")[0])].name === jqgridColumnNameLinks) {
                    jqgridPopupDialogLinkOptions(
                        $(this).getCell(rowid, jqgridColumnIdStockNumber),                //Use $(this) instead for less overhead - It's what Oleg at jqGrid said....
                        $(this).getCell(rowid, jqgridColumnIdVin),                        //Use $(this) instead for less overhead - It's what Oleg at jqGrid said....
                        $(this).getCell(rowid, jqgridColumnIdInventoryTrackerLocationId)  //Use $(this) instead for less overhead - It's what Oleg at jqGrid said....
                    );
                    return false;
                }
            },
            pager: '#'+jqgridPagerId,
            rowNum: 10,
            rowList: [5, 10, 20, 50],  //Drop-down selection in footer - To show how many rows per page...
            //This "sortname"/"sortorder" tag must be specified for "getGridParam"'s 'datatype'/'sortname'/'sortorder' (column sorting) to work.  (Some kind of jqGrid bug or feature which we need to hack to do a workaround with)...
            <%if(postQuickQuoteSalePrice.Length > 0) {%>
            sortname: 'TotalCost', sortorder: 'desc',  //When coming from Quick-Quote webpage...
            <%} else {%>
            sortname: 'StockDate', sortorder: 'desc',  //When coming from any webpages, especially the Product webpage...
            <%}%>
            viewrecords: true,
            //gridview: true,
            //imgpath: '',
            caption: 'My Inventory',
            width: 1022,
            shrinkToFit: false,
            height: 400,
            sortable: true,  /* This allows both 1) Moving columns sideway to other location fields and 2) for jqGrid Column Chooser Plugin / JQuery Multiselect Plugin to work... */
            grouping: true,  /* This allows row data to be group into row grouping... */
            loadonce: true,  //In this case, use "sorttype" property in "colModel" for it to work when "loadonce" is set to true...
            emptyrecords: "No records to display",
            loadError: function (xhr, st, err) {
                alert("An error had occurred, please try again or notify webmaster of this error");
            },
            loadComplete: function () {
                //http://stackoverflow.com/questions/16639339/how-do-i-get-a-column-to-be-sort-in-descending-order-upon-loading...                   
                //=========================================================================================
                // the code will be executed only at the first loading because jqGrid
                // changes datatype to "local" after the first loading if we use
                // loadonce option. We use setTimeout to allows jqGrid to make the first
                // loading till the end and reload it AFTER that
                //=========================================================================================
                var $self = $(this);  //This is needed as seperate objects to seperate itself from the binding jqGrid or $(this) objects for it to work.  It wouldn't work if binded to itself...
                if ($self.jqGrid('getGridParam', 'datatype') === 'json') {  //This the value when loading webpage then the value of "datatype" option will become "local" afterward...
                    //$self.getGridParam({ sortname: 'TotalCost', sortorder: 'desc' });  //When coming from Quick-Quote webpage...
                    //$self.getGridParam({ sortname: 'StockDate', sortorder: 'desc' });  //When coming from any webpages, especially the Product webpage...
                    //$(this).triggerHandler('reloadGrid', [{ sortname: 'Year', sortorder: 'desc' }]);
                    setTimeout(function () {
                        //$('#' + jqgridSpreadsheetId).triggerHandler('reloadGrid', [{ sortname: 'Year', sortorder: 'desc' }]);
                        $self.triggerHandler("reloadGrid");
                    }, 50);
                }
                //=========================================================================================
                jqgridSummarySpreadsheetDisplay();
            }
        });

这是使用Firefox firebug的快照.如您所见,json结果就是您要我执行的操作,请使用"page":"0"而不是"page":0.网页中的jqGrid显示为1而不是0.

Here's the snapshot using Firefox firebug. As you can see the json result is what you asked me to do, use "page":"0" instead of "page":0 . The jqGrid in the webpage showed 1 instead of 0.

推荐答案

我认为问题出在您应将page的整数值更改为 string 值:

You should change integer value of page to the string value:

{ "total":0, "page":"0", "records":0, "rows":[] }

{ "total":"0", "page":"0", "records":"0", "rows":[] }

大部分与文档.

更新:演示复制您的问题,并且另一个演示使用固定的JSON数据(而"page":"0" "page":0).您如何查看修复工作.

UPDATED: The demo reproduce your problem and another demo uses the fixed JSON data ("page":"0" instead of "page":0). How you can see the fix work.

更新2 :我现在看到问题在于使用loadonce: true.要解决此问题,可以使用

UPDATED 2: I see now that the problem is in usage of loadonce: true. To fix the problem one can use

localReader: {
    page: function (obj) {
        return obj.page !== undefined ? obj.page : "0";
    }
}

请参见更多演示.

更新3 :我发布了完整请求将解决问题.该修补程序已经合并到github上jqGrid的主要代码中(请参见此处).

UPDATED 3: I posted the full request which would fix the problems. The fix is already merged (see here) to the main code of jqGrid on the github.

这篇关于在分页页脚中,不是应该将0的页面[1]说成"0的页面[0]";如果没有找到记录?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆