juil

18

Asp.Net Web Page (Razor) : le WebGrid

Posted by : oalessandri | On : 18 juillet 2011

Commençons par la requête et le remplissage du WebGrid

var data = db.Query(selectQueryString, id);
var grid = new WebGrid(source: data, rowsPerPage: 50);

  • selectQueryString : c’est la requête dont le résultat chargera les données dans le WebGrid
  • id : est un identifiant utilisé comme paramètre dans la requête
  • data : est la variable contenant une liste d’objet résultant @item dans le Webgrid permet d’accès au propriété de chaque ligne (colonne)
  • rowsPerPage : autorise le multi page c’est donc automatique. cela créé des liens de page en page. Ici 50 lignes par page.
  • Voii le helper pour construire la grille :

    1:     @grid.GetHtml(
    2:      tableStyle: « webgrid »,
    3:      headerStyle: « webgrid-header »,
    4:      footerStyle: « webgrid-footer »,
    5:      rowStyle: « webgrid-rows »,
    6:      alternatingRowStyle: « webgrid-alternating-rows »,
    7:      columns: grid.Columns(
    8:    grid.Column(format: @<a href= »@Href(« ~/Private/Edit », item.ID) »
    title= »Editer la fiche »>
    9:                     <img src= »@Href(« ~/images/icons/user_edit.png ») »
    alt= »Editer la fiche » />
    10:                              </a>),
    11:     grid.Column(«  », «  », @<text>@if (item.C_LOGO_VIG != «  »)
    12:     {
    13:          <a href= »@Href(« ~/Private/Edit », item.ID) »
    14:          title= »@item.C_SOCIETE »>
    15:          <img
    src= »../d/@item.C_ABRE/@item.VIG.Replace(« zoom », « vig ») »
    16:                  alt= »@item.C_SOCIETE » />
    17:          </a>
    18:     }</text>),
    19:    grid.Column(« Société », « Société », format:  @<i>@item.SOCIETE</i>),
    20:    grid.Column(« Nom », « Nom », format: @<i>@item.NOM</i>),
    21:    grid.Column(« Prénom », « Prénom », format: @<i>@item.PRENOM</i>),
    22:    grid.Column(« Code postal », « Code postal »,
    format: @<i>@item.CODEPOSTAL</i>),
    23:    grid.Column(« Ville », format: @<i>@item.VILLE</i>),
    24:    grid.Column(« Revendeur », format: @<i>@item.SOCIETE</i>),
    25:    grid.Column(« Rubrique », format: @<i>@item.RLIBELLE</i>),
    26:    grid.Column(« Département », format: @<i>@item.DLIBELLE</i>),
    27:    grid.Column(
    format:
    @<a href= »@Href(« ~/Private/Del », item.ID) »
    title= »Supprimer »>
    <img src= »@Href(« ~/images//user_delete.png ») »
    alt= »Supprimer » />
    </a>)
    28:   )
    29:  )

    Le résultat de ce WebGrid

    image

     

    Cela parait un peu rebutant de prime à bord mais vous allez voir que tout s’explique :

  • columns: défini la liste des colonnes de la grille
  • grid.Column : ceci défini la colonne –> Société, Nom, Prénom, …
  • on peut ajouter tout type de code html, des liens, des images mais aussi des variables en provenance de liste d’objets pour afficher des données dynamiques (c’est le but Clignement d'œil), des conditions avec le if. La balise <text> s’avère en fait très utile et indispensable pour personnaliser au plus précis ce type de helper.

    1:   @<text>

    2:  @if (item.C_LOGO_VIG != «  »)

    3:   {

    4:    <a href= »@Href(« ~/Private/Edit », item.ID) »

    5:      title= »@item.SOCIETE »>

    6:      <img   src= »../d/@item.C_ABRE/

    @item.VIG.Replace(« zoom », « vig ») »

    7:      alt= »@item.SOCIETE » />

    8:    </a>

    9:   }

    10:  </text>

     

    Pour faire des liens sans se soucier du chemin on utilise @Href. Le tilde “~” permet de partir de la racine du site et de construire le chemin. item.Id ajoute l’identifiant pour agir sur la base de données. on obtient ceci http://monnomdedomaine.com/Private/Edit/10

    La condition test l’existence d’une vignette, si c’est le cas on affiche les balises nécessaire

       1:  @item.VIG.Replace("zoom", "vig")
    

    ceci permet de remplacer le texte “zoom” par “vig” dans le nom de l’image

     

    Les styles sont définis de façon précises

     tableStyle: "webgrid"
     headerStyle: "webgrid-header"
     footerStyle: "webgrid-footer"
     rowStyle: "webgrid-rows"
     alternatingRowStyle: "webgrid-alternating-rows"

     

    le complément pour les styles se paramètre dans grid.Column Il manque quelques petits ajustements sur les styles comme l’alignement des titres des colonnes par exemple.

    1:   grid.Column(« DatePublication », « Publication »,

    format: @<i>

    @item.DatePublication.ToString(« d »)

    </i>,

    style: « datepub »),

    donc à la fin on trouve style : qui permet d’agir sur la colonne

     

    A suivre pour d’autres explications sur Les Asp.Net Web Pages.

    Laisser un commentaire

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *