0

私の JqGrid はコントローラーからデータをロードしますが、リスト ページャーは表示されません。

この場合、LINQ のクエリは 15 行を返しますが、10 行しか表示されず、2 ページ目に移動して最後の 5 行を表示することはできません。

私は何を間違っていますか?? 誰か助けてくれませんか?

意見

        <script type="text/javascript">
            jQuery(document).ready(function () {
                jQuery("#list2").jqGrid({
                    url: '@(Url.Action("GetMet", "Meta"))',
                    datatype: "json",
                    data: "a",
                    colNames: ['Id', 'Nome da Loja', 'Mês', 'Ano', 'Meta Monetária', 'Meta Seguro', 'Meta Ticket Médio'],
                    colModel: [{ name: 'id', index: 'id', width: 20 },
                        { name: 'nome', index: 'nome', width: 120, search: true, stype: 'text' },
                        { name: 'mes', index: 'mes', width: 40 },
                        { name: 'ano', index: 'ano', width: 40 },
                        { name: 'metamonetaria', index: 'metamonetaria', width: 90 },
                        { name: 'metaseguro', index: 'metaseguro', width: 90 },
                        { name: 'metaticketmedio', index: 'metaticketmedio', width: 110 }],
                    rowNum: 10,
                    rowList: [10, 20, 30],
                    pager: '#pager2',
                    sortname: 'nome',
                    viewrecords: true,
                    sortorder: "desc",
                    caption: 'Metas referente a loja selecionada',
                    height: 240,
                    ondblClickRow: function (id) { $("#FUNCIONARIO").val(id); }
                });

                jQuery("#list2").jqGrid('navGrid', '#pager2', { edit: false, add: false, del: false });

コントローラ

public JsonResult GetMet(int page = 1, int rows = 10, string sord = "asc", string sidx = "Id")
        {
            var db = new DataContext().GetGenericRepository();
            var totalFunc = db.GetAll<Funcionarios>().Count();
            decimal totalPages = 0;
            if (totalFunc > 0)
            {
                totalPages = totalFunc / rows;
                totalPages = System.Math.Round(totalPages);
            }
            else
            {
                totalPages = 0;
            }
            if (page > totalPages)
            {
                page = Convert.ToInt32(totalPages);
            }

            var result = new
            {
                total = totalPages,
                page = page,
                records = totalFunc,
                rows = (from metas in db.GetAll<Metas>()
                        select new
                        {
                            id = metas.METAID,
                            metamonetaria = metas.METAMONETARIA,
                            metaseguro = metas.METASEGURO,
                            metaticketmedio = metas.METATICKETMEDIO,
                            mes = metas.MES,
                            ano = metas.ANO,
                            nome = (from lojas in db.GetAll<Lojas>()
                                   where lojas.LOJAID == metas.LOJAID
                                   select lojas.NOME).First()



                        }).ToArray()
            };


            return Json(result, JsonRequestBehavior.AllowGet);
4

1 に答える 1

2

あなたのtotalPages計算は間違っています。まず、rowsandtotalFuncは整数であるため、操作は次のとおりです。

totalPages = totalFunc / rows;

totalPages小数であっても整数除算です。あなたの場合、結果は1です。

また、Math.Round()1.4 (14 行でページサイズが 10 の場合) を 1 に変更する (そして 2 にしたい) ため、適切ではありません。

この計算を次のように変更する必要があります。

int totalPages = 0;
if (totalFunc > 0)
    totalPages = (int)Math.Ceiling((decimal)totalFunc / (decimal)rows);
else
    totalPages = 0;
于 2013-11-07T12:12:38.673 に答える