모델 JQuery 데이터 테이블로 바인드 된 총 행 가져 오기

asp.net c# dapper datatable jquery

문제

결과의 전체 행을 얻고 데이터 테이블 검색 작업을 수행하는 방법은 무엇입니까? 지금 당장은 이미 필터링 된 결과의 첫 번째 페이지 만 얻었습니다.

OFFSET AND FETCH

모델에 바인딩 될 것이며 첫 번째 페이지의 결과를 얻을 수 있습니다.

MyModel.Count()

사용중인 코드는 다음과 같습니다.

DataAccess.cs :

public IEnumerable<MemberRepository> RetrieveData(MemberRepository repository)
    {
            string query = "SELECT * FROM [Member] AS m"
                + " WITH (NOLOCK) INNER JOIN [MemberStatus] AS ms WITH (NOLOCK) ON m.[Status] = ms.[StatusIdentity] INNER JOIN [MemberAccount] AS ma WITH (NOLOCK) ON m.[Account] = ma.[AccountIdentity]"
                + " WHERE m.[GroupAccount] = 'Group' ORDER BY m.[Name] ASC OFFSET (0) * 10 ROWS FETCH NEXT 10 ROWS ONLY";

            return Find<MemberRepository>(query, repository);
    }

private IEnumerable<T> Find<T>(string query, T models)
    {
        using (IDbConnection conn = new SqlConnection(connectionString))
        {
            conn.Open();

            return conn.Query<T>(query, models);
        }
    }

그리고 나는 아래와 같이 접근한다.

Retrieve.ashx

public int sEcho { get; set; }
            public string sSearch { get; set; }
            public int recordsTotal { get; set; }
            public int recordsFiltered { get; set; }
            public int iTotalRecords { get; set; }
            public int iTotalDisplayRecords { get; set; }
            public IList<string[]> aaData;

            public void SetResponse(int echo, string search, int records, int totalRecords, List<string[]> aaData)
            {
                this.sEcho = echo;
                this.sSearch = search;
                this.recordsTotal = records;
                this.recordsFiltered = records;
                this.iTotalRecords = totalRecords;
                this.iTotalDisplayRecords = totalRecords;
                this.aaData = aaData;
            }

public override void ProcessRequest(HttpContext context)
   { 
        base.ProcessRequest(context);

        MemberRepository models = new MemberRepository();

        DataAccess access = new DataAccess();

        IEnumerable<MemberRepository> MemberLists = access.RetrieveData(models);

        List<string[]> aaData = repository.Select(r => new[]
            {
                r.Name
            }).ToList();

        SetResponse(echo, string.Empty, models.Count(), models.Count(), aaData);
   }

Retrieve.aspx :

$("#myTable").DataTable({
            bProcessing: true,
            bServerSide: true,
            iDisplayLength: 10,
            sAjaxSource: "../Retrieve.ashx",
            fnServerData: function (sSource, aoData, fnCallback) {

                $.ajax({
                    type: "POST",
                    data: aoData,
                    url: sSource,
                    dataType: "json",
                    success: function (msg) {
                        fnCallback(msg);
                    }
                });
            }

전체 기록을 위해 무엇을 대체해야합니까? 지금은 페이지 매김을 위해 차단 된 후 전체 레코드와 똑같습니다.

당신의 대답은 많이 감사합니다.

고맙습니다.

인기 답변

응용 프로그램 서버에서 데이터베이스 서버로 두 개의 요청을해야합니다. 첫 번째는 이미 가지고있는 요청이고 두 번째는 필터에 해당하는 레코드 수를 반환하는 쿼리 여야하지만 하위 집합 만 수집하지는 않습니다. 시각화. 그 이유는 모든 행을 메모리에로드하지 않아야한다는 것입니다. 거대한 낭비가 될 수 있으므로 부분 집합 만로드하기 때문입니다. 그러나 부분 집합 만로드하므로 하위 집합 만 있기 때문에 모든 요소의 수를로드 할 수 없습니다. 따라서 데이터 테이블에 대한 열을 포함하는 쿼리와 개수에 대한 쿼리가 필요합니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow