2012-05-21 3 views
0

J'ai ajouté un UpdatePanel pour entourer un GridView et lui a donné deux déclencheurs qui sont des boutons en dehors du UpdatePanel. Je ne peux pas obtenir les événements de clic de bouton pour déclencher le GridView pour actualiser de manière asynchrone.ASP.NET UpdatePanel ne fonctionne pas

Je suis sûr que la source de données est mise à jour car une actualisation de la page F5 affiche les nouvelles données (qui est soumis par un champ de texte)

J'ai aussi essayé de mettre à jour par programme le UpdatePanel dans le fichier code-behind (UpdatePanel1.Update();) mais cela ne le fait pas non plus.

Voici mon code:

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" 
    CodeFile="GamePage.aspx.cs" Inherits="GamePage" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="Server"> 
    <asp:ScriptManager ID="ScriptManager1" runat="server"> 
    </asp:ScriptManager> 
    <span id="userGuess"> 
     <asp:Label ID="gameStatusLabel" runat="server" CssClass="guesses" Text="15"> 
     </asp:Label> 
     <asp:Label ID="guessLabel" runat="server" Text="Enter your guess:" 
      CssClass="guessLabel"></asp:Label> 
     <asp:TextBox ID="GuessTxtBx" runat="server" MaxLength="4"></asp:TextBox> 
     <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
      ControlToValidate="GuessTxtBx" 
      ErrorMessage="Don't forget to guess!" CssClass="error" Visible="True" 
      Display="Dynamic"></asp:RequiredFieldValidator> 
     <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
      ControlToValidate="GuessTxtBx" 
      ErrorMessage="Your guess must be a four digit number" 
      ValidationExpression="\d{4}" 
      CssClass="error" Visible="True" Display="Dynamic"></asp:RegularExpressionValidator> 
     <span class="guessBtns"> 
      <asp:Button ID="SubmitBtn" runat="server" OnClick="SubmitBtn_Click" 
       Text="Submit Guess"/> 
      <asp:Button ID="newGameButton" runat="server" OnClick="newGameButton_Click" 
       Text="New Game" /></span> 
    </span> 
    <div> 
     The game history:<br /> 
     <br /> 
     <asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="false" 
       UpdateMode="Conditional"> 
      <ContentTemplate> 
       <asp:GridView ID="TurnGridView" runat="server" AutoGenerateColumns="False" 
        DataKeyNames="turnID" 
        DataSourceID="TurnsDataSource1" Height="133px" Width="446px" 
         CssClass="table3"> 
        <Columns> 
         <asp:BoundField DataField="turnID" HeaderText="turnID" 
          InsertVisible="False" ReadOnly="True" 
          SortExpression="turnID" Visible="False" /> 
         <asp:BoundField DataField="gameID" HeaderText="gameID" 
          SortExpression="gameID" Visible="False" /> 
         <asp:BoundField DataField="guess" HeaderText="Your Guess" 
          SortExpression="guess" /> 
         <asp:BoundField DataField="responseBulls" HeaderText="Bulls" 
          SortExpression="responseBulls" /> 
         <asp:BoundField DataField="responseCows" HeaderText="Cows" 
          SortExpression="responseCows" /> 
        </Columns> 
       </asp:GridView> 
       <asp:ObjectDataSource ID="TurnsDataSource1" runat="server" 
        SelectMethod="GetTurnsByGameID" 
        TypeName="BusinessTier.Turn" 
        OldValuesParameterFormatString="original_{0}" 
        onselecting="TurnsDataSource1_Selecting"> 
        <SelectParameters> 
         <asp:Parameter Name="gameID" Type="Int32" /> 
        </SelectParameters> 
       </asp:ObjectDataSource> 
      </ContentTemplate> 
      <Triggers> 
       <asp:AsyncPostBackTrigger ControlID="SubmitBtn" EventName="Click"/> 
       <asp:AsyncPostBackTrigger ControlID="newGameButton" EventName="Click" /> 
      </Triggers> 
     </asp:UpdatePanel> 
    </div> 
</asp:Content> 
+0

Voir si cela vous aide: [Déclenchez une mise à jour du UpdatePanel par un contrôle qui est dans un ContentTemplate différent] (http://stackoverflow.com/questions/417131/trigger-an-update-of-the- updatepanel-by-a-control-that-is-in-different-contentpl) – jadarnel27

+0

Merci pour la référence mais je ne pouvais pas tout à fait le retirer. Pour résumer; J'ai un GridView affichant les entrées précédentes dans une zone de texte. Je voulais que submitBtn déclenche l'envoi des données dans la source de données de Gridview et une mise à jour asynchrone de Girdview. Pour m'assurer que les déclencheurs ont été ajoutés le plus tard possible (selon votre lien), je les ai ajoutés lorsque la zone de texte a été modifiée. Cela ne fonctionne toujours pas. Merci quand même – hippo30

+0

D'abord identifier s'il y a une erreur. Par exemple parfois, cela sera dû à la fermeture incorrecte de la balise html. –

Répondre

1

Vous avez probablement obtenu une erreur côté serveur qui est avalée. Pour voir le message d'erreur, le plus simple est de remplacer temporairement votre AsyncPostBackTrigger par un PostBackTrigger.

Questions connexes