Question

J'ai un contrôle .NET repeater qui est lié ??aux données dans une liste. Dans le cadre de la Collection d'éléments du répéteur, j'ai un " bouton Supprimer " qui supprime effectivement cet élément de liste actuel.

Ceci fonctionne. Dans code-behind, je peux supprimer un élément de la source de données du Repeater .

Mon problème est le suivant : lorsque je réinitialise la source de données mise à jour et que j'appelle MyRepeater.DataBind () , le Repeater l'interface ne s'actualise pas avec l'élément supprimé.

Je recherche l'événement à redessiner ou à actualiser le répéteur en fonction de la liste mise à jour. Merci pour tous les pointeurs ou exemples.

Était-ce utile?

La solution

Vous devez appeler la méthode 'DataBind' sur votre source de données, puis appelez 'DataBind' sur votre contrôle Repeater.

Autres conseils

Nourrissez-vous la source de données actualisée?

Si vous définissez la source de données dans code-behind, vous devez la définir avec des données actualisées, puis appelez la méthode DataBind.

J'ai rencontré quelque chose comme ça avec un contrôle Repeater et une source DataTable.

Il n'y avait pas de méthode Refresh dans DataTable, mais l'appel de DataTable.EnableDynamicData (typeof (DataTable)) lors du chargement de la page initiale a résolu le problème.

J'ai eu une situation similaire ... un répéteur lié à un xmlDataSource, tous deux à l'intérieur d'un UpdatePanel. Je voulais laisser l'utilisateur taper un nom à la fois, puis cliquer sur le bouton "Ajouter". bouton pour mettre à jour la liste dans le répéteur.

J'ai activé " EnableViewState " sur False sur le répéteur et le xmlDataSource, et définissez " EnableCaching " sur xmlDataSource à False également. J'ai défini la propriété Data de xmlDataSource, appelée DataBind pour xmlDataSource, la propriété DataSourceID du répéteur, puis DataBind pour le répéteur. Peut-être que c'était exagéré ... mais cela a fonctionné. Cela aidera peut-être.

UPDATE: j'ai constaté qu'en définissant EnableViewState sur False sur le contrôle repeater, mon événement ItemCommand ne se déclencherait pas. Mais je pense que vous devez uniquement définir EnableViewState / EnableCaching sur False pour la source de données ... J'ai ramené le paramètre EnableViewState sur True pour le répéteur et maintenant tout semble bien se passer.

Le forçage de Databind est normalement effectué là où la DataBind automatique est effectuée dans l'événement PreRender .

Normalement, si vous supprimez l'événement click, le répéteur doit s'actualiser tout seul puisque, automatiquement, dans le pré-rendu, les contrôles de la page sont DataBind (). Voici ce que dit le doc de Microsoft:

  

PreRender: avant que cet événement se produise, chaque contrôle lié aux données dont la propriété DataSourceID est définie appelle sa méthode DataBind.

source

Donc, vous avez probablement affecté Youritem.DataSource = List, mais MS suggère de faire YourItem.DataSourceID = List.ID, ou quelque chose du genre.

J'espère que ça aide

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top