JqG​​rid取决于返回的记录数

时间:2016-08-09 13:30:27

标签: jqgrid

在服务器端,我实施了一个云系统

所以当JQGrid向rownumber 10的服务器发送请求时,我会有更多记录

例如,在beck-end中可能有3个服务器,

服务器1:返回10条记录

2:返回10条记录

3:返回7条记录。

所以所有记录都是27,但JqGrid只在一个页面中显示10个 并通过下一页向服务器发送另一个请求。

"一个好的JQGrid!必须知道2页寻呼请求中有3页不会通过第三次寻呼发送到服务器新请求将发送到服务器以获取接下来的10条记录"

我有一个像这样的JQGrid:

  $("#ExamGrid").jqGrid({
            url: '../Handlers/Study/StudySearch.ashx',
            editurl: '../Handlers/Study/StudySearch.ashx',
            datatype: 'json',
            beforeRequest: function () { 
            },
            postData: { 
            },
            //autowidth: true,  // set 'true' here
            //shrinkToFit: true,
            height: 'auto',
            autoencode: true,
            ignoreCase: true,
            forceFit: false,
            colModel: $.evalJSON(colModel), 
            loadError: function (xhr, st, err) {
            },
            onPaging: function () { 
            },
            resizeStop: function () {
                SaveColumns();
            },
            onSelectRow: function (rowid, status, e) {
                //   studyInstanceUID = rowid; 
            },
            multiselect: true,
            rowNum: 10,
            rowList: [10, 20, 30, 40],
            pager: '#UsersGridPager',
            page: parameters.PageIndex,
            gridview: true,
            sortname: 'Study Date',
            prmNames: { nd: null },
            hidegrid: false,
            sortable: false,
            jsonReader: { cell: "", search: "isSearch" },
            viewrecords: true,
            sortorder: 'desc',
            caption: 'Exam List',
            //viewsortcols: [true, 'vertical', false],
            gridComplete: function () {
            });

在服务器端:

 IExamServiceJoinable examClient;
        if (Global.IsCloudConfigured)
            examClient = new DispatcherClient("dispatcherEndPoint", Token, Global.Cluster);
        else
            examClient = new ExamClient("examEndPoint");
        TotalPatient = examClient.GetNumberOfStudies(criteria); //study.Count(authorityWhereClause, criteria, sm ?? new SearchMatching());
        Start = ((pageIndex * numberOfRows) - numberOfRows);
        TotalPage = TotalPatient / numberOfRows;
        List<Study_C> studies = examClient.FindStudies(Start, numberOfRows, col.FromText(sortColumnName), sort.FromText(sortOrder), criteria);

在正常情况下,当我从一个服务器获取记录时,一切都像魅力一样,但假设Global.IsCloudConfigured为真,那么可能有多个服务器和更多数据库到该服务从中获取记录,在这种情况下{{1}超过请求studies

现在有了以上场景我如何配置JQGrid在一个页面中加载所有这些或者更好的方式将被赞赏? 我怎样才能让聪明的JQGrid知道呢?

提前感谢。

更新 有一种非常低效的方法可以将遗骸记录添加到numberOfRows中的一个页面,当返回的记录很少时,它可以正常工作。

loadComplete

1 个答案:

答案 0 :(得分:0)

我希望我能正确理解你的问题。如果服务器(来自云服务器的任何人)只需要一次返回所有记录(27行数据)。您只需使用loadonce: true选项通知jqGrid根据服务器返回的数据填充本地data。它将允许使用本地分页,排序和过滤/搜索。

如果您使用我开发的free jqGrid分叉jqGrid,那么我建议您将forceClientSorting: true选项与loadonce: true结合使用。它允许在服务器返回的数据之前对其进行排序和过滤,然后再在网格中显示。