0

asp.net でページを作成しました。データベースからデータにアクセスしています。私が欲しいのは、データベース内のデータを変更するたびに、ユーザーが更新ボタンを押す必要なく、変更がページに自動的に反映されることです。誰かがその方法を教えてくれますか? Javaスクリプトを使用して実行できますか。

4

3 に答える 3

1

Web ソケットを使用して接続されたクライアントにデータを送信したり、AJAX、jQuery ajaxを使用してデータベースの変更のためにサーバーをプールしたり、asp.net ajax タイマーコントロールを使用したりできます。asp.net ajaxタイマーを使用すると、他のタイマーよりも簡単になります。

asp.net タイマーの使用

HTML

<asp:ScriptManager ID="ScriptManager1" runat="server" />
    <asp:Timer runat="server" id="UpdateTimer" interval="5000" ontick="UpdateTimer_Tick" />
    <asp:UpdatePanel runat="server" id="TimedPanel" updatemode="Conditional">
        <Triggers>
            <asp:AsyncPostBackTrigger controlid="UpdateTimer" eventname="Tick" />
        </Triggers>
        <ContentTemplate>
            <asp:Label runat="server" id="DateStampLabel" />
        </ContentTemplate>
</asp:UpdatePanel>

コードビハインド (サーバー側コード)

protected void UpdateTimer_Tick(object sender, EventArgs e)
{
   // Update the ui with database changes
}
于 2013-01-02T10:08:51.897 に答える
1

ロング ポーリングコメット プログラミングについて読む

于 2013-01-02T10:11:42.293 に答える
1

Web ページの場合、最善の方法は、javascript/jQuery を使用してページを非同期的にポーリングすることです

javascript: setTimeout - http://www.w3schools.com/js/js_timing.asp

jquert: $.ajax - http://api.jquery.com/jQuery.ajax/

  1. 指定した間隔でループする関数を作成する - function CheckServer(seconds)
  2. サーバーに更新があることを知らせるページを作成します - Updated.aspx
  3. $.ajaxを使用して、関数 CheckServer(seconds)でUpdated.aspxを呼び出し、更新を確認します。
  4. 更新がある場合は、コードを実行してページ上の必要な部分を更新します

この例は、VS2012 ASP.NET プロジェクトとしてここにあります。

https://docs.google.com/file/d/0B9m3YXHeSTDOakxVbk50MHhhTkE/edit

3 つの重要なファイルがあります。

  1. UserPage.aspx - ユーザーが更新を表示する場所。
  2. MakeUpdatePage.aspx - 管理者が更新を行う場所。
  3. aspx ページを介して更新をチェックする代わりに、更新とデータ交換を管理するservices.asmxに Web サービスを作成しました。

コードは完璧ではありません。ストーリーの要点を説明するためのものですが、動作します。2 ユーザー、1 管理者のシナリオでテストしました。

Web サービスについても紹介したので、このソリューションは少し複雑です。デフォルトのものではありません。これらは少しカスタマイズされています。これらには、クライアントのブラウザーから直接呼び出され、 json オブジェクトを返すことを可能にする属性があります。したがって、 jsonとは何かも学習します...

これらの概念については、次の記事を参照してください。

http://www.codeproject.com/Articles/45275/Create-a-JSON-WebService-in-ASP-NET-2-0-with-a-jQu

于 2013-01-02T10:16:00.483 に答える