IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

Pb pagination webgrid après filtre des données [Débutant]


Sujet :

ASP.NET MVC

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 65
    Points : 48
    Points
    48
    Par défaut Pb pagination webgrid après filtre des données
    Bonjour,

    j'ai un formulaire simple qui affiche la liste de tous mes clients dans un webgrid paginé et trié.

    Jusque là ok.

    Dans ce formulaire, j'ai rajouté un module de recherche sur le code postal pour afficher dans ce webgrid une sélection d'enregistrements.

    Là encore ok.

    Le problème :

    A la première ouverture du formulaire, tous mes enregistrements s'affichent, je navigue dans les résultats: ok. L'utilisateur fait une recherche : exemple : liste des clients avec 69 dans le code postal. Ok par contre si je clique sur page 2 le webgrid ne tient plus compte de mon filtre et me réaffiche la page 2 avec tous mes enregistrements.

    Je ne comprends pas d'où cela peut venir...

    mon contrôleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public ActionResult Index()
            {
     
                string cpclient = Request.Form["cp_client"];
                ViewData["cpcli"] = cpclient;
                List<CLIENTS_ADR> clients = new List<CLIENTS_ADR>();
     
                if (!String.IsNullOrEmpty(cpclient))
                {
                    clients = db.CLIENTS_ADR.Where(o => o.ADRCL_CP.Contains(cpclient)).ToList();
                }
                else
                {
                    // Que faire s'il n'y a pas de code postal ?
                    clients = db.CLIENTS_ADR.ToList();
                }
     
                return View(clients);
            }
    Ma vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <div id="grid">
    @{
      var grid = new WebGrid(Model, rowsPerPage: 20, 
      defaultSort: "CL_NOM");
      }
     
     
     
    @grid.GetHtml(
    fillEmptyRows:false,
    mode:WebGridPagerModes.All,
     
    columns: new[] {
     
            grid.Column("CL_NOM","Client"),
            grid.Column("ADRCL_LIBELLE","Lib Adresse"),
            grid.Column("ADRCL_CP","CP"),
            grid.Column("ADRCL_VILLE","Ville"),        
            grid.Column("CL_ADRMAIL","Adresse mail"),
            grid.Column("CL_TELEPHONE","Téléphone"),
            grid.Column("CL_FAX","Fax"),
            grid.Column("CL_AMIS","ADLR", format: @<text><input name="ADLR" type="checkbox" value="@item.CL_AMIS" @(item.CL_AMIS == false ? null : "checked") disabled="disabled" /></text>),
            grid.Column("CL_LOGIN","Login"),
            grid.Column("CL_PWD","Password"),
            grid.Column("CL_ESTFILIALE","Filiale", format: @<text><input name="Filiale" type="checkbox" value="@item.CL_ESTFILIALE" @(item.CL_ESTFILIALE == false ? null : "checked") disabled="disabled" /></text>),
            grid.Column("",
                header:"Actions",
                format:@<text>                         
                            <a href='@Url.Action("Edit","Client", new {id=item.CL_ID})'>
                           <img src="~/Content/images/icon_edit_admin.gif" alt="Edit" border="0"/>
                               </a>
                            <a href='@Url.Action("Details","Client", new {id=item.CL_ID})'>
                           <img src="~/Content/images/icone-details.gif" alt="Details" border="0"  />
                               </a>
                            <a href='@Url.Action("Delete","Client", new {id=item.CL_ID})'>
                           <img src="~/Content/images/trash.gif" alt="Supp" border="0"  />
                               </a>
                        </text>
        )
     
     
    },
    tableStyle: "webgrid",
        headerStyle: "webgrid-header",
        footerStyle: "webgrid-footer",
        alternatingRowStyle: "webgrid-alternating-row",
        selectedRowStyle: "webgrid-selected-row",
        rowStyle: "webgrid-row-style")
     
        </div>

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 65
    Points : 48
    Points
    48
    Par défaut
    Bonjour,

    J'ai trouvé une solution à mon problème, je la poste pour ceux que ça peut aider.

    On va utiliser la méthode Get dans le formulaire de recherche pour récupérer les critères de filtre dans le contrôleur.

    Dans la vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    @using(Html.BeginForm(null, null, FormMethod.Get))
    {
        <fieldset>
        <legend>Rechercher un client :</legend>
           <div style=float:left;>
                @Html.Label("Nom")
                @Html.TextBox("nom_client",ViewData["nomcli"])         
            </div>
            <div style=float:left;>
                @Html.Label("Siret")
                @Html.TextBox("siret_client",ViewData["siretcli"])
                </div>
            <div style=float:left;>
                @Html.Label("CP")
                @Html.TextBox("cp_client",ViewData["cpcli"])
            </div>
        </fieldset>
        <p>
        <input type="submit" value="Envoyer" /> 
        </p>
    }
    Dans le contrôleur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    string nomclient = Request.QueryString["nom_client"];
                string cpclient = Request.QueryString["cp_client"];
                string siretclient = Request.QueryString["siret_client"];
     
                ViewData["nomcli"] = nomclient;
                ViewData["cpcli"] = cpclient;
                ViewData["siretcli"] = siretclient;
     
                var clients = (from m in db.CLIENTS_ADR select m).ToList();
     
                if (!String.IsNullOrEmpty(nomclient) || !String.IsNullOrEmpty(siretclient) || !String.IsNullOrEmpty(cpclient))
                {
                    clients = (from m in db.CLIENTS_ADR
                               where (m.CL_NOM.Contains(nomclient) || String.IsNullOrEmpty(nomclient)) && (m.ADRCL_CP.Contains(cpclient) || String.IsNullOrEmpty(cpclient)) && (m.CL_SIRET == siretclient || String.IsNullOrEmpty(siretclient))
                               select m).ToList();
                }
     
                return View(clients);
    Voilà normalement quand vous naviguez dans votre webgrid, le filtre doit rester actif.

    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E] Actualiser un Graphique aprés Placement des données
    Par beekeep dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 27/02/2015, 14h43
  2. Erreur après restauration des données
    Par Lionel57 dans le forum Administration
    Réponses: 1
    Dernier message: 01/12/2007, 16h40
  3. Réponses: 3
    Dernier message: 30/10/2007, 13h48
  4. [WSS3] Filtre des données
    Par vds2302 dans le forum SharePoint
    Réponses: 9
    Dernier message: 27/09/2007, 11h12
  5. atteindre un ancre aprés soumission des données
    Par adilou1981 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/03/2005, 17h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo