Как связать таблицу без (редактировать, удалять, создавать) в сетке MvC - PullRequest
0 голосов
/ 16 ноября 2010

я использовал сетку mvccontrib в MVC 2.0 Я хочу просто связать таблицу в виде сетки ... пока мое кодирование ... я не знаю, правильное это или неправильное ...

Homecontroller.cs:

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

Я также создал список для этого ....... Что такое кодирование, я должен написать в Index.aspx

Пока я использовал эту кодировку, она не работает ......

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

        }).Render(); 
 %>

показывает, что данных нет. Или есть другое кодирование?

Моя проблема только в том, что я хочу связать таблицу в сетке mvccontrib.

1 Ответ

0 голосов
/ 16 ноября 2010

Если он показывает, что данных нет, проблема в том, что 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)

Я также приглашаю вас ознакомиться с примером приложения MVC Я написал, который иллюстрирует эти концепции.

...