2012-02-07 7 views
1

私はsqldatareaderを使ってページロード時のページにSQLデータを吐き出しましたが、ページ全体をリフレッシュせずに新しい結果セットからユーザーにデータをリフレッシュするjqueryボタンのクリック機能を追加したいと思います。ASP.NETでページを更新することなく、sqldatareaderデータのjquery/ajaxを更新するにはどうすればよいですか?

私は初心者ですが、どこから始めたらいいか分かりません。

私は私が持っている私のASPX

<div id="blockOver"> 
<% while (Reader.Read()) { 
    string filename = Reader.GetString(1); 
    string date = Reader.GetSqlDateTime(3).ToString(); 
    string filetype = Reader.GetString(4); 
    Int32 height = (Int32)Reader.GetSqlInt32(5); 
    Int32 width = (Int32)Reader.GetSqlInt32(6); 
    string uploadGroup = Reader.GetString(7); 
    string title = Reader.GetString(8); 
    string uniqueID = Reader.GetString(9); 
    string uploader = Reader.GetString(10); 
    string uniqueIDnoExt = Reader.GetString(12); 
%> 
<div class="block"> 
    <a href="#t=<%= uniqueID %>" onmouseover="defaultJs.displayInfo ('<%= title %>', '<%= date %>', '<%= filetype %>', '<%= uniqueIDnoExt %>')" onclick="defaultJs.showFile('<%= title %>', '<%= date %>', '<%= filetype %>', '<%= uniqueIDnoExt %>', '<%= uniqueID %>')" onmouseout="defaultJs.hideInfo()"> 
    <img title="<%= title %>" src="thumbs/<%= uniqueIDnoExt %>.jpg" /> 
    </a> 
</div> 
<% } %> 

と私のASPX.CS中で、次のDIVのコンテンツを持っている:

public partial class _Default : System.Web.UI.Page 
{ 
private SqlDataReader reader = null; 
public SqlDataReader Reader { get { return reader; } set { reader = value; } } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString(); 
    SqlConnection connection = new SqlConnection(connectionString); 
    connection.Open(); 

    SqlCommand command = new SqlCommand("SELECT * FROM uploads ORDER BY id DESC", connection); 
    command.Parameters.Add(new SqlParameter("uploader", "anonymous")); 

    Reader = command.ExecuteReader(); 
    } 
} 

これは、ページの読み込みにデータをロードするために働きます、私は今、jquery/ajaxを組み込んでjquery呼び出しでこのデータをリフレッシュできるようにしました。ページ全体をリフレッシュする必要はありません。

私はこれをどこから始めるべきかわかりません。私はそれが皆さんにとって第二の性質だと確信しています。誰かが簡単なソースを教えてくれたり、サンプルコードを提供することができますか?本当に感謝しています。

+1

まず、コードとコンテンツ(HTML)を混在させないでください。これにより、ページの読み込みや管理が難しくなります。また、あなたも組み込みSQLを使用していますが、これもうまくいきません - CommandType.StoredProcedureタイプのコマンドオブジェクトでストアドプロシージャを使用する方がはるかに良いです。 – CompanyDroneFromSector7G

+0

仲間のプログラマーからのヒント:数値インデックスを使用してリーダー値を取得しないでください。名前付き検索を使用します。 – Haoest

答えて

1

を使用している場合、それは本当に簡単なUTの使用です。インターネットブラウザで実行されているJavaScriptコードです。

Jqueryは、DOM操作(HTML要素の検索、変更、追加)とajax呼び出しを行うためのgreetライブラリです。

HTMLコントロール(ボタン、タブなど)またはJavaScriptタイマーのいずれかにajax呼び出しをワイヤリングする必要があります。

また、ajax呼び出しを実装すると、サーバーサイド(HTTP GETまたはPOST呼び出しに応答するもの)にREST Webサービスを公開する必要があることを意味します。

1

Asp.net Webフォームを使用している場合、フレームワークに簡単に更新できる部分的なページの更新が見つかることがあります。 jQueryは素晴らしいですが、Asp.net Web Formsポストバックモデルに統合するのは難しいかもしれません。

http://www.asp.net/web-forms/tutorials/aspnet-ajax/understanding-partial-page-updates-with-asp-net-ajax

+0

Zachがここで言うことはまあまあですが、私は個人的にはASP.NETのポストバックモデルを嫌いですが、jQueryのajaxコールは常に使用しています:) – CompanyDroneFromSector7G

+0

@bukko - MVCを救助する! –

1

それは部分的にポストバックせずにレンダリングするためにページのセクションを可能にするASP UpdatePannelを使用してください。あなたはあなたはjqueryの程度を完全にクライアント側であるビットを読み取る必要があるASP.net

<asp:ScriptManager ID="ScriptManager1" runat="server" /> 

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
    <div id="blockOver"> 
     ...Your code... 
    </div> 
    </ContentTemplate> 
</asp:UpdatePanel> 
+0

+1 UpdatePanelsは、特にあなたがひどく複雑なものをやっていないときは、本当に簡単です。サーバー側のコードで必要なものを実行するボタンが既にあるので、それをラップして、更新パネル内の表示領域にするだけで完了です。 Voila。 – Servy

関連する問題