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 :

Instance de User Control => null reference


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 57
    Points : 45
    Points
    45
    Par défaut Instance de User Control => null reference
    Bonjour tout le monde,

    Voilà mon problème :
    En code behind, j'ai une boucle qui me crée des instances d'un User Control et les insère dans ma page. Une fois un userControl inséré, j'appelle sa méthode afficher(). Cette méthode modifie certains controls du UserControl.
    C'est lors de la modification d'un control contenu dans le UserControl qu'on me dit que la référence est null.
    Quand je fais un MyUserControl.HasControls() ça me renvoie "false"!

    Voilà à quoi ressemble le code behind de ma page:

    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
     
     
    For Each row As DataRow In ds.Tables(0).Rows
     
                    If Not dernierClient = row("ClientID") Then
                        i = 1
                    End If
     
                    aOnglet = True
                    Dim content As New Control()
                    Dim onglet As New AjaxControlToolkit.TabPanel()
                    onglet.ID = row("ClientID") & i
     
    'voilà mon instanciation du user control
                    Dim myControl As New UC_Lot()
                    uc_Lot.ID = "uc_Lot"
     
                    onglet.HeaderText = row("ClientID") & " : Lot " & i
                    content.Controls.Add(uc_Lot)
                    onglet.Controls.Add(content)
     
    'tabLots est de type AjaxControlToolKit.Tabcontainer
                    tabLots.Tabs.Add(onglet)
     
    'appel de la méthode Afficher de l'UC
    myControl.Afficher(...)
    Et maintenant un extrait du code behind de mon UC
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    Private Sub Afficher(ByVal lTMALotID As Long)
     
                Dim oLot As New CLot
                Dim ds As DataSet
     
                ds = oLot.RechercherLesTacheduLot(lTMALotID)
     
    'dgLot est un datagrid déclaré en dur dans mon UC
    With dgLot
     
    'la ligne qui plante parce que dgLot est une reference null
                    .DataSource = ds.Tables(0).DefaultView
    Si quelqu'un peut m'éclairer ce serait génial

    Merci d'avance

  2. #2
    Membre averti Avatar de predalpha
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 392
    Points : 363
    Points
    363
    Par défaut
    Peut être une piste

    <%@ Register TagPrefix="Tonctrl" TagName="TonControle" Src="../tondossierdeusercontrole/toncontrole.ascx" %>

    généralement lorsque tu balances un usercontrol, en code html design machin chose ça t'ajoute cela en debut de page juste en dessous de la liaison avec la page aspx.vb

    tiens nous au courant

  3. #3
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 57
    Points : 45
    Points
    45
    Par défaut
    Je pense que mon register est correct, ca n'a pas l'air de venir de la.
    On vient de me suggérer de créer et d'ajouter mon uc au pre-init de la page, je teste pour voir si ca marche avec un seul uc.
    Dans tout les cas ca ne résoudra pas entièrement mon problème puisque je sais combien d'uc ajouter uniquement au page_load.
    Merci de votre soutien

  4. #4
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 57
    Points : 45
    Points
    45
    Par défaut
    Bon bah rien à voir avec le moment où l'action est effectuée... Que ce soit au preInit ou au PageLoad, ça plante

  5. #5
    Membre averti Avatar de predalpha
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 392
    Points : 363
    Points
    363
    Par défaut
    quand tu debugges ligne par ligne c'est ici que ca plante ?
    uc_Lot.ID = "uc_Lot"

  6. #6
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 57
    Points : 45
    Points
    45
    Par défaut
    Non, le probleme c'est quand j'essaie de modifier un des controls fils de l'uc, en l'occurence le datagrid dont j'essaie de modifier le datasource...

  7. #7
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 57
    Points : 45
    Points
    45
    Par défaut
    Meme en simplifiant au maximum mon UC (il reste plus qu'un label) et en l'insérant ailleurs que dans le control ajax, j'obtiens encore l'erreur en modifiant le texte du label... ca doit etre un truc tout bete en plus.

  8. #8
    Membre averti Avatar de predalpha
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 392
    Points : 363
    Points
    363
    Par défaut
    salut dude, j'ai testé ton soucis et je te file ma source.

    Attention je suis sous VS2005 express


    voici les code de ma page par default (celle affichant les usercontrol)

    tu remarqueras cette ligne car c'est à toi de l'ajouter
    <%@ reference Control="~/ccc.ascx" %>

    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
     
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
     
    <%@ reference Control="~/ccc.ascx" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
     
     
        </form>
    </body>
    </html>
    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
     
    Partial Class _Default
        Inherits System.Web.UI.Page
     
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Dim a1 As ASP.ccc = LoadControl("~/ccc.ascx")
            a1.ID = "a1"
            a1.afficher("a1")
            form1.Controls.Add(a1)
     
            Dim a2 As ASP.ccc = LoadControl("~/ccc.ascx")
            a2.ID = "a1"
            a2.afficher("a2")
            form1.Controls.Add(a2)
     
        End Sub
    End Class
    Puis le code de mon controle ne contenant qu'un label

    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
     
    <%@ Control Language="VB" ClassName="ccc" %>
     
    <script runat="server">
     
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
     
        End Sub
     
        Public Sub afficher(ByVal txt As String)
            l.Text = txt
        End Sub
     
    </script>
     
    <asp:Label ID="l" runat="server" Text="Label" Width="553px"></asp:Label>
    Bon courage

  9. #9
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 57
    Points : 45
    Points
    45
    Par défaut
    Merci beacoup pour ton aide!
    Avant de lire ton message, je venais juste de modifier ma ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    Dim uc as myUserControl = New myUserControl
    ...
    et je l'avais remplacée par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Dim uc as myUserControl = loadControl("chemin vers l'uc")
    et je venais écrire ma solution ici mais tu m'as coupé l'herbe sous le pied .

    Merci encore

  10. #10
    Membre averti Avatar de predalpha
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 392
    Points : 363
    Points
    363
    Par défaut
    de rien dude

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

Discussions similaires

  1. attribut null dans user control
    Par salihovic dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/01/2010, 18h12
  2. Instance de user control => null reference
    Par Dude1205 dans le forum VB.NET
    Réponses: 7
    Dernier message: 20/08/2007, 11h28
  3. [C#] User Control dynamic
    Par Erakis dans le forum ASP.NET
    Réponses: 10
    Dernier message: 21/10/2004, 18h54
  4. [C#] DateTimePicker web user control
    Par titi29 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 29/06/2004, 18h38
  5. [VB.NET] Provoquer le rechargement d'un user control..
    Par didoboy dans le forum ASP.NET
    Réponses: 7
    Dernier message: 30/04/2004, 14h17

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