10
votes

ASP.NET / Dataitem de Datalist est NULL après la publication

Après le poteau (cliquez sur un bouton) dans mon formulaire ASP.NET, tout le dataitem de mon formulaire est null. Pourquoi? Que dois-je faire pour récupérer le contenu du dataliste même après la publication? xxx


0 commentaires

3 Réponses :


0
votes

Vérifiez si vous avez vraiment la base de données () le dataliste après chaque publication. Normalement, vous recevez Datamisist, GridView, DropdownList (et d'autres contrôles) Vide après un post-pack lorsque vous ne les liez à nouveau.


1 commentaires

Merci pour l'indice, mais je félicite vraiment le datataliste même sur le post-plan. J'ai également vérifié dans le débogueur et le DataSource est lié au post-plan.



6
votes

dataitem est uniquement disponible lorsque DataBindinging.

charge est livré avant Cliquez sur Vous écrasez de toute façon vos données.

Faites ceci: xxx

Vous devez utiliser une source de données (comme ObjectDataSource) pour gérer la base de données et la mise à jour / insérer.

Mise à jour / Conseil:

à l'aide d'espaces réservés pour lier des données à vous faire des ennuis. Vous devriez envisager d'utiliser une liste de données ListView, GridView, Datalist ou Repeater. Je suis sûr que tous ceux-ci font ce que vous voulez et vous devrez programmer moins. Utilisez votre temps pour les apprendre au lieu d'essayer de faire fonctionner cela, son condamné à l'échec.


5 commentaires

J'utilise déjà un datataliste (consultez le titre). Et je suis obligé d'utiliser un espace réservé puisque je ne peux pas savoir à l'avance quel sera le type de contrôle de chaque champ. En fait, chaque Datatalistitem de mon Datalamiste contient un contrôle de l'espace réservé à quel type sera déterminé dans la liaison de données.


Alors, que mettez-vous dans ces espaces réservés?


Chaque espace réservé contient une commande, telle que la zone de texte, la case, la radiobuttonlist, la liste déroulante, etc. Je ne sais pas le type de contrôle exact depuis sa dynamique. Chaque espace réservé représente un champ sous une forme, par exemple, nom, adresse, email, aliments préférés, etc.


Vous devez les ajouter sur le post-plan, mais ne mettez pas les données. Ajoutez un paramètre booléen à votre fonction de liaison, définissez-la sur FALSE lorsque vous postez-la. Lorsque c'est vrai que vous ajoutez le contrôle + des données si c'est FALSE, vous n'ajoutez que le contrôle et extrayez les données en cliquant.


Cela ne fonctionnera pas, car le dataitem n'est pas accessible sur le post-plan.



9
votes

a trouvé ma réponse ici .

Qu'est-ce que John a dit, les éléments de source de données ne sont qu'avables quand le tableau de données. Ils ne sont plus accessibles après Chargement initial.

Vous pourriez envisager d'avoir un objet ou Collection d'objets représentant données à l'écran que vous mettez à jour avec le la grille, puis persist change de cette aux bases de données.

plus précisément, j'ai utilisé un champ de cache pour stocker un identifiant à travers les messages et je demande aux données de la base de données au lieu d'essayer de le former le dataitem (qui ne peut pas être utilisé en dehors de l'événement de base de données).

the Hiddenfield contrôle est habitué stocker une valeur qui doit être persisté à travers les postes sur le serveur.


4 commentaires

Eh bien, je ne vois aucun autre choix. Et cela fonctionne assez bien jusqu'à présent.


Hiddenfield a travaillé pour moi. J'utilise un répéteur et je dois persister les données de la liaison des clics de bouton.


Cela ressemble à un bon moyen de faire deux fois plus de données de base de données au besoin. On dirait que le dataliste pourrait avoir un mauvais modèle.


Ce lien est expiré.