2010-12-14 3 views
2

最新のRC2バージョンのMVC3を使用しています。MVC 3 RC2 Webgridの悪夢、誰でもページングが正しく機能していますか?

私はwebgridを持っていて、特にページングとソートに私にひどい問題を与えています。 私はページングがより効率的で、テーブル全体を取り戻すのではなく、表示しているページに必要な行だけを取り戻すべきだと言われました。これは私が望む(非常に遅い)ので動作していないので、最も単純な形式にしてプロファイラを起動しました。

SELECT 
[Extent1].[ID] AS [ID], 
[Extent1].[UserID] AS [UserID], 
[Extent1].[HasAgreed] AS [HasAgreed], 
[Extent1].[Comment] AS [Comment], 
[Extent1].[DateResponded] AS [DateResponded] 
FROM [dbo].[DecisionResults] AS [Extent1] 
11回を - プロファイラ上で実行するために、これを引き起こしている

@model IEnumerable<DecisionPanel.Web.Models.DataModel.Decision> 

@{ 
    ViewBag.Title = "TestGrid"; 
    var usersGrid = new WebGrid(source: Model, rowsPerPage: 50); 
} 

<h2>TestGrid</h2> 

@usersGrid.GetHtml(
     tableStyle: "grid", 
     headerStyle: "header", 
     alternatingRowStyle: "alt", 
     rowStyle: "row", 
       columns: usersGrid.Columns(
         usersGrid.Column("UserID", "User Id"), 
         usersGrid.Column("HasAgreed", "Has Agreed?"), 
         usersGrid.Column("Comment"), 
         usersGrid.Column("DateResponded", "Date of Response", format: @<text>@item.DateResponded.ToString("dd MMM yyy (HH:mm.ss)")</text>) 
     ) 
    ) 

ページ打つ:

public ActionResult TestGrid() 
    { 
     return View(ents.Decisions); 
    } 

そして、このビュー:

私はこれのActionResultを持っています

私はいくつかの他の問題を抱えていますが、私もこのwを得ることができない場合私はwebgridを放棄することを検討しています。

私はそれが一週間のうちに外出していることは知っていますが、他の誰かがページングを使って喜んでいましたか?

答えて

1

に似たページャを指定するべきではありませんデータベース側のページングこれを解決するため、RTMについて検討します。今のところ、手動​​でページングを行う必要があります。申し訳ありません。

+0

よく知っていて、多くのありがとう。 – 4imble

+0

これはRTMで修正されていますか? – jesperlind

+0

@jesperlindいいえ、残念ながら、これはRTMのために修正されていません – marcind

0

は、私はそれがスマートにそのサポートのIQueryableデータを処理しないMVC3 RC2での出荷などのWebGridの問題があることを確認することができますが、この時点で

@usersGrid.Pager(WebGridPagerModes.NextPrevious) 
+0

私はMVC Contribのグリッドだと思います。 – 4imble

0

IQueryablesはまだサポートされていません。私の見解では

public ActionResult Index(int page = 1, int pageSize = 2, string sort = null, string sortDir = "ASC") 
    { 
     return View(new PagedList<Something>(page-1, pageSize, sort, sortDir, Client.RetrieveAll<Something>())); 
    } 

:私はPagedListクラス

public class PagedList<T> : List<T> 
{ 
    int _pageNr; 
    int _pageSize; 
    string _orderByCol; 
    bool _asc; 
    IQueryable<T> _query; 

    public PagedList(int pageNumber, int pageSize, string orderBy, string direction, IQueryable<T> list) 
    { 
     var query = list; 
     _query = list; 
     if (!string.IsNullOrEmpty(orderBy)) 
     { 
      if (!string.IsNullOrEmpty(direction)) 
      { 
       orderBy = orderBy + " " + direction; 
      } 

      query = query.OrderBy(orderBy); 
     } 
     query = query.Skip(pageNumber * pageSize).Take(pageSize); 
     this.AddRange(query.ToList()); 
    } 

    public int Count 
    { 
     get { 
      return _query.Count(); 
     } 
    } 
} 

コントローラコードを使用して、その周りに働いた

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> 
    <div> 
    <% 

     var grid = new WebGrid(rowsPerPage: 2); 
     grid.Bind(
      Model, 
      autoSortAndPage: false, 
      rowCount: Model.Count 
      ); 
     %> 
    <%: 
     grid.GetHtml() 
    %> 
    </div> 
</asp:Content> 
関連する問題