asp.net でページを作成しました。データベースからデータにアクセスしています。私が欲しいのは、データベース内のデータを変更するたびに、ユーザーが更新ボタンを押す必要なく、変更がページに自動的に反映されることです。誰かがその方法を教えてくれますか? Javaスクリプトを使用して実行できますか。
3 に答える
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
}
ロング ポーリングとコメット プログラミングについて読む
Web ページの場合、最善の方法は、javascript/jQuery を使用してページを非同期的にポーリングすることです
javascript: setTimeout - http://www.w3schools.com/js/js_timing.asp
jquert: $.ajax - http://api.jquery.com/jQuery.ajax/
- 指定した間隔でループする関数を作成する - function CheckServer(seconds)
- サーバーに更新があることを知らせるページを作成します - Updated.aspx
- $.ajaxを使用して、関数 CheckServer(seconds)でUpdated.aspxを呼び出し、更新を確認します。
- 更新がある場合は、コードを実行してページ上の必要な部分を更新します
この例は、VS2012 ASP.NET プロジェクトとしてここにあります。
https://docs.google.com/file/d/0B9m3YXHeSTDOakxVbk50MHhhTkE/edit
3 つの重要なファイルがあります。
- UserPage.aspx - ユーザーが更新を表示する場所。
- MakeUpdatePage.aspx - 管理者が更新を行う場所。
- 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