2011-09-08 60 views
0

我在分頁WebGrid時遇到問題。本質上,我傳遞完整的數據,它的頁面確定。如果我一次只限制一個頁面的數據,那麼儘管事實上我已經傳入了rowCount,分頁控件也會消失。MVC 3 + WebGrid:分頁控件不顯示

爲什麼?

請參閱以下設置:

我有一個網格的定義如下:

@{ 
    ViewBag.Title = "Cuentas"; 
    var grid = new WebGrid(defaultSort: "AccountName", rowsPerPage: 30, canPage: true, 
     ajaxUpdateCallback: "updateGrid"); 
    grid.Bind(source: Model.Accounts, rowCount: Model.TotalRows); 
} 

隨着定義它的列如下:

<div id="grid"> 
    @grid.GetHtml(tableStyle:"grid",headerStyle:"head", alternatingRowStyle:"alt", htmlAttributes: new { id = "AccountsGrid"}, 
     columns: grid.Columns(grid.Column(header: "", format: (item) => Html.ActionLink("Editar", "Edit", new { id = item.AccountId })), 
           grid.Column(header: "", format: (item) => Html.ActionLink("Eliminar", "Delete", new { id = item.AccountId })), 
           grid.Column("AccountName",header:"Nombre"), 
           grid.Column("IsClient", header:"Cliente?"), 
           grid.Column("IsProvider", header:"Proveedor?"), 
           grid.Column("IsBank", header:"Banco o Caja?"), 
             grid.Column("Person", format: item => new HtmlString(item.Person == null ? "" : item.Person.Name), header: "Contacto"), 
             grid.Column("AccountsCostCentress", 
              format: item => new HtmlString(item.AccountsCostCentress == null ? 
              "" : item.AccountsCostCentress.Count.ToString()), header: "Actividades"))) 
</div> 

視圖模型,我用我的觀點定義如下:

public class AccountsListViewModel 
{ 
    public int PageSize { get; set; } 
    public int PageNumber { get; set; } 
    public IEnumerable<Account> Accounts { get; set; } 
    public int TotalRows {get;set;} 
} 

這表明我可以傳遞rowCount和IEnumerable Accounts。

可以說我有305行帳戶。如果我將PageSize設置爲30,那意味着我將有11頁數據(最後一頁將只有5條記錄)。如果帳戶擁有全部305條記錄,則網格將與分頁和全部一起工作。

如果賬戶僅持有相當於3頁30條記錄,例如,尋呼控制不顯示,即使TotalRows == 305

不能弄明白。你可以嗎?或者你知道我可能會看到的博客文章,主題或文章?

回答

0

對不起!回答了我自己的問題:

autoSortPage:從grid.Bind(...)方法中缺少false參數。

請參見下面的SO線程:

WebGrid paging