【问题标题】:How To Do Paging In MVC DOT NET?如何在 MVC DOT NET 中进行分页?
【发布时间】:2020-04-04 09:58:05
【问题描述】:

我有一个模块可以显示后端的所有记录,但问题是记录太多了,它在屏幕上显示 22k 条记录并且屏幕会变慢,并且所有组件工作缓慢,所以我必须在 MVC 中进行分页。

控制器

    public string TrafficMovement(string formData)
    {
        try
        {
            formData = HttpUtility.HtmlDecode(formData);
            ReportsAC _obj = new ReportsAC();
            DataSet dataset = new DataSet();
            ReportsMapper mapper = JsonConvert.DeserializeObject<ReportsMapper>(formData);
            UserSession userSession = (UserSession)Session["userSession"];

            mapper.Company_Id = userSession.Company_Id;

            dataset = _obj.TrafficMovementAC(mapper);


            return "{\"Status\":true , \"Message\":\"success\" ,\"Data\": " + JsonConvert.SerializeObject(dataset) + "}";
        }
        catch (Exception ex)
        {

            return "{\"Status\":false , \"Message\":\"" + ex.Message.ToString() + "\"}";
        }
    }

jQuery

函数 Traffic_Movement() {

try {

    var url = "/Reports/TrafficMovement";
    var dataString = {};
    ShowLoader();
    //dataString.Report_Period = $("#Report_Period").val();

    dataString.tfMonth = $("#tffMonth").val();
    dataString.tfYear = $("#tffYear").val();

    AjaxSubmission(dataString, url, $('input[name=__RequestVerificationToken]').val()).done(function (data) {

        if (data.Message == "success") {

            var strHTML = '';
            var strVAL = '';



            if (("#tfbdy") != undefined) {
                $('#count_data').html("TOTAL RECORDS: " + data.Data.Table.length);
               // $("#trBody").html("<tr><td colspan='15'></td></tr>");

            }

            if (data.Data.Table != undefined && data.Data.Table.length > 0) {


                for (var i = 0; i < data.Data.Table.length; i++) {


                   //here i m doing binding work
                }

                $("#tfbdy").html(strHTML);

      }


                 }



                       HideLoader();


 }).fail(function (result) {
        //console.log(result.Message);
        HideLoader();
    });

} catch (e) {
    console.log(e.message);
    HideLoader();
}

    }

组件

public DataSet TrafficMovementAC(ReportsMapper mapper)
    {
        try
        {
            SqlParameter[] sqlParameter = new SqlParameter[6];
            sqlParameter[0] = new SqlParameter("@Company_Id", mapper.Company_Id);
            sqlParameter[1] = new SqlParameter("@Branch_Id", mapper.Branch_Id);
            sqlParameter[2] = new SqlParameter("@User_Id", mapper.User_Id);
            sqlParameter[3] = new SqlParameter("@FY_ID", mapper.FY_Id);
            //sqlParameter[4] = new SqlParameter("@Report_Period", mapper.Report_Period );
            sqlParameter[4] = new SqlParameter("@tfMonth", mapper.tfMonth);
            sqlParameter[5] = new SqlParameter("@tfYear", mapper.tfYear);


            dataAccess.ExecuteSelectQueryWithDataSet("SKYBOOKS_TRAFFIC_MOVEMENT_LIST", sqlParameter, out dataSet);
            return dataSet;
        }

        catch
        {
            throw;
        }



    }

如果有人建议我分页想法,那将意味着很多,提前致谢。

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-4 asp.net-mvc-3


    【解决方案1】:

    在控制器方法中添加 pageNo 和 pageSize 参数。如果预计不会更改,则缓存最初获取的整个数据。 然后在每个请求中,增加 thr pageNo 并仅返回相应的页面。

    伪代码

    StartIndex = (pageNo x 页数) 数据 = 来自 StartIndex,StartIndex + pageCount 返回 dt.rows

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-01
      • 2013-09-18
      • 2010-12-17
      • 2017-11-05
      • 1970-01-01
      • 2016-10-11
      • 2020-12-22
      • 1970-01-01
      相关资源
      最近更新 更多