ASP.NET изменить источник данных повторителя без обратной передачи? - PullRequest
2 голосов
/ 12 августа 2009

У меня есть повторитель, который отображает некоторые данные из запроса 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)? Я использовал элементы управления Async, которые я нашел здесь: http://www.asynccontrols.com/,, но есть некоторые проблемы при использовании их с IE6 / 7.

Ответы [ 3 ]

3 голосов
/ 12 августа 2009

Используйте компоненты 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 голос
/ 12 августа 2009

Не по теме: надеюсь, это не ваш настоящий код; Я почти уверен, что злоумышленник может поместить все, что он хочет, в поле radioButton.Value и SQL-Inject вас.

0 голосов
/ 12 августа 2009

Вы имеете в виду полный круговой тур? Разве вы не можете поместить ретранслятор в UpdatePanel?

...