2009-08-11 45 views
2

私はSQLクエリからのいくつかのデータを表示するリピータ持っている:分離コードでASP.NETはポストバックなしでリピータのDataSourceを変更しますか?

<asp:Repeater runat="server" ID="damQuickList" OnItemDataBound="damQuickList_OnItemDataBound"> 
    <HeaderTemplate> 
     <ul> 
    </HeaderTemplate> 

    <ItemTemplate> 
     <li><asp:HyperLink runat="server" ID="damAnchor" /></li> 
    </ItemTemplate> 

    <FooterTemplate> 
     </ul> 
    </FooterTemplate> 
</asp:Repeater> 

damQuickList.DataSource = (Data.RunSelectQuery("SELECT * FROM Table ORDER BY " + radioButton.Value)); 
damQuickList.DataBind(); 

は、DataSourceを変更し、それがリピーターに更新する必要があり、なしにする方法はありますページのポストバック(AJAXのやり方など)が必要ですか?私はここで見つけた非同期コントロールを使用しています:http://www.asynccontrols.com/しかし、IE6/7で使用しているいくつかの問題があります。

答えて

3

ASP.NET AJAXコンポーネントを使用してください。あなたのページにScriptManagerを置き、あなたのページにUpdatePanelを置く。更新パネルの中で、ContentTemplateはリピータを配置します。簡単な例は次のようになります

...

ASPXマークアップ

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

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 

     <table> 
      <asp:Repeater ID="Repeater1" runat="server"> 
       <ItemTemplate> 
        <tr> 
         <td> 
          <%# Eval("Data") %> 
         </td> 
        </tr> 
       </ItemTemplate> 
      </asp:Repeater> 
     </table> 

     <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> 

    </ContentTemplate> 
</asp:UpdatePanel> 

C#コード

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Repeater1.DataSource = yourDataSource; 
    Repeater1.DataBind(); 
} 

注ボタンの後ろに 'リフレッシュ' はあなたデータソースはコンテンツテンプレート内にもあります。それが役に立てば幸い。

1

オフトピック:あなたの実際のコードではないことを願っています。私は、悪意のあるユーザーがradioButton.ValueフィールドとSQL-Injectに必要なものを置くことができると確信しています。

+0

非常に良い点。それは私の実際のコードではありませんが、それに非常に似ています。このおかげでありがとう、私はSQLのクエリをハードコードし、整数を使用してそれらを選択します。 –

0

あなたは完全な往復を意味しますか?リピータをUpdatePanelの中​​に置くことはできませんか?

関連する問題