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 Discussion :

Parametres d'une SelectCommand pour un datarepeater


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 156
    Points : 54
    Points
    54
    Par défaut Parametres d'une SelectCommand pour un datarepeater
    Bonjour,

    j'ai un petit problème tout bête, mais que je ne parviens pas à régler.
    Dans une page aspx, j'ai un datarepeater que je charge avec des données d'une base sql, via un dataset.
    Ma requête qui charge ce dataset : "select * from JOB where idetatjob = 3"
    Jusque là, tout va bien, mon datarepeater affiche bien ce que je lui demande.

    Maintenant, j'ai rajouté des dropdownlist et des checkbox au-dessus de mon repeater afin de créer un système de filtre de recherche.
    Lorsque l'utilisateur coche une checkbox, cela rend la dropdownlist associée disponible.
    Je voudrais utiliser la valeur affichée dans ma dropdownlist pour créer un paramètre que j'ajouterai à mon dataadapter du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    adapterJobs.SelectCommand.Parameters.Add("nom_param1","dropdown1.SelectedItem.ToString());
    Le truc, c'est que le paramètre ne semble pas être ajouté à requête.
    Aurais-je oublié quelque chose?
    Est-ce une bonne méthode de travail?

    Voici le code de ma page actuellement (qui fonctionne sans aucun paramètre pour l'instant).

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.Security;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;
     
    namespace mon_site
    {
        public partial class recherche_job : System.Web.UI.Page
        {
            static string chaine_connexion = ConfigurationManager.ConnectionStrings["Mon_site_ConnectionString"].ToString();
            SqlConnection con = new SqlConnection(chaine_connexion);
            SqlCommand cmd;
     
            protected void Page_Load(object sender, EventArgs e)
            {
                if (User.Identity.IsAuthenticated)
                {
                    Page.Title = "Recherche de jobs étudiants";
                    ItemsGet();
                }
                else
                {
                    Page.Title = "Login nécessaire";
                    FormsAuthentication.RedirectToLoginPage();
                }
            }
     
     
            //Pour la pagination du datarepeater
            public int CurrentPage
            {
                get
                {
                    // look for current page in ViewState
                    object o = this.ViewState["_CurrentPage"];
                    if (o == null)
                        return 0;	// default to showing the first page
                    else
                        return (int)o;
                }
     
                set
                {
                    this.ViewState["_CurrentPage"] = value;
                }
            }
     
            private void ItemsGet()
            {
                SqlDataAdapter adapter_jobs = new SqlDataAdapter();
     
                con.Open();
                cmd = new SqlCommand(SqlDS_Jobs.SelectCommand.ToString(), con);
                adapter_jobs.SelectCommand = cmd;
     
                DataSet ds_jobs = new DataSet();
                adapter_jobs.Fill(ds_jobs);
                con.Close();
     
                PagedDataSource objPds = new PagedDataSource();
                objPds.DataSource = ds_jobs.Tables[0].DefaultView;
                objPds.AllowPaging = true;
                objPds.PageSize = 5;
     
                objPds.CurrentPageIndex = CurrentPage;
     
                lblCurrentPage.Text = "Page: " + (CurrentPage + 1).ToString() + " sur " + objPds.PageCount.ToString();
     
                //Rends les boutons "<<" et ">>" disabled si nécessaire
                cmdPrev.Enabled = !objPds.IsFirstPage;
                cmdNext.Enabled = !objPds.IsLastPage;
     
                Repeater_job.DataSource = objPds;
                Repeater_job.DataBind();
            }
     
            protected void cmdNext_Click(object sender, EventArgs e)
            {
                CurrentPage += 1;
                ItemsGet();
            }
     
            protected void cmdPrev_Click(object sender, EventArgs e)
            {
                CurrentPage -= 1;
                ItemsGet();
            }      
        }
    }
    Merci de votre aide qui me sera très précieuse étant donné que je n'y parviens pas tout seul.

  2. #2
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 156
    Points : 54
    Points
    54
    Par défaut
    Bonsoir,

    ne trouvant pas de solutions en utilisant les parametres, j'ai cherché autre chose et suis tombé sur les filterexpression d'un sqldatasource.
    Je pense que cela correspond à mon besoin. Qu'en pensez-vous?

    Cependant, j'ai un souci (qui se répète peu importe la solution que je choisis) :
    j'ai plusieurs dropdownlist que je rend active ou inactive dynamiquement.
    Comment puis-je faire de manière très simple pour ajouter dynamiquement des FilterParameters en fonction de mes dropdownlist actives et de gérer la filterexpression finale avant de lier ma datasource filtrée à mon Repeater?

    En gros, actuellement, je compte faire comme ceci, mais le jour où j'ai plein de paramètres à rajouter pour filtrer davantage mes résultats, je vais avoir un sérieux problème :
    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
     
    string expressionfiltree = "";
     
    if (dpl1.Enabled == true)
    {
     sqldatasource1.FilterParameters.Add("mon_champ1",dpl1.SelectedValue);
     expressionfiltree += "mon_champ1 = '{0}'";
    }
     
    if (dpl2.Enabled == true)
    {
     sqldatasource1.FilterParameters.Add("mon_champ2",dpl2.SelectedValue);
     expressionfiltree += "mon_champ2 = '{1}'";
    }
     
    expressionfiltree = "LIKE " + expressionfiltree;
    DataSourceSelectArguments arg = new DataSourceSelectArguments();
    DataView dv = (DataView)sqldatasource1.Select(arg);            
    PagedDataSource objPds = new PagedDataSource();
    objPds.DataSource = dv;
    objPds.AllowPaging = true;
    objPds.PageSize = 5;
    Et mon problème ici est de pouvoir placer mon " AND " dans la filterExpression au bon endroit entre chaque paramètre lorsqu'il y en a plusieurs.

    Merci d'avance pour votre aide

Discussions similaires

  1. [PHP 5.1] Syntaxe pour passage parametre via une url
    Par chkemp dans le forum Langage
    Réponses: 7
    Dernier message: 09/12/2009, 18h57
  2. Réponses: 19
    Dernier message: 29/06/2009, 15h19
  3. Réponses: 1
    Dernier message: 09/10/2007, 21h53
  4. [Configuration] une fonction pour un calendrier parametrable
    Par hrz dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 05/02/2006, 11h11
  5. Réponses: 2
    Dernier message: 04/10/2005, 20h54

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