none
Le contrôle SqlDataSource ne possède pas de conteneur d'attribution de noms.

    Question

  • Quelqu'un pourrait-il m'expliquer pourquoi ce foutu Visual Studio me sort toujours des bugs plus débiles les uns que les autres et surtout avec aucune documentation et aucun topique sur le sujet.

    Pour les curieux voici mon erreur,

    J'ai un DataList (+ SQLDataSource) pour afficher les commentaires d'un blog. jusque la tout va bien. Dans l'ItemTemplate, un panel qui ne s'affiche que lors du rôle "modo" (Par code dans le ItemDataBound) avec un bouton d'édition, de suppression et un troisième qui détermine si le commentaire est publié ou non. Jusque là ça gère, c'es cool.

    Problème, il faut des réponses dans les commentaires. Alors on ajoute un DataList supplémentaire dans l'ItemTemplate du DateList existant, avec le même panel de modération et la comme par hasard ça coince.

    Le tout étant dans un UpdatePanel, lorsque j'actualise les commandes sont bien exécutées mais le DataBinding déclenche une erreur, erreur que j'obtient par le AsyncPostbackEroor du ScriptManager:

    Le contrôle SqlDataSource 'DSResponses' ne possède pas de conteneur d'attribution de noms. Vérifiez que le contrôle est ajouté à la page avant d'appeler DataBind.

    DSResponses est bien entendu le SqlDataSource qui se trouve dans le template du premier DataList, et qui alimente le second.

    Après avoir effectué des recherches sur le sujet je ne trouve rien pour moi ce message ne veut absolument rien dire, ça n'aide pas du tout. 

    C'est vraiment gonflant tous ces bugs à deux sous... Décidément .Net est vraiment une technologie peu fiable, on est la la V 4.5 et on a l'impression de travailler avec une pauvre beta...

    Bref, comme d'hab quoi.



    jeudi 29 août 2013 18:40

Réponses

  • Bonjour =)

    Merci pour cette intervention, effectivement je n'ai pas pensé à faire une recherche en anglais. 

    Pour répondre à la question, le DataSource n'est pas instancié par code. Il est présent dans l'ItemTemplate du DataList. Il est bien sûr créé de façon dynamique lors de l'exécution mais pas par mon propre code.

    J'ai cependant trouvé une piste sur l'origine du problème. Le DataSource voit dans sa liste de select parameters, des paramètres liés au contrôles présents sur le premier niveau du formulaire (Un DropDownList directement présent dans l'UpdatePanel pour filtrer la clause ORDER BY). Ce qui je suppose pose problème. Il suffit donc de faire transiter ce paramètre (par code) dans un élément de second niveau pour que le DataSource qui se trouve au 3ème niveau ait accès à l'information.

    Effectivement celui-là il fallait le trouver ! Je suis venu ici avec la réponse car j'ai par pur hasard modifié la requête et je vois que votre réponse correspond à mon cas. Je vais donc tenter de corriger ce problème.

    Ce pendant je persiste à dire que le message d'erreur n'est absolument pas explicite.

    En tous cas je vous remercie pour cette réponse.

    vendredi 30 août 2013 16:22

Toutes les réponses

  • Bonjour de nouveau Mayzz

    Après avoir effectué des recherches sur le sujet je ne trouve rien pour moi ce message ne veut absolument rien dire, ça n'aide pas du tout.

    Est que vous avez fait une traduction pour cet message d'erreur en anglais avec bing.com/translator?

    Le resultat c'est :

    The SqlDataSource control has no naming container. Verify that the control is added to the page before calling DataBind.

    Justement copier-coller dans un moteur de recherche.

    Parmi les résultats retournés par bing, j’ai trouvé celui-ci :

    http://forums.asp.net/t/1629355.aspx?The+OboutDropDownList+control+'ddlPosition'+does+not+have+a+naming+container.++Ensure+that+the+control+is+added+to+the+page+before+calling+DataBind

    Et marqué come solution (traduit en français toujours avec Bing Translator):

    Simplement instancier un contrôle n'est pas « mettre dans le contrôle parent ». Vous devrez également ajouter ces choses à la collection Controls du contrôle.
    Donc pouvez-vous vérifier ça ?

    Merci!


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    vendredi 30 août 2013 09:43
  • Bonjour =)

    Merci pour cette intervention, effectivement je n'ai pas pensé à faire une recherche en anglais. 

    Pour répondre à la question, le DataSource n'est pas instancié par code. Il est présent dans l'ItemTemplate du DataList. Il est bien sûr créé de façon dynamique lors de l'exécution mais pas par mon propre code.

    J'ai cependant trouvé une piste sur l'origine du problème. Le DataSource voit dans sa liste de select parameters, des paramètres liés au contrôles présents sur le premier niveau du formulaire (Un DropDownList directement présent dans l'UpdatePanel pour filtrer la clause ORDER BY). Ce qui je suppose pose problème. Il suffit donc de faire transiter ce paramètre (par code) dans un élément de second niveau pour que le DataSource qui se trouve au 3ème niveau ait accès à l'information.

    Effectivement celui-là il fallait le trouver ! Je suis venu ici avec la réponse car j'ai par pur hasard modifié la requête et je vois que votre réponse correspond à mon cas. Je vais donc tenter de corriger ce problème.

    Ce pendant je persiste à dire que le message d'erreur n'est absolument pas explicite.

    En tous cas je vous remercie pour cette réponse.

    vendredi 30 août 2013 16:22
  • Chose qui n'a rien à voir avec le topique actuel mais il me semble que c'est avec vous que j'avais évoqué un bug datant de plus de 5 ans et jamais corrigé dans Visual Studio.

    Et bien vous pouvez constater que ce bug est toujours d'actualité :

    Je précise que ce bug est survenu d'un seul coup, alors que l'éditeur CSS était fermé et que je n'avais pas touché au fichier. Même si un événement précis le déclenche ce problème, je l'ai rencontré à plusieurs reprises en développant de gros projets sous Visual Studio de façon aléatoire, de puis 5 ans ! Je trouve tout de même louche le fait d'être le seul développeur au monde à rencontré ce bug, d'autant plus que cela ne peut provenir de mon environnement car j'ai développé sur des dizaines de machines différentes. Malheureusement c'est encore un bug qui ne peut être reporter car il ne peut être reproduit. Mais c'est une honte pour Microsoft d'avoir de tels bugs digne d'un débutant sur un logiciel professionnel servant à développer de grosses plateformes et sensé être productif.

    vendredi 30 août 2013 20:04
  • Désolé j'en ai oublié de préciser la nature du bug : Le fichier CSS est tronqué par Visual Studio de façon aléatoire. 

    Cela ne vous est jamais arrivé ?

    vendredi 30 août 2013 20:05
  • Quelle version de VS utilisez-vous?

    On a marqué la réponse pour le problème initiale.

    Pouvez-vous verifier si c'est bien votre cas:

    http://connect.microsoft.com/VisualStudio/feedback/details/757636/problem-when-assign-two-or-more-css-class-in-cssclass-property-of-a-control

    ou celui-ci?

    http://connect.microsoft.com/VisualStudio/feedback/details/538053/corrupted-stylesheet#

    A priori c'est lié avec les fichiers CSS qui ne sont pas créés avec VS.

    Merci!


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.



    lundi 2 septembre 2013 07:58