6
votes

Rafraîchissant une commande de répéteur dans un Panneau Update avec ASP.NET

J'essaie de coder une page où vous pouvez poster un commentaire sans recharger la page entière. Les commentaires sont affichés à l'aide d'un contrôle de répéteur. Le modèle ressemble à ceci: xxx

la fonction postcommentbutton_click () fonctionne simplement bien - cliquer sur "Soumettre" fera le message. Cependant, j'ai besoin de recharger complètement la page afin de voir de nouveaux commentaires - le poste que l'utilisateur vient de faire ne montrera pas jusque-là. I DataildId le répéteur de page_Load () après un chèque (! Ispostback).

La fonction postcommentbutton_click () ressemble à ceci: xxx

dans mon cas , nous voyons postcommentfeedback.text rafraîchi, mais, encore une fois, pas le contenu du répéteur qui devrait avoir un autre poste.

Qu'est-ce que cela me manque?


1 commentaires

Je suis à peu près sûr que c'est parce que la source de données de mon répéteur est une mysqldatreader, et je ne le mettant pas à jour après que l'utilisateur a fait son poste. Ce n'est pas mis à jour car je ne fais que la base de données seulement si (! Ispostback) ... Quelle serait la bonne façon de le faire alors? Je devrais Databind sur chaque page_load (), mais j'ai besoin de Databind après avoir été posté par un commentaire.


5 Réponses :


2
votes

Vous devriez Databind dans la page_load dans A! Ispostback tel que vous êtes. Vous devez également être Databind dans votre événement de clic. XXX


0 commentaires

0
votes

Au lieu de faire votre DataSource un mysqldatreader, demandez à votre lecteur de peupler une liaison à une liaison ou quelque chose comme ça. Gardez cela en session et faites votre databind tous les non-post-retours et cliquez sur. Lorsque votre utilisateur publie, vous pouvez l'ajouter à la liste et attendre quelque chose pour le dire de sauvegarder cela, mais il a plus de sens dans le contexte de la publication de commentaires pour enregistrer leur poste sur votre DB et refaire votre DataPull et Stompez sur votre BindingList et Re-Databindind.

Aussi, Peeve Personal: Je n'aime pas <% # eval ....%>. Le code de votre page est généralement un mauvais signe. Essayez d'utiliser le répéteur.ItemDataBound http://msdn.microsoft. com / fr-nous / bibliothèque / system.web.ui.webcontrols.repeater.itemdatabound.aspx


0 commentaires

0
votes

Il me semble que la solution rapide est de se lier à la charge de la page quel que soit le post-plan. Alternativement, vous pouvez reculer de postcommentbutton_click.


0 commentaires

0
votes
protected void Timer1_Tick(object sender, EventArgs e)   
{

       Repeater1.DataBind();
           /*This is all I did for it to work.*/
}

protected void Buttontextbox_Click(object sender, EventArgs e)

{

       this.DataBind();
    /*Leave sql connection to your database above "this.databind"*/

}

0 commentaires

0
votes

Essayez de mettre le panneau de mise à jour entre les balises et si vous l'avez déjà fait, vérifiez si la fermeture des balises DIV est appropriée


0 commentaires