2011-01-31 17 views
0

jqGridの実装中です。ソート機能を使用したいと考えています。私は基本テーブルに関連する列を並べ替えるいくつかの問題にぶつかってきました。あなたは説明フィールドを見ることができるように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(""); 
} 

関連テーブル(「VWEPICORCATEGORY」)の一部であり、によって注文がLKTYPEを対象としています。ここでは

は、グリッドをロードするためのスクリプトです。私は、特定のフィールドをソートする方法や、複数のテーブルを使用してこのグリッドを実装するためのより良い方法、そしてソート機能について、正確に把握しようとしています。事前に

おかげで、 ビリー

答えて

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

Craig、あなたの正確な権利。ソートセクションを次のように変更する必要がありました: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

ブライアンをチェックします。ありがとう。 –

関連する問題