2012-01-27 7 views
3

devexpress gridviewのbindtoLINQ機能を使用すると、クライアントが見ているページではなくテーブルセット全体を照会します。DevExpress MVC GridView BindToLINQ()が多すぎるデータを選択する

IE。よくフォーマットされたグリッドが出てくるん

@Html.DevExpress().GridView(...).BindToLINQ("MyProject.Models.DBEntities", "myTable", (s, e) => { e.KeyExpression = "row_id"; }).GetHtml() 

:SQL Serverプロファイラを使用して、我々はそれだけではなく、意図した10

ビューのテーブルに20万の+行のすべての列を選択し、参照は次のようになりますクライアントサイドでは、テーブル内のデータセット全体を選択しているように見えるので、クライアントが実行するアクションのタイプはあまりにも貧弱です。ちょうど次のページに行くにはおよそかかります。 15秒。なぜgridviewはLIMITとpagerowを使って、クライアントから見える必要なデータだけを選択しませんか?テーブルの内容全体を選択した後、Linq SkipとTakeコマンドを使用するように見えます。

これは私がそれを試してみました別の方法ですが、それは同様に動作します。また

// the ActionResult function inside my controller: 
public ActionResult GridViewPartial() { 
    DBEntities dbEntities = new DBEntities(); 
    var myLinqQuery = from s in dbEntities.myTable select new { s.row_id, s.row_username }; 

    return PartialView("GridViewPartial", myLinqQuery); 
} 

// inside the Razor view: 
@model IQueryable 
@Html.DevExpress().GridView(...).BindToLINQ("", "", (s, e) => { e.KeyExpression = "row_id"; e.QueryableSource = Model; }).GetHtml() 

、代わりにBindToLINQのバインドを()(使用した)同じことん:データを

// inside the Razor view: 
@model IQueryable 
@Html.DevExpress().GridView(...).Bind(Model).GetHtml() 

答えて

4

取得しないでくださいコントローラー側に表示されます。

PartialView側にこの操作を行います。

public ActionResult GridViewPartial() { 
    return PartialView("GridViewPartial"); 
} 

@Html.DevExpress().GridView(...).BindToLINQ("", "", (s, e) => { 
    e.KeyExpression = "row_id"; 

    DBEntities dbEntities = new DBEntities(); 
    var myLinqQuery = from s in dbEntities.myTable select new { s.row_id, s.row_username }; 

    e.QueryableSource = myLinqQuery; 
}).GetHtml() 

GridViewPartialアクションのみPartialViewオブジェクトを返す必要があります

関連する問題