2011-01-31 4 views
0

jqGrid를 구현하는 중이고 정렬 기능을 사용할 수 있기를 원합니다. 기본 테이블과 관련된 열을 정렬 할 때 몇 가지 문제가 있습니다. 당신이 설명 필드는 관련 테이블 ("VWEPICORCATEGORY")의 일부와 LKTYPE 대상으로하여 순서입니다 볼 수 있듯이MVC 2.0 - JqGrid 여러 테이블로 정렬

public JsonResult GetData(GridSettings grid) 
{ 
    try { 
     using (IWE dataContext = new IWE()) 
     { 
      var query = dataContext.LKTYPE.Include("VWEPICORCATEGORY").AsQueryable(); 

      ////sorting 
      query = query.OrderBy<LKTYPE>(grid.SortColumn, 
       grid.SortOrder); 


      //count 
      var count = query.Count(); 

      //paging 
      var data = query.Skip((grid.PageIndex - 1) * grid.PageSize).Take(grid.PageSize).ToArray(); 

      //converting in grid format 
      var result = new 
      { 
       total = (int)Math.Ceiling((double)count/grid.PageSize), 
       page = grid.PageIndex, 
       records = count, 
       rows = (from host in data 
         select new 
         { 
          TYPE_ID = host.TYPE_ID, 
          TYPE = host.TYPE, 
          CR_ACTIVE = host.CR_ACTIVE, 
          description = host.VWEPICORCATEGORY.description 
         }).ToArray() 
      }; 

      return Json(result, JsonRequestBehavior.AllowGet); 
     } 
    } 
    catch (Exception ex) 
    { 
     //send the error email 
     ExceptionPolicy.HandleException(ex, "Exception Policy"); 
    } 

    //have to return something if there is an issue 
    return Json(""); 
} 

: 여기

그리드를로드하는 스크립트입니다. 나는 특정 필드를 정렬하는 방법과 다중 테이블을 사용하여이 그리드를 구현하는 더 좋은 방법을 정확히 파악하고 기능을 정렬하는 방법을 파악하려고합니다. 사전에

감사합니다, 빌리

답변

1

잘못된 쿼리를 정렬하고 있습니다. Include() 당신에 투사 이후 예를 완전히 불필요하다고

 var query = from host in dataContext.LKTYPE 
        select new 
        { 
         TYPE_ID = host.TYPE_ID, 
         TYPE = host.TYPE, 
         CR_ACTIVE = host.CR_ACTIVE, 
         description = host.VWEPICORCATEGORY.description 
        }; 

     ////sorting 
     query = query.OrderBy(grid.SortColumn, 
      grid.SortOrder); 

     //count 
     var count = query.Count(); 

     //paging 
     var data = query.Skip((grid.PageIndex - 1) * grid.PageSize).Take(grid.PageSize).ToArray(); 

     //converting in grid format 
     var result = new 
     { 
      total = (int)Math.Ceiling((double)count/grid.PageSize), 
      page = grid.PageIndex, 
      records = count, 
      rows = data.ToArray() 
     }; 

참고 :

은 당신의 코드를 변경

.

+1

크레이그, 맞아. 정렬 섹션을 다음과 같이 변경해야합니다 : query = query.OrderBy (grid.SortColumn, grid.SortOrder); 당신의 도움을 주셔서 감사합니다. –

+0

좋은 지적. 결정된. –

1

은 내가 MVC와 매우 재사용 패턴으로있는 jqGrid의 페이징 기능을 정렬 압연 방법을 보여줍니다 내 블로그에 게시물을 가지고있다.

내 포스트는 여기에 있습니다 : http://www.journeymandeveloper.com/Home/View/4fae1468-3e08-46e0-9208-9e7104d7956b/Server-side%20Paging%20and%20Sorting%20with%20jqGrid

그것은 당신이 액션 메소드에 매개 변수로 받아 클래스를 포함하고 당신을 위해 모든 작업을 수행합니다. 결과를 원할 때 IQueryable 만 제공하면됩니다.

+0

브라이언을 확인할 것입니다. 감사. –