Pergunta

Eu sou novo para MVC, e não estou seguindo como você faria paginação e classificação em uma grade. Eu estou acostumado a usar o controle asp.Net GridView com um ObjectDataSource apontada para objetos em nossa camada de negócios -. E, nesse caso, as ODS cuida de toda a paginação e ordenação usando os métodos que o nosso ORM gera sobre os objetos

Eu olhei usando o mesmo ORM com MVC - e as coisas funcionam bem lá - eu apenas loop thru as coleções para construir a tabela na página - mas sem os ODS para lidar com a paginação e classificação, eu sou confuso a respeito de como eu iria lidar com isso. Eu teria um controlador separado para a paginação e classificação?

Eu entendo que eu preciso fazer a minha própria - mas onde eu começo? Eu criei um CustomerController, e uma vista que exibe uma tabela de clientes que se parece com abaixo - e eu quero classificar colunas FirstName ou LastName. Meu modelo tem um método Sort () nele que vou dar uma expressão de cadeia tipo no formato que seria usado por um par GridView / ODS. Será que eu criar uma nova ação no meu CustomerController chamada Sort, e colocar um ActionLink no meu cabeçalho?

    <table>
    <tr>
        <th>
            First Name
        </th>
        <th>
            Last Name
        </th>
    </tr>
    <% foreach (var item in Model)
       { %>
    <tr>
        <td>
            <%= Html.Encode(item.FirstName) %>
        </td>
        <td>
            <%= Html.Encode(item.LastName) %>
        </td>
    </tr>
    <% } %>
</table>
Foi útil?

Solução

Seu pode usar o mesmo controlador, basta adicionar um parâmetro adicional e nomeá-la espécie. Em seguida, verifique no controlador o valor tipo tem, e classificar os dados com base nesse parâmetro.

Ou se você quer fazer as coisas no lado do cliente, você pode usar algo como tablesorter , um plugin para jQuery.

Outras dicas

hoje em dia MVC 3 agora tem um WebGrid fora da caixa. Eu sei que esta questão é de um tempo atrás, mas acabei nele quando se olha para algo sobre WebGrid. Então eu pensei que deve ter uma resposta mencionar o novo WebGrid.

Aqui estão algumas boas mensagens sobre como usá-lo:

http://www.dotnetcurry.com/ShowArticle.aspx?ID=615

http://cnug.co.in/blogs/shijuv/archive/2010/10/08/using-the-webgrid-helper-in-asp-net-mvc-3-beta aspx

http://www.nickharris.net/tag/webgrid/

Ele suporta classificação, paginação e também algumas coisas Ajax. Ele pode fazer muito para você já, mas você também pode especificar cada coluna separada separadamente.

Update:
Há também muitas bibliotecas JavaScript disponíveis que podem fazer a tabela para você. Eu pessoalmente gosto de usar DataTables . Você pode alimentá-lo uma tabela html existente gerado no servidor ou dar-lhe um ponto final onde ele pode recuperar os dados (todas ou apenas uma página).

Há muito mais, apenas o Google ao redor.

Com MVC você meio que tem que rolar sua própria classificação, paginação, etc. Gostaria de sugerir YUI DataTable ou algumas das outras JavaScript Grids lá fora.

Além disso, se você encontrar o seu próprio fazendo pesado Data Grid trabalho que você pode querer dar uma olhada em ASP.NET Dynamic Data, que é projetado especificamente para estes tipos de interações contra ORM.

Primeiro uso jQuery . jQuery é seu amigo. Em seguida, use este impressionante e provavelmente o melhor controle de grade para jQuery jqGrid .

Em seu CustomerController criar uma ação chamada CustomerData. Toda a interação com a rede deve apontar para essa ação.

aqui para toneladas de exemplos sobre como usar jqGrid.

Temos vindo a utilizar o controle do lado do cliente JqxGrid de JqWidgets e muito satisfeito com seu desempenho relacionado ao enorme número de registos, juntamente com o paging, a filtragem, a triagem embutido dentro. Aqui é um exemplo de ligação dentro ASP.Net MVC

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top