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 :

[C#] Problème DropDownList liées


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut [C#] Problème DropDownList liées
    Bonjour à tous,
    J'ai un problème.

    Dans ma BD, j'ai deux tables: company et site.

    Dans la table company, j'ai les champs suivants:
    ID_COMPANY (uniqueidentifier)(clé primaire)
    COMPANY_NAME (text)

    Dans la table site, j'ai les champs suivants:
    ID_SITE (uniqueidentifier)(clé primaire)
    ID_COMPANY (uniqueidentifier)(clé étrangère)
    SITE_NAME (text)


    Sur ma page web, j'ai placé deux dropdownlists que je veux liées entre elles.
    Ma première dropdownlist D1 a pour ID: STEP0_LOGIN_DROPDOWNLIST_COMPANY
    La seconde dropdownlist D2 a pour ID: STEP0_LOGIN_DROPDOWNLIST_SITE

    Je but est d'afficher les sites (dans D2) en fonction de ce qui a été sélectionné dans D1.

    Pour ce faire, j'ai placé deux sqldatasource S1 et S2 dans ma page que j'ai respectivement liées à D1 et D2.

    S1 a été paramétré pour éxécuter la requête suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    SELECT * FROM [company]
    Sera affiché dans D1 le champs COMPANY_NAME et la valeur associée à chaque élément sera ID_COMPANY.

    Jusque là pas de souci.


    S2 a été paramétré pour éxécuter la requête suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    SELECT * FROM [site] WHERE ([ID_COMPANY] = @ID_COMPANY)
    @ID_COMPANY = STEP0_LOGIN_DROPDOWNLIST_COMPANY.SelectedValue


    Enfin AutopostBack est activé sur D1.

    Au final, je récupère bien tous mes éléments dans D1 mais je n'ai rien dans D2 lors de la sélection d'un élément de D1. Je ne récupère aucun résultats dans D2. Pourtant je sais qu'il existe un site pour une company comme le montre les enregistrements des tables company et site:

    Company:
    ID_COMPANY -----------------------------COMPANY_NAME
    52101a81-3736-42ef-99f6-8eca64447dbc kjkjk
    52101a81-3736-42ef-99f6-8eca64447dbd 111


    Site:
    ID_SITE -----------ID_COMPANY-------------SITE_NAME
    47423a6a-0670-4135-b16a-26f544ea2df9 52101a81-3736-42ef-99f6-8 ddddeca64447dbd SITE de 111
    tout le monde est d'accord pour critiquer la pensée unique

  2. #2
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    Il y a des chances que ce soit un probleme de databind qui ne se fait pas ou au alors au mauvais moment, pourrait tu poster ton code ASPX et le code behind?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Bonjour Arthis !

    Voici le code de ma page qui "écrit" les deux listbox
    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
     
     
    <body style="width: 80%; height: 100%;">
        <form id="form1" runat="server">
        <div>
            <br />
            <br />
            &nbsp;</div>
            <asp:Wizard ID="Wizard" runat="server" BackColor="#E6E2D8" BorderColor="#999999"
                BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" Font-Size="0.8em"
                Height="500px" Width="1125px" ActiveStepIndex="0" OnFinishButtonClick="Wizard_FinishButtonClick">
                <StepStyle BorderWidth="2px" BackColor="#F7F6F3" BorderColor="#E6E2D8" BorderStyle="Solid" Font-Bold="False" Font-Italic="False" Font-Size="X-Small" />
                <SideBarStyle BackColor="#1C5E55" Font-Size="0.9em" VerticalAlign="Middle" Width="300px" Font-Overline="False" />
                <NavigationButtonStyle BackColor="White" BorderColor="#C5BBAF" BorderStyle="Solid"
                    BorderWidth="1px" Font-Names="Verdana" Font-Size="0.8em" ForeColor="#1C5E55" Font-Bold="False" />
                <WizardSteps>
                    <asp:WizardStep runat="server" Title="Step 1 - Login&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;">
                        <table style="width: 100%; height: 30%">
                            <tr>
                                <td style="width: 18%; height: 61px" class="Question_TR">
                                    <strong>
                                    Name of Company :</strong></td>
                                <td colspan="2" style="vertical-align: middle; height: 61px; text-align: left" class="Question_TR">
                                    <asp:Label ID="STEP0_LOGIN_LABEL_COMPANY" runat="server" Height="1px" Width="192px" CssClass="label"></asp:Label>
                                    &nbsp;
                                    <asp:RequiredFieldValidator ID="STEP0_RFV_LISTBOX_COMPANY" runat="server" CssClass="RequireValidation"
                                        ErrorMessage="&lt;img src =' ./images/error2.png'&gt;   You need to select a company" style="left: 935px; top: 188px" ControlToValidate="STEP0_LOGIN_DROPDOWNLIST_COMPANY" ForeColor="" Width="206px" EnableClientScript="False"></asp:RequiredFieldValidator>
                                </td>
                            </tr>
                            <tr>
                                <td style="width: 18%; height: 38px" class="Response_TR">
                                    <span style="color: #000099">Select your company</span></td>
                                <td style="vertical-align: middle; width: 40%; height: 38px; text-align: center" class="Response_TR">
                                    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Security_Rules_CSGConnectionString %>"
                                        SelectCommand="SELECT * FROM [company]"></asp:SqlDataSource>
                                    <asp:DropDownList ID="STEP0_LOGIN_DROPDOWNLIST_COMPANY" runat="server" AutoPostBack="True" OnSelectedIndexChanged="STEP0_LOGIN_DROPDOWNLIST_COMPANY_SelectedIndexChanged" DataSourceID="SqlDataSource1" DataTextField="COMPANY_NAME" DataValueField="ID_COMPANY">
                                    </asp:DropDownList>
                                    &nbsp; &nbsp; &nbsp;</td>
                                <td style="width: 100%; height: 38px" class="Response_TR">
                                </td>
                            </tr>
                            <tr>
                                <td style="width: 18%; height: 54px" class="Question_TR">
                                    <strong>Site :</strong></td>
                                <td colspan="2" style="vertical-align: middle; height: 61px; text-align: left" class="Question_TR">
                                    &nbsp;<asp:Label ID="STEP0_LOGIN_LABEL_SITE" runat="server" Height="1px" Width="192px" CssClass="label"></asp:Label>
                                </td>
                            </tr>
                            <tr>
                                <td style="width: 18%; height: 47px" class="Response_TR">
                                    <span style="color: #000099">Select your Site</span></td>
                                <td style="vertical-align: middle; width: 40%; height: 47px; text-align: center" class="Response_TR">
                                    <asp:DropDownList ID="STEP0_LOGIN_DROPDOWNLIST_SITE" runat="server" OnSelectedIndexChanged="STEP0_LOGIN_DROPDOWNLIST_SITE_SelectedIndexChanged" DataSourceID="SQL_SR_site" DataTextField="ID_SITE" DataValueField="ID_SITE" AutoPostBack="True">
                                        <asp:ListItem></asp:ListItem>
                                        <asp:ListItem>dfdf</asp:ListItem>
                                    </asp:DropDownList>
                                    <asp:SqlDataSource ID="SQL_SR_site" runat="server" ConnectionString="<%$ ConnectionStrings:Security_Rules_CSGConnectionString %>"
                                        SelectCommand="SELECT * FROM [site] WHERE ([ID_COMPANY] = @ID_COMPANY)">
                                        <SelectParameters>
                                            <asp:ControlParameter ControlID="STEP0_LOGIN_DROPDOWNLIST_COMPANY" Name="ID_COMPANY"
                                                PropertyName="SelectedValue" Type="Object" />
                                        </SelectParameters>
                                    </asp:SqlDataSource>
                                    &nbsp;
                                </td>
                                <td style="width: 100%; height: 47px" class="Response_TR">
                                    <asp:RequiredFieldValidator ID="STEP0_RFV_LISTBOX_SITE" runat="server" ControlToValidate="STEP0_LOGIN_DROPDOWNLIST_SITE"
                                        CssClass="RequireValidation" ErrorMessage="&lt;img src =' ./images/error2.png'&gt;   You need to select a site"
                                        ForeColor="" Style="left: 943px; top: 301px" Width="206px" EnableClientScript="False"></asp:RequiredFieldValidator>
                                </td>
                            </tr>
                            <tr>
    As tu besoin d'autres informations ??
    tout le monde est d'accord pour critiquer la pensée unique

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    J'ai résolu mon problème.

    Ci-dessous le code de la dropdownlist site lié à sa sqldatasource:
    Code qui ne foncitonnait pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <asp:DropDownList ID="STEP0_LOGIN_DROPDOWNLIST_SITE" runat="server" OnSelectedIndexChanged="STEP0_LOGIN_DROPDOWNLIST_SITE_SelectedIndexChanged" DataSourceID="SQL_SR_site" DataTextField="ID_SITE" DataValueField="ID_SITE" AutoPostBack="True">
                                        <asp:ListItem></asp:ListItem>
                                        <asp:ListItem>dfdf</asp:ListItem>
                                    </asp:DropDownList>
                                    <asp:SqlDataSource ID="SQL_SR_site" runat="server" ConnectionString="<%$ ConnectionStrings:Security_Rules_CSGConnectionString %>"
                                        SelectCommand="SELECT * FROM [site] WHERE ([ID_COMPANY] = @ID_COMPANY)">
                                        <SelectParameters>
                                            <asp:ControlParameter ControlID="STEP0_LOGIN_DROPDOWNLIST_COMPANY" Name="ID_COMPANY"
                                                PropertyName="SelectedValue" Type="Object" />
                                        </SelectParameters>
                                    </asp:SqlDataSource>
    Et ici, le code qui fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <asp:DropDownList ID="STEP0_LOGIN_DROPDOWNLIST_SITE" runat="server" OnSelectedIndexChanged="STEP0_LOGIN_DROPDOWNLIST_SITE_SelectedIndexChanged" DataSourceID="SQL_SR_site" DataTextField="ID_SITE" DataValueField="ID_SITE" AutoPostBack="True">
                                        <asp:ListItem></asp:ListItem>
                                        <asp:ListItem>dfdf</asp:ListItem>
                                    </asp:DropDownList>
                                    <asp:SqlDataSource ID="SQL_SR_site" runat="server" ConnectionString="<%$ ConnectionStrings:Security_Rules_CSGConnectionString %>"
                                        SelectCommand="SELECT * FROM [site] WHERE ([ID_COMPANY] = @ID_COMPANY)">
                                        <SelectParameters>
                                            <asp:ControlParameter ControlID="STEP0_LOGIN_DROPDOWNLIST_COMPANY" Name="ID_COMPANY"
                                                PropertyName="SelectedValue" Type="String" />
                                        </SelectParameters>
                                    </asp:SqlDataSource>
    C'est le type (en gras souligné) qui posait problème !

    Merci pour ton aide Arthis !!

    Bonne journée !!
    tout le monde est d'accord pour critiquer la pensée unique

  5. #5
    Membre expérimenté
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Points : 1 566
    Points
    1 566
    Par défaut
    Salut,

    Citation Envoyé par LE NEINDRE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     <asp:SqlDataSource ID="SQL_SR_site" runat="server" ConnectionString="<%$ ConnectionStrings:Security_Rules_CSGConnectionString %>"
                                        SelectCommand="SELECT * FROM [site] WHERE ([ID_COMPANY] = @ID_COMPANY)">
                                        <SelectParameters>
                                            <asp:ControlParameter ControlID="STEP0_LOGIN_DROPDOWNLIST_COMPANY" Name="ID_COMPANY"
                                                PropertyName="SelectedValue" Type="Object" />
                                        </SelectParameters>
                                    </asp:SqlDataSource>
    Essaie d'enlever
    Type="Object"
    Edit : , j'aurais dû rafraichir la fenetre avant de poster
    Mehdi Feki : Modérateur .Net

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Citation Envoyé par mehdi_tn
    Essaie d'enlever
    Citation:
    Type="Object"
    Bonjour Medhi_tn,

    Oui ça fonctionne lorsque j'enlève le type.

    Dans ce cas, quel type par défaut prend il ???
    tout le monde est d'accord pour critiquer la pensée unique

  7. #7
    Membre expérimenté
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Points : 1 566
    Points
    1 566
    Par défaut
    Bein dans le cas du parametre ID_COMPANY, Ca doit etre un string
    Mehdi Feki : Modérateur .Net

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Il prend le type de données de la base de données alors ?
    UniqueIdentifier pour ID_COMPANY
    et varchar(50) pour COMPANY_NAME
    tout le monde est d'accord pour critiquer la pensée unique

  9. #9
    Membre expérimenté
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Points : 1 566
    Points
    1 566
    Par défaut
    Citation Envoyé par msdn2
    type
    The type that the parameter represents. The default is Object.
    Donc si tu ne specifie pas le type, ca devient comme une methode de concatenation qui prend en parametre un Object, et par suite la methode ToString() est appelée sur l'objet en parametre.

    Si tu passe "Toto" => Objet string Toto => ToString() donne "Toto"
    Si tu passe 1234 => Objet int 1234 => ToString() donne "1234"
    Mehdi Feki : Modérateur .Net

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Super merci, j'ai compris.
    Si dans ma base je mets une image, j'aurais comme retour System.drawing.image par exemple.

    Dans mon cas, je vais donc mettre le type String, car ce que je veux, c'est du texte.
    Merci Medhi_tn !
    tout le monde est d'accord pour critiquer la pensée unique

  11. #11
    Membre expérimenté
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Points : 1 566
    Points
    1 566
    Par défaut
    Citation Envoyé par LE NEINDRE
    Super merci, j'ai compris.
    Si dans ma base je mets une image, j'aurais comme retour System.drawing.image par exemple.
    Ah je ne crois pas que t'as bien compris !!!

    Le Type n'est pas convertit par rapport à ta base de donnée !!! J'essaie de re expliquer :

    Dans le FrameWork Dot Net tout herite de Object :Si tu as une methode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     private static string concat(Object str)
    {
        return "Toto : " + str.ToString();
       //ou encore return "Toto : " + str;
    }
    static void Main(string[] args)
            {
                Console.WriteLine(concat(1234)); // Affiche "Toto : 1234"
                Console.WriteLine(concat("Bobo"));// Affiche "Toto : Bobo"
                System.Drawing.Bitmap img= new System.Drawing.Bitmap(2,2) ;
                Console.WriteLine(concat(img)); // Affiche "Toto : System.Drawing.Bitmap"
            }
    Tu remarque pour le cas System.Drawing.Bitmap l'affichage n'est pas explicite parceque on sait pas bien representer un Bitmap en String

    Revenons à notre exemple dans le cas de la requete si tu passe une Image comme parametre tu auras " WHERE Table.Photo=System.Drawing.Image"

    J'espere que j'etais plus clair cette fois ci
    Mehdi Feki : Modérateur .Net

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Oui medhi_tn, je pense que j'ai bien compris.
    ça me parait clair.

    Je crois que je m'étais mal expliqué dan smon précédent post ...

    Merci d'avoir pris le temps de m'expliquer !!!!!
    tout le monde est d'accord pour critiquer la pensée unique

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

Discussions similaires

  1. [Access 2003] problème table liée
    Par stargates dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 23/09/2008, 18h39
  2. Problème DropDownList avec Multiview
    Par Lockss dans le forum ASP.NET
    Réponses: 1
    Dernier message: 12/11/2007, 12h49
  3. DropDownList liée à une BDD + "tous"
    Par kheironn dans le forum ASP.NET
    Réponses: 4
    Dernier message: 22/06/2007, 12h54
  4. remplissage d'un dropDownList liée à un BD
    Par shirya dans le forum ASP.NET
    Réponses: 7
    Dernier message: 16/02/2007, 16h10
  5. 2 DropDownList liées
    Par cnguyen dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 26/06/2006, 22h16

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