2010-11-16 21 views
0

我在mvc 2.0中使用了mvccontrib網格 我想只綁定gridview中的表格...迄今爲止我的編碼是... 。我不沒有whther它是正確的還是錯誤的...如何在mvc contrib網格中不使用(編輯,刪除,創建)來綁定表格

Homecontroller.cs:

public ActionResult List(int? page) 
{ 
    using (ProductDataContext db = new ProductDataContext()) 
    { 
     ViewData["product"] = db.Products.ToList().AsPagination(page ?? 1, 10); 
     return View("product"); 
    } 
} 

我也cretaed該列表視圖....... 是什麼編碼我應該寫在Index.aspx

到目前爲止我用這個編碼它不工作......

<% Html.Grid((List<Product>)ViewData["product"]) 
    .Columns(column => 
     { 
      column.For(c => c.CategoryID); 
      column.For(c => c.SupplierID); 

     }).Render(); 
%> 

它顯示沒有可用的數據。還是有其他編碼?

我的問題是隻是我想在mvccontrib網格中綁定表。

回答

0

如果顯示沒有可用數據,問題是db.Products.ToList().AsPagination(page ?? 1, 10)只是返回沒有元素(空集合)。至於爲什麼會發生這種情況,根據您提供的信息是不可能的。這主要取決於這個ProductDataContext的執行情況以及數據存儲中的可用數據。

這是說,我會使用強類型的意見建議你:

public ActionResult List(int? page) 
{ 
    using (ProductDataContext db = new ProductDataContext()) 
    { 
     var products = db.Products.ToList().AsPagination(page ?? 1, 10); 
     return View("product", products); 
    } 
} 

所以你的觀點可以簡化爲:

<%@ Page 
    Language="C#" 
    Inherits="System.Web.Mvc.ViewPage<IEnumerable<AppName.Models.Product>>" %> 
<%@ Import Namespace="AppName.Models" %> 

<%= Html.Grid<Product>(Model) 
     .Columns(column => 
     { 
      column.For(c => c.CategoryID); 
      column.For(c => c.SupplierID); 
     }) 
%> 

通知的觀點是如何強類型到產品的集合。

平原,簡單,強類型。


UPDATE:

如這裏的註釋部分要求是增加編輯刪除鏈接到每一行的例子:

<%= Html.Grid<Product>(Model) 
     .Columns(column => 
     { 
      column.For("TableLinks").Named(""); 
      column.For(c => c.CategoryID); 
      column.For(c => c.SupplierID); 
     }) 
%> 

,並在TableLinks.ascx部分:

<%@ Control 
    Language="C#" 
    Inherits="System.Web.Mvc.ViewUserControl<AppName.Models.Product>" %> 
<%@ Import Namespace="AppName.Models" %> 

<td> 
    <%: Html.ActionLink<ProductsController>(c => c.Edit(Model.Id), "Edit") %> | 
    <% using (Html.BeginForm<ProductsController>(c => c.Destroy(Model.Id))) { %> 
     <%: Html.HttpMethodOverride(HttpVerbs.Delete) %> 
     <input type="submit" value="Delete" /> 
    <% } %> 
</td> 

這當然假定以下行爲出現在您的ProductsController:

public ActionResult Edit(int id) 
... 
[HttpDelete] 
public ActionResult Destroy(int id) 

我還請你檢出sample MVC application我寫這說明這些概念。

+0

這是如何回答他的問題的?當然,使用強類型視圖是一個好主意,但最終,你的代碼和他的代碼是否相同?如果您指定了產品列表以外的其他東西,則兩者都會崩潰。除此之外,你的代碼是否有區別(我只是沒有發現它)? – Alxandr 2010-11-16 12:19:10

+0

區別在於'Html.Grid((列表)ViewData [「產品」])和'Html.Grid (Model)'。使用ViewData是醜陋的,需要轉換並取決於控制器操作中使用的實際名稱。 – 2010-11-16 12:39:07

+0

可以發送一些示例編輯和刪除使用mvc貢獻網格請我新來這 – 2010-11-16 17:06:24

相關問題