L'actualisation d'un updatepanel sur buttonclick de code-behind
Je suis à l'aide d'un Gridview qui est à l'aide de la source de données & de la liaison de données. Quand je recharge la page, le contrôle gridview est mis à jour mais je veux qu'il soit sur le buttonclick, mais il ne fonctionne pas pour moi.
Le contrôle gridview à l'intérieur de l'updatepanel:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="upWall" runat="server" ChildrenAsTriggers="true" UpdateMode="conditional">
<ContentTemplate>
<asp:GridView ID="gvWallPosts" runat="server" AutoGenerateColumns = "false"
CaptionAlign="NotSet" CellPadding="5">
<Columns>
<asp:TemplateField HeaderText="Avsändare">
<ItemTemplate>
<%# GetSender((int)Eval("WallSender"))%>
<br />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Inlägg">
<ItemTemplate>
<%# Eval("Post")%>
<br />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
<asp:TextBox ID="txtWall" runat="server" Height="105px" TextMode="MultiLine" Width="227px"></asp:TextBox>
<br />
<asp:Button ID="btnWall" runat="server" Text="Posta" onclick="btnWall_Click" />
Code-behind:
protected void btnWall_Click(object sender, EventArgs e)
{
con.SendWallPost(con.GetId(Membership.GetUser().UserName), Convert.ToInt32(Request.QueryString["ID"]), txtWall.Text); //This method is sending the post
upWall.Update();
}
Donc, je veux de l'updatepanel être mis à jour sur le ButtonClick, je ne veux pas recharger toute la page pour voir le résultat
Comment êtes-vous rechargez votre page?
Êtes-vous sûr que gestionnaire de clic est tiré?
Oui il est déclenché, parce que quand je recharge la page, le panneau est mis à jour
Je suis toujours intéressé de savoir si vous rechargez votre page en utilisant le code.
Respecter Masaraure: Non je n'utilise pas de code de recharger la page. Juste en utilisant le navigateur à recharger. C'est pourquoi je veux faire ce updatepanel travail 🙂
Êtes-vous sûr que gestionnaire de clic est tiré?
Oui il est déclenché, parce que quand je recharge la page, le panneau est mis à jour
Je suis toujours intéressé de savoir si vous rechargez votre page en utilisant le code.
Respecter Masaraure: Non je n'utilise pas de code de recharger la page. Juste en utilisant le navigateur à recharger. C'est pourquoi je veux faire ce updatepanel travail 🙂
OriginalL'auteur MrProgram | 2013-01-10
Vous devez vous connecter pour publier un commentaire.
Car je ne vois pas le bouton
btnWall
, je suppose que c'est à l'extérieur de laUpdatePanel
.Mais vous devez définir explicitement la gâchette si vous voulez permettre à un contrôle à l'extérieur d'un
UpdatePanel
pour déclencher une publication.Par conséquent, vous pouvez utiliser un
AsyncPostBackTrigger
:Êtes-vous sûr que
con.SendWallPost
ne jette pas une exception?Oui, l'application doit se bloquer pour moi parce que je n'ai pas inplemented toute try/catch pour le moment
Puisque vous êtes dans une publication asynchrone, vous seriez probablement voir l'exception, comme d'erreur javascript qui peuvent être cachés ou d'ingestion. De toute façon, utiliser le débogueur pour voir s'il réussit.
OriginalL'auteur Rango
Par défaut, page partielle des mises à jour sont activés dans un panneau de mise à jour car la valeur par défaut de la propriété EnablePartialRendering du contrôle ScriptManager est vrai.Mettre le bouton dans le panneau de mise à jour est suffisant pour vous donner ce dont vous avez besoin depuis le bouton agit comme un asynchronus publication de contrôle à l'intérieur du panneau.Puis il suffit d'ajouter cette ligne( gvWallospts.Databind()) après la mise à jour.Permettez-moi de savoir comment il va.
Essayez vous de balisage comme ce
Dans votre Ligne de la grille de mise à jour de l'événement
Assurez-vous que vous aussi, vous Contraignant le code de chargement de la page est pris en sandwich par cette
Où en êtes-vous de la liaison de votre datagridveiw. Est-il dans le Chargement de la page
Oui il est en Chargement de la page
Je mettrai à jour mon post illustrant l'utilisation d'un élément de modification de modèle qui va prendre loin de votre misère. Modèles d'élément n'a jamais été prévu pour la modification d'enregistrements.
Liaison va prendre le contenu de la zone de texte et une carte à la sous-jacentes de la source de données.
OriginalL'auteur Abide Masaraure
Vous devez soit mettre le bouton à l'intérieur du panneau de mise à jour ou de définir explicitement la gâchette pour mettre à jour le panneau de mise à jour sur l'événement clic du bouton comme suggéré par Tim Schmelter.
Assurez-vous que vous n'êtes pas avoir un erreur de javascript. Essayez de vérifier d'erreur de la console de votre navigateur (firefox). Raisons les plus probables sont contradictoires, les javascripts. Panneau de mise à jour est mise à jour à l'aide de javascript (côté client), donc si vous rencontrez des erreurs dans le code javascript, il sera la cause de problème. En outre, la validation côté client (contrôles de validateur) peuvent également empêcher le panneau de mise à jour.
Je tiens à vous suggérons d'utiliser fiddler fiddler2.com/fiddler2 . Il vous permettra de voir ce qui se passe réellement. Vous devriez également vérifier si elle est d'effectuer toute demande ou pas et si il fait une demande, c'est d'obtenir la bonne réponse ou pas.
Je n'utilise pas de javascript, sauf pour les autogenereted .js fichiers dans visual studio
Avez-vous vérifié la console d'erreur ? En outre, vous n'avez pas besoin de mettre à jour le panneau de mise à jour de code derrière. Il sera automatiquement mis à jour. Vous pouvez supprimer ces mensonges.
OriginalL'auteur Murtuza Kabul