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] Imbriquer des datagrid ou mettre un UserControl


Sujet :

ASP.NET

  1. #1
    Membre régulier Avatar de chman
    Inscrit en
    Novembre 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 94
    Points : 97
    Points
    97
    Par défaut [VB.Net] Imbriquer des datagrid ou mettre un UserControl
    salut,

    je cherche à imbriquer des datagrid ou à mettre un user control que j'ai crée dans le datagrid

    le but :
    je fais une sorte de forum donc j'affiche dans un datagrid paginée, les messages postés

    j'essaye en plus pour chaque message de récupèrer les réponses associées

    j'ai créé un composant qui a une propriété pour stocker la ligne issu du dataset et ainsi récupèrer les données nécessaires pour faire une seconde requete dans mon uc me permettant de récupèrer les réponses

    lors du premier affichage de la page -> pas de problèmes, ça fonctionne
    mais si je change de page (dans mon datagrid), ça marche plus (la propriété de mon control est null)

    si je met en plus un label qui a pour valeur


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DataBinder.Eval (Container.DataItem, "messagesTexte")
    il m'affiche bien les labels comme il faut
    je capte pas pourquoi ça marche uniquement lors du premier chargement de la page

    [Tag [ASPX] corrigé par freegreg]
    [Ancien tag : [ASP.net]]
    [Pensez-y, vous-même, la prochaine fois. Merci ]

  2. #2
    Expert éminent
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Points : 6 418
    Points
    6 418
    Par défaut
    hmmm tu ne dois pas recharger tes controles lors du postback, un peu plus de code please

    Sinon, oui tu peux mettre des webusercontrol dans un datagrid


    autre chose, apparement tu veux faire un forum, es-tu au courrant de l'existance de ASPNETforum, un forum gratuit et open source : http://www.asp.net/Forums/default.aspx?tabindex=1&tabid=39


    bon aprés c'est peut-être tuer une mouche avec un canon pour ce que tu veux faire

  3. #3
    Membre régulier Avatar de chman
    Inscrit en
    Novembre 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 94
    Points : 97
    Points
    97
    Par défaut
    un canon pour tuer une mouche, c sur, mais je fais plus ça pour apprendre qu'autre chose

    sinon pour être plus clair (?)

    dans le code html du datagrid, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    						<ItemTemplate>
    								<%# Container.DataItem("messagesTexte")%>
    								<uc1:wuc_post id=controlPost runat="server" messagesP='<%# Container.DataItem%>' EnableViewState="False">
    								</uc1:wuc_post>
    							</ItemTemplate>
    wuc_post est le control .ascx que j'ai crée, et messagesP ma propriété pour récupèrer la ligne

    ensuite dans wuc_post, je récupère une valeur de messagesP pour effectuer une nouvelle requete (récupèrer les réponses)
    cela marche au chargement de la page, mais si je met une pagination et que je change de page cela ne marche plus... (messagesP = null)

  4. #4
    Expert éminent
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Points : 6 418
    Points
    6 418
    Par défaut
    ok mais je voudrais le code de ton page_load

  5. #5
    Membre régulier Avatar de chman
    Inscrit en
    Novembre 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 94
    Points : 97
    Points
    97
    Par défaut
    ici la page principale du forum (load et changement d'index)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Placez ici le code utilisateur pour initialiser la page
            selectPost()
        End Sub
     
     
     ' ---- procédure appelée lorsque l'on change l'index
     
    Private Sub dgPosts_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles dgPosts.PageIndexChanged
            dgPosts.CurrentPageIndex = e.NewPageIndex
            dgPosts.DataBind()
        End Sub
    et pour le uc post

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Placez ici le code utilisateur pour initialiser la page
                selectReponses()
        End Sub
    en debuguant, lors du premier chargement, il fait le page_load de uc_post 1 fois
    lorsque je change de page, il fait un page_load de uc_post (où on retrouve les valeurs de la première page puis dgPosts_PageIndexChanged et encore un page_load de uc_post (les valeurs sont null)

    :

  6. #6
    Expert éminent
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Points : 6 418
    Points
    6 418
    Par défaut
    tu as activé le viewstate sur tes controles ?

  7. #7
    Membre régulier Avatar de chman
    Inscrit en
    Novembre 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 94
    Points : 97
    Points
    97
    Par défaut
    j'utilise VS.Net et dans comportement EnableViewState est à true c'est ça ?

  8. #8
    Membre régulier Avatar de chman
    Inscrit en
    Novembre 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 94
    Points : 97
    Points
    97
    Par défaut
    là j'ai testé un truc dans mon forum, j'ai supprimé le dataBind dans le changement de page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        ' ---- procédure appelée lorsque l'on change l'index
     
        Private Sub dgPosts_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles dgPosts.PageIndexChanged
            dgPosts.CurrentPageIndex = e.NewPageIndex
            ' dgPosts.DataBind()
        End Sub
    et là, ça marche, sauf qu'il faut que je clique 2 fois sur le changement de page :

    edit -> lorsque je vais sur la dernière page de mon datagrid

    Échec du chargement de viewstate. L'arborescence du contrôle sur lequel viewstate est chargé doit correspondre à l'arborescence du contrôle qui a été utilisé pour enregistrer viewstate lors de la demande précédente. Par exemple, lors de l'ajout dynamique de contrôle, les contrôles ajoutés lors d'une publication doivent correspondre au type et à la position des contrôles ajoutés lors de la demande initiale.


  9. #9
    Expert éminent
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Points : 6 418
    Points
    6 418
    Par défaut
    nan faut laisser le databind

    par contre je viens de voir dans ton code aspx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <uc1:wuc_post id=controlPost runat="server" messagesP='<%# Container.DataItem%>' EnableViewState="False">
    éssayes de le mettre à true pour voir

  10. #10
    Membre régulier Avatar de chman
    Inscrit en
    Novembre 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 94
    Points : 97
    Points
    97
    Par défaut
    nop marche pas

    par contre si j'enlève le databind() et que je mets le viewstate à false
    ça marche en cliquant 2 fois le changement de page...


    ya un truc qui m'échappe surement...

  11. #11
    Membre régulier Avatar de chman
    Inscrit en
    Novembre 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 94
    Points : 97
    Points
    97
    Par défaut
    j'ai trouvé !

    bon en fait, j'ai modifié l'uc forum

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Placez ici le code utilisateur pour initialiser la page
            If Not Page.IsPostBack Then
                selectPost()
            End If
    et lors du changement d'index

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        ' ---- procédure appelée lorsque l'on change l'index
     
        Private Sub dgPosts_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles dgPosts.PageIndexChanged
            dgPosts.CurrentPageIndex = e.NewPageIndex
            selectPost()
        End Sub
    ensuite pour les uc post, je faisais le selectReponse pour le page load et je l'ai déplacé dans le set de ma propriété

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        Private _messages As Object
     
        Public Property messages() As Object
            Get
                Return _messages
            End Get
            Set(ByVal Value As Object)
                _messages = Value
                selectReponses()
            End Set
        End Property
    sinon il me faisait le selectReponse avant le Set, donc _messages toujours à Nothing

    en tout cas, c'est dans des moments comme qu'on l'utilité d'un IDE avec un bon outil de traçage (F5 et F11 doivent être mort maintenant )

    merci pour ton aide neo.51

  12. #12
    Expert éminent
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Points : 6 418
    Points
    6 418
    Par défaut
    merci de penser au bouton résolu en bas à gauche

  13. #13
    Membre régulier Avatar de chman
    Inscrit en
    Novembre 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 94
    Points : 97
    Points
    97
    Par défaut
    désolé, c'était trop de bonheur lol

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

Discussions similaires

  1. Imbriquer des recordset dans un datagrid
    Par totoche dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 04/10/2006, 18h15
  2. Réponses: 4
    Dernier message: 08/07/2006, 14h11
  3. Réponses: 3
    Dernier message: 22/06/2006, 23h23
  4. [VB.NET][WinForms Inherits][DataGrid] Utilisation des propri
    Par Misterburma dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/04/2005, 16h50
  5. [CR9][VB.NET] Crénelage des graphiques
    Par Bazoom dans le forum SDK
    Réponses: 5
    Dernier message: 24/02/2004, 02h12

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