0

我添加了一个UpdatePanel包围 GridView 并给它两个触发器,它们是 UpdatePanel 之外的按钮。我无法获得按钮单击事件来触发 GridView 异步刷新。

我确定数据源正在更新,因为 F5 页面刷新显示了新数据(通过文本字段提交)

我也尝试过以编程方式更新UpdatePanel文件 ( ) 后面的代码中的 ,UpdatePanel1.Update();但也没有这样做。

这是我的代码:

<%@ 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>
4

1 回答 1

1

您可能遇到了被吞下的服务器端错误。要查看错误消息,最简单的方法是将您的临时替换AsyncPostBackTriggerPostBackTrigger.

于 2012-05-23T13:18:46.237 回答