0
<script type="text/javascript">

$(document).ready(function () {
    var firstClick = true;
    $('.editor-date > input').datepicker();
    $('.getdata').click(function () {
        if (!firstClick) {
            $("#GridTable").trigger("reloadGrid");
        }
        else
        {
            firstClick = false;
            $('#GridTable').jqGrid({
                url: '<%= Url.Action("GetData", "Report") %>',
                datatype: 'json',
                mtype: 'POST',
                colNames: ['Log ID'],
                colModel: [{ name: 'LogID', index: 'MessageLogID', key: true, formatter: pointercursor }],
                multiselect: true,
                sortname: 'LogID',
                sortorder: "asc",
                viewrecords: true,
                pager: '#pager',
                rowNum: 20,
                rowList: [5, 10, 20, 50],
                postData: { 
                IdParam: function () 
                  { return $('#LogID').val(); } 
                },
                jsonReader: {
                    repeatitems: false,
                    id: 'LogID',
                    records: 'TotalRecords',
                    total: 'TotalPages',
                    page: 'CurrentPage',
                    root: 'Rows'
                },
                loadError: function (xhr, status, error) {
                    messageBox('Error', 'Error occurred loading data.');
                },
                height: 'auto',
                width: 'auto'
            });

        });
}   

Report Controller Method
         public ActionResult GetData(string sidx, string sord, int page, int rows, int IdParam){}

データベースから必要なデータのみをロードしようとしています...そのため、最初のページが表示されると、db から 20 行が取得されますメソッドをデバッグすると、メソッド呼び出しにデータが入ってくるのがわかりますが、グリッドは 2 ページ目に移動し、何も表示されません。つまり、グリッドに読み込みサインが表示され、最後のボタンでも何も起こらず、データは取得されませんが、ページャーでは合計 100 ページが表示され、次に進むことができますが、ページ番号のみです。増分 グリッドに表示されるデータがありません..助けをいただければ幸いです... Onpaging イベントについて読み込もうとしましたが、このシナリオでそれを実装する方法を理解できませんでした..

簡単な観察: データを取得して最初のページに表示する行数を 20 から 5 10 または 50 に変更すると、次のページが表示されないだけです...

コントローラーの方法:

     int pageSize = rows;
     int pageIndex = page - 1;
     int totalPages = 0;

     //call to the db using Entity FrameWork..
     var Log = SERVICE.GetData_sp(IdParam,sidx,sord,page,rows,total).ToList()
     var totalCount = Convert.ToInt32(total.Value); //converting because I am getting it as Output parameter from the Store-Proc in objet.parameter type.
    totalPages = (int)Math.Ceiling(totalCount / (float)pageSize);

JqGridData gridData = new JqGridData { CurrentPage = page, TotalPages = totalPages, TotalRecords = totalCount };//getting the correct values as I cross checked it by just exec the store-proc.
 //storing data in gridData obj from Log.  
    return Json(gridData);
4

1 に答える 1

0

上記のコントローラーメソッドは示していませんが、おそらく jqGrid がページングを処理するためのデータを構築していないと思います。

jqGridを構築して渡す必要があります

int totalRecords = queryOfData.Count();

その後、それを jSon 値としてグリッドに渡します。元

var jsonData = new
{
    total = (totalRecords + rows - 1) / rows,
    page = page,
    records = totalRecords,
    rows = (
    ......
于 2013-01-24T15:40:33.933 に答える