0

更新パネルを使用して、SqlDataSource と GridView を contenttemplate 内に配置しています

timercontrol を asyncpostback トリガーとして設定しましたが、sqlserver の関連テーブルからレコードを変更すると、グリッドビューが更新されません。さらに、さらにおかしなことは、更新を行ったときに、削除されたレコードがまだグリッド ビューに表示されることです。ページの後ろに投稿)また、データソースのキャッシュを無効にしましたが、これは助けにはなりません!!!!!

これが私のコードです

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" 
      Inherits="_Default" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
    </div>





    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">

    <ContentTemplate>
    <div id="ajx">
    <div>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:busConnectionString %>" 
            SelectCommand="SELECT * FROM [reserv]" EnableCaching="false" CacheDuration="0" CacheExpirationPolicy="Absolute" EnableViewState="false"></asp:SqlDataSource>
    </div>
    <div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataSourceID="SqlDataSource1" EnableModelValidation="True">
            <Columns>
                <asp:BoundField DataField="SeatNo" HeaderText="SeatNo" 
                    SortExpression="SeatNo" />
                <asp:BoundField DataField="Status" HeaderText="Status" 
                    SortExpression="Status" />
            </Columns>
        </asp:GridView>
    </div>
    <div>
        <asp:Timer ID="Timer1" runat="server" Interval="1000" ontick="Timer1_Tick">

        </asp:Timer>
    </div>

    <div>
        <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
    </div>

    </div>
    </ContentTemplate>

    <Triggers>
    <asp:AsyncPostBackTrigger ControlID="Timer1"/>
    </Triggers>



    </asp:UpdatePanel>




    </form>
</body>
</html>
4

1 に答える 1

1

タイマーの目盛りごとに、データソースとグリッドビューを手動でデータバインドする必要があります。
Timer1_Tick イベントに以下を追加します。

    protected void Timer1_Tick(object sender, EventArgs e)
    {
        SqlDataSource1.DataBind();
        GridView1.DataBind();
    }
于 2012-12-02T11:32:48.843 に答える