1

誰かがこの問題で私を助けることができますか? jqgrid(4.4.0) があり、真のスクロールを実装したいと考えています。問題は、データ行を 1 回しかロードしない、つまり最初のページだけをロードすることです。そのため、スクロールしても他のページは取得されません。この問題を確認しましたが、まだ機能していません。

jqgrid は次のとおりです。

jQuery("#deptProjectsGrid").jqGrid({
        url: '@Url.Action("GetUserProjects", "TimesheetByWeek")',
        datatype: 'json',
        mtype: 'GET',
        colNames: ['Projekt', 'Oprettet af'],
        colModel: [
                    { name: 'project', index: 'project', sortable: true, align: 'left' },
                    { name: 'creator', index: 'creator', align: 'left' }
                  ],
        height: 300,
        width: 250,
        altRows: true,
        pager: '#pager1',
        scroll: 1,
        rowNum: 15,
        rownumbers: true,
        viewrecords: true,
        sortname: 'project',
        sortorder: 'desc',
        gridview: true,
        caption: "Projekter",
        onSelectRow: function (ids) {
            if (ids == null) {
                ids = 0;
                if ($taskgrid.jqGrid('getGridParam', 'records') > 0) {
                    $taskgrid.jqGrid('setGridParam', { url: '@Url.Action("GetProjectTasks", "TimesheetByWeek")/' + ids });
                    $taskgrid.jqGrid('setCaption', "No Tasks " + ids).trigger('reloadGrid');
                }
            } else {
                var data = $("#deptProjectsGrid").getRowData(ids);
                $taskgrid.jqGrid('setGridParam', { url: '@Url.Action("GetProjectTasks", "TimesheetByWeek")/' + ids });
                $taskgrid.jqGrid('setCaption', "Tasks for " + data.project).trigger('reloadGrid');
            }
        }
    });

コントローラーのアクションは次のようになります。

public JsonResult GetUserProjects(int page, int rows, string search, string sidx, string sord)
    {
        try
        {
            using (DanishEntities db = new DanishEntities()) 
            {

                int totalRecords = 0;
                var allProjectEntities = _projectRepository.GetProjectsPaged(page, rows, out totalRecords, db);
                var projects = Mapper.Map<List<Project>, List<ProjectModel>>(allProjectEntities);

                var totalPages = (int)Math.Ceiling(totalRecords / (float)rows);
                var jsonData = new
                {
                    total = rows,
                    page = page++,
                    records = totalRecords,
                    rows = (
                               from p in projects
                               select new
                               {
                                   id = p.ID,
                                   cell = new object[] { p.Name, "john doe" }
                               }).ToArray()
                };
                return Json(jsonData, JsonRequestBehavior.AllowGet);
            }
        }
        catch (Exception)
        {

            throw;
        }
    }

クエリは次のとおりです。

public List<Project> GetProjectsPaged(int page, int rows, out int totalCount, DanishEntities dbContext)
    {
        List<Project> pagedProjectEntities = new List<Project>();
        try
        {

            totalCount = dbContext.Projects.Count();
            pagedProjectEntities = dbContext.Projects
                    .OrderBy(p => p.ID)
                    .Skip((page-1) * rows)
                    .Take(rows)
                    .ToList();

        }
        catch (Exception)
        {
            throw;
        }

        return pagedProjectEntities;
    }

私はこれを理解しようとして人生の 4 時間を無駄にしましたが、問題がわかりません。コントローラーアクションで「total = totalPages」を設定しましたが、何も機能していません。助けてください!!jqGrid に関するもう 1 つの簡単な質問: jqGrid で "rowNum" を無効にして、データ セット内のクエリによって返されるすべての使用可能な行がグリッドに表示されるようにするにはどうすればよいですか?

4

0 に答える 0