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 :

[Vb.net] Datagrid - Dropdownlist


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 27
    Points : 11
    Points
    11
    Par défaut [Vb.net] Datagrid - Dropdownlist
    Bonjour,

    J'ai un datagrid avec un footer composé de 3 colonnes.
    Mon footer se décompose ainsi : une dropdownlist , un label et une textbox
    Et le reste de mon datagrid est identique en mode édition.

    Mon problème:

    Je voudrais attribuer une valeur à mon label en fonction de la valeur sélectionnée dans ma dropdownlist.

    Par exemple, si dans ma ddl j'ai une liste de nom de personnes, je voudrais mettre automatiquement le prénom de la personne dont le nom est sélectionné dans la ddl.

    Pour cela, j'ai déclaré ma ddl ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:dropdownlist id="lst_nom" AutoPostBack="True"  OnSelectedIndexChanged="AfficheNom" runat="server"></asp:dropdownlist>
    et j'ai créé ma fonction AfficheNom: (dg2 est mon datagrid)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public Sub AfficheNom(ByVal source As System.Object, ByVal e As System.EventArgs)
            Dim nom As DropDownList
    nom= CType(dg2.Items(dg2.EditItemIndex).FindControl("lst_nom"), DropDownList)
            Dim label As Label
            label = CType(dg2.Items.Item(dg2.EditItemIndex).FindControl("lbl_foot_nom"), Label)
     
    ' acces aux données de la base
    ...
    label.text = prenom
     
    end sub
    Et donc ca bloque lorsqu'il essai de trouver la ddl dans AfficheNom.

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Août 2004
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    ta pas une erreur dans ton code???

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    ou ?

  4. #4
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    l'erreur vient du fait que la variable nom n'est pas lié à la ddl lst_nom. Le ctype doit être faux mais je ne vois pas comment récuperer la ddl de mon datagrid autrement...

  5. #5
    Membre habitué

    Inscrit en
    Octobre 2002
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 139
    Points : 177
    Points
    177
    Par défaut
    Salut,

    tu peux récupérer les tes controles par leurs index. Attention il faut utiliser les nombres impairs car à chaque control que tu crée dans un datagrid un control littéral lui est associé et le précède.
    j'espère que c'est clair (j'ai un doute)

    krest

  6. #6
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    salut

    heu non j'ai pas trop bien compris ce que tu veux dire. Les objet de mon datagrid sont référencés par un index ???

    comment je peux le retrouver? ta un exemple ?

  7. #7
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    personne ne vois?

    en solution annexe, j'ai trouvé à faire un tableau a la place du footer et récupérer ainsi les évenements mais bon c'est pas top ...

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 100
    Points : 93
    Points
    93
    Par défaut
    Tu peut mettre le code aspx de ton datagrid..

  9. #9
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    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
    <asp:datagrid id="dg2" width="500" cellpadding="1" cssclass="grid" showfooter="True" autogeneratecolumns="False"
    			runat="server">
    			<AlternatingItemStyle VerticalAlign="Top" BackColor="Beige"></AlternatingItemStyle>
    			<ItemStyle VerticalAlign="Top" BackColor="#FFDBBB"></ItemStyle>
    			<HeaderStyle Font-Size="10pt" Font-Bold="True" ForeColor="Beige" VerticalAlign="Top" BackColor="#FF7A00"></HeaderStyle>
    			<Columns>
    				<asp:editcommandcolumn buttontype="LinkButton" updatetext="&lt;img title='Mettre à Jour' alt='Mettre à Jour' src=../images/enroll.gif border=0 /&gt;"
    					canceltext="&lt;img title='Annuler la mise à jour' alt='Annuler la mise à jour' src=../images/unenroll.gif border=0 /&gt;"
    					edittext="&lt;img title='Modifier' alt='Modifier' src=../images/edit.gif border=0 /&gt;">
    					<headerstyle font-size="10pt" forecolor="Beige"></headerstyle>
    					<itemstyle horizontalalign="Center"></itemstyle>
    				</asp:editcommandcolumn>
    				<asp:templatecolumn>
    					<headerstyle font-size="10pt" font-bold="True" horizontalalign="Center" forecolor="Beige" width="20px"
    						verticalalign="Top" backcolor="#FFA600"></headerstyle>
    					<itemstyle horizontalalign="Center"></itemstyle>
    					<itemtemplate>
    						<input id="lbl_Idread2" value='<%# DataBinder.Eval(Container, "DataItem.id_pilote") %>' type="hidden" name="lbl_ID" runat="server" />
    						<asp:linkbutton id="Linkbutton2" runat="server" commandname="Delete" text="&lt;img src=../images/supprimer.gif border=0&gt;"
    							causesvalidation="false"></asp:linkbutton>
    					</itemtemplate>
    					<footerstyle horizontalalign="Center"></footerstyle>
    					<footertemplate>
    						<asp:linkbutton id="lnk_Ajout2" runat="server" commandname="Insert" text="Ajouter" causesvalidation="false">
    							<img src="../images/enroll.gif" border="0" /></asp:linkbutton>
    					</footertemplate>
    					<edititemtemplate>
    						<input id="lbl_IDedit2" value='<%# DataBinder.Eval(Container, "DataItem.id_pilote") %>' type="hidden" name="lbl_ID" runat="server" />
    					</edititemtemplate>
    				</asp:templatecolumn>
    				<asp:templatecolumn headertext="Nom">
    					<headerstyle font-size="10pt" font-bold="True" forecolor="Beige"></headerstyle>
    					<itemstyle horizontalalign="Center"></itemstyle>
    					<itemtemplate>
    						<asp:label id="lbl_nom" runat="server" text='<%# DataBinder.Eval(Container, "DataItem.nom") %>'>
    						</asp:label>
    					</itemtemplate>
    					<edititemtemplate>
    						<asp:dropdownlist id="lst_nom" cssclass="listeSmall" enabled="False" runat="server"></asp:dropdownlist>
    					</edititemtemplate>
    					<footertemplate>
    						<asp:dropdownlist id="lst_new_nom" AutoPostBack="True"  cssclass="listeSmall" enabled="False"  OnSelectedIndexChanged="AfficheNom" runat="server"></asp:dropdownlist>
    					</footertemplate>
    				</asp:templatecolumn>
    				<asp:templatecolumn headertext="Prénom">
    					<headerstyle font-size="10pt" font-bold="True" forecolor="Beige"></headerstyle>
    					<itemstyle horizontalalign="Center"></itemstyle>
    					<itemtemplate>
    						<asp:label id="lbl_prenom" runat="server" text='<%# DataBinder.Eval(Container, "DataItem.ACRONYME_INTERLOCUTEUR") %>'>
    						</asp:label>
    					</itemtemplate>
    					<edititemtemplate>
    						<asp:label id="lbl_edit_prenom" enabled="False" runat="server"></asp:label>
    					</edititemtemplate>
    					<footertemplate>
    						<asp:label id="lbl_foot_prenom" enabled="False" runat="server"></asp:label>
    					</footertemplate>
    				</asp:templatecolumn>
    	</Columns>
    		</asp:datagrid>

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 100
    Points : 93
    Points
    93
    Par défaut
    Pour recuprer ta dropdownlist c'est tout bête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Public Sub AfficheNom(ByVal source As System.Object, ByVal e As System.EventArgs)
            Dim nom As DropDownList
            nom = CType(source, DropDownList)
     
    ..

  11. #11
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    ok ... des fois on se casse la tete pour des choses #@ej!#

    bref ... comment je fais pour chopper mon label par contre ??

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 100
    Points : 93
    Points
    93
    Par défaut
    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 Sub AfficheNom(ByVal source As System.Object, ByVal e As System.EventArgs)
            Dim nom As DropDownList
            nom = CType(source, DropDownList)
     
            ' La cellule qui contient ta DropDownList
            Dim cell As TableCell
            cell = CType(nom.Parent, TableCell)
     
            'tu remonte à la ligne
            Dim dgi As DataGridItem
            dgi = CType(cell.Parent, System.Web.UI.WebControls.DataGridItem)
     
            'La cell qui contient ton label (on decale d'une colonne vers la gauche)
            cell = dgi.Cells(dgi.Cells.GetCellIndex(cell) - 1)
     
            'Ton label
            Dim label As label
            label = CType(cell.Controls(1), Label)
    Y'a peut-être plus simple mais çà marche

  13. #13
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    heu ca se passe au niveau du footer

    mon label se trouve a droite de la ddl, donc je pense pas qu'il faille remonter

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 100
    Points : 93
    Points
    93
    Par défaut
    si si essais

    C'est remonter puis redescendre en terme de hierachie d'objet..

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 100
    Points : 93
    Points
    93
    Par défaut
    Par contre le decallage d'index si c'est colonne de droite c'est +1 etc..

  16. #16
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    en faite non c'est nikel ca marche !!!

    je te remercie beaucoup the_bmo

    J'ai plus qu'a reproduire ca dans le edit ...

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

Discussions similaires

  1. vb.net datagrid dropdownlist
    Par Alex35 dans le forum VB.NET
    Réponses: 6
    Dernier message: 28/01/2008, 14h04
  2. [VB.NET] DataGrid et double click
    Par mic56 dans le forum Windows Forms
    Réponses: 15
    Dernier message: 01/11/2006, 04h37
  3. [VB.NET] Datagrid + CheckBox : Cocher toutes les cases
    Par sirex007 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 24/05/2004, 15h33
  4. [VB.NET] Datagrid - Récupérer CheckBox cochées
    Par nmerydem dans le forum ASP.NET
    Réponses: 16
    Dernier message: 18/05/2004, 13h28
  5. [VB.NET] Datagrid dans tabstrip : bug ?
    Par necro dans le forum ASP.NET
    Réponses: 13
    Dernier message: 23/02/2004, 10h23

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