2

SQLクエリからのデータを表示するリピーターがあります。

<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();

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

4

3 に答える 3

3

ASP.NETAJAXコンポーネントを使用します。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();
}

データソースを「更新」するボタンもコンテンツテンプレート内にあることに注意してください。それが役に立てば幸い。

于 2009-08-11T22:16:44.307 に答える
1

オフトピック:それがあなたの本当のコードではないことを願っています。悪意のあるユーザーが必要なものをradioButton.Valueフィールドに入力してSQLインジェクションを実行できると確信しています。

于 2009-08-11T22:09:07.973 に答える
0

往復のことですか?UpdatePanel内にリピーターを配置することはできませんか?

于 2009-08-11T22:09:09.797 に答える