Gerando uma Grid com a WebGrid
Autor: Theo Alexandre Miliani | Publicado: 2012-05-23T05:02:00-07:00

Um Helper simplesmente perfeito é o WebGrid, e como nao achei nada decente na ionternet vou postar aqui minha visão sobre esse helper.
O WebGrid é um helper completo para grids, fornecendo paginação de varios tipos, de forma facil e rapida, organização (sort) em qualquer coluna, e isso tudo sem a menor complicação.
E caso o visual simples nao agrade ou nao seja exatamente o necessario no sentido de visualização, ainda assim vale a pena utilizar esse helper, ja que existem grids que se adaptam a qualquer &lt;table&gt; com zero de configuração.
Segue o codigo:

WebGrid Grid = new WebGrid(ViewBag.Listagem,selectionFieldName: "SelectedRow", rowsPerPage:10,canPage:true);
@Grid.GetHtml(
                         columns: 
                             Grid.Columns(
                             Grid.Column("Nome_Cidade", "Cidade", format: (item) =&gt; HttpUtility.HtmlDecode(item.Nome_Cidade)),
                             Grid.Column("Nome_Estado","Estado", format: (item) =&gt; HttpUtility.HtmlDecode(item.Nome_Estado)),
                             Grid.Column("Grupo_Nome","Nome do Grupo", format: (item) =&gt; HttpUtility.HtmlDecode(item.Grupo_Nome)),
                             Grid.Column("NUsuarios","Usuarios neste Grupo"),
                             Grid.Column("", header: "Ações", format: (item) =&gt; new HtmlString(
                                         Html.ActionLink("Editar", "EditGrupo", new { id = item.GrupoId }).ToString()   " | "    Html.ActionLink("Deletar", "DelGrupo", new { id = item.Usu_Gru_Cod }).ToString()
                                          )
                                       )
                            ),
                            firstText:"Primeiro",
                            previousText:"Anterior",
                            nextText:"Proximo",
                            lastText:"Ultimo",
                            mode:WebGridPagerModes.All
            )


Aqui eu coloquei uma consulta linq na ViewBag.Listagem que contem os campos Nome_Cidade, Nome_Estado, Grupo_Nome, e uma contagem de quantos usuários estao em cada grupo, NUsuarios

Em Grid.Columns, iniciei a configuração das colunas e a linkagem.
Aqui vale uma observação:

format: (item) =&gt; HttpUtility.HtmlDecode(item.Grupo_Nome)


acontece de as vezes pegarmos strings com o formato de html, mudando os acentos

dai nao reconhece na programação.

O HttpUtility.HtmlDecode serve exatamente para isso.

Procurei muito ate achar alguma referencia a isso.
e por fim temos o

Grid.Column("", header: "Ações", format: (item) =&gt; new HtmlString(Html.ActionLink("Editar", "EditGrupo", new { id = item.GrupoId }).ToString()   " | "    Html.ActionLink("Deletar", "DelGrupo", new { id = item.GrupoId  }).ToString())

Aqui é a coluna que eu coloquei os botões de ação para poder alterar cada registro separadamente

e por fim&nbsp; 

firstText:"Primeiro",
previousText:"Anterior",
nextText:"Proximo",
lastText:"Ultimo",
mode:WebGridPagerModes.All

firstText =&gt; texto do link que leva ao primeira página
previousText =&gt; texto do link que leva a página anterior
nextText =&gt; texto do link que leva a proxima página
lastText =&gt; texto do link que leva a ultima página
mode =&gt; o modo de mostragem dos links de paginação 
nesse exemplo foi feita uma paginação de 10 registros por página

e caso o proprio helper nao tenha sido o suficiente para ser usado devido a simplicidade ainda existem grids em jquery que deixam a grid estilizada com zero de configuração como a Flexigrid que basta adicionar o seguinte java:

$('.Grid').flexigrid();
&nbsp;onde .Grid é a classe da WebGrid.

Espero ter ajudado.
Ate a proxima!