Страница по-прежнему обновляется после переноса повторителя в панель обновления - PullRequest
2 голосов
/ 03 декабря 2010

У меня есть два SqlDataSources и два повторителя, каждый из которых содержит одну гиперссылку (я также пытался использовать кнопку веб-сервера и привязки).

Гиперссылки извлекают из базы данных некоторые значения, и в свойстве NavigationUrl я использую метод string.Format, чтобы создать параметризованный URL-адрес, передать браузеру, затем второй ретранслятор заполняется в соответствии со значением, переданным в URL-адресе Первоначально передано по гиперссылке первого ретранслятора

это мой пример кода: https://gist.github.com/726213

<asp:ScriptManager id="Scrptmanagr"  runat="server"></asp:ScriptManager>
<asp:UpdatePanel id="updtpanl" runat="server">
    <ContentTemplate>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:testConnectionString %>" 
            SelectCommand="SELECT [arrange_by_id], [arrange_by] FROM [arrange_by]">
        </asp:SqlDataSource>
        <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
            <ItemTemplate>
                <asp:HyperLink ID="HyperLink3" NavigateUrl='<%# string.Format("{0}?SortingType={1}",Request.AppRelativeCurrentExecutionFilePath, Eval("arrange_by_id"))%>' runat="server"><%# Eval("arrange_by") %></asp:HyperLink>
            </ItemTemplate>
            <SeparatorTemplate>
                |
            </SeparatorTemplate>
        </asp:Repeater>
        <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:testConnectionString %>" 
            SelectCommand="SELECT [alphabet_id],[arrange_by_id], [value] FROM [alphabet] WHERE ([arrange_by_id] = @arrange_by_id)">
            <SelectParameters>
                <asp:QueryStringParameter Name="arrange_by_id" QueryStringField="SortingType" Type="Int32" DefaultValue="1" />
            </SelectParameters>
        </asp:SqlDataSource>
        <br /><br />
        <asp:Repeater ID="Repeater2" runat="server" DataSourceID="SqlDataSource2">
            <ItemTemplate>
                <asp:HyperLink  ID="hyper1" runat="server" NavigateUrl='<%#string.Format("{0}?SortingType={1}&SortBy={2}",Request.AppRelativeCurrentExecutionFilePath, Eval("arrange_by_id"),Eval("value"))%>'><%# Eval("value")%></asp:HyperLink>
            </ItemTemplate>
            <SeparatorTemplate>
                |
            </SeparatorTemplate>
        </asp:Repeater>
    </ContentTemplate>
</asp:UpdatePanel>

сейчас! каждый раз, когда я нажимаю на любую из гиперссылок, она возвращает полный пост и обновляет страницу! Я что-то упустил?

Ответы [ 2 ]

2 голосов
/ 03 декабря 2010

Уверен, что <asp:HyperLink> не даст вам частичное обновление, он будет отображаться в HTML как тег <a href="..">. Вам понадобится элемент управления, который фактически вызывает обратную передачу, <asp:Button> или <asp:LinkButton>.

1 голос
/ 03 декабря 2010

Во-первых, любое значение, которое вы хотите передать обратно, не использует строки запроса, это одна и та же страница.Поместите содержимое в скрытое поле или кнопки CommandArgument

<asp:HiddenField ID="hdnFieldName" Value='<%# Eval("columnName") %>' runat="server" />

, затем на команду позади

    protected void rptName_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        if(e.CommandName.Equals("ButtonCommandName"))
        {
            RepeaterItem objItem = e.Item;
            var objFieldValue = (HiddenField)objItem.FindControl("hdnFieldName"); 
        }
    }

И не забудьте установить панель обновления Mode = "conditional", это приведет к панели обновленияобновлять только при возникновении одного из следующих событий:

1) Если элемент управления в панели обновления вызывает обратную передачу, например, кнопку asp.net.

2) Если происходит запуск на панели обновления (околотриггеры: http://www.asp.net/web-forms/tutorials/aspnet-ajax/understanding-asp-net-ajax-updatepanel-triggers)

3) Наконец, если вызывается метод "Update ()"

В противном случае он не будет обновляться и обновляться. Если задано значение всегда, любая обратная передача за пределамиПанель обновления или другая панель обновления может инициировать обновление панели обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...