Сохранить состояние пользовательского контроля после нажатия гиперссылки - PullRequest
0 голосов
/ 14 января 2012

Я боролся со следующей проблемой.

Я создал навигацию по категориям / подкатегориям UserControl и поместил это в div на MasterPage. Этот элемент управления использует повторитель для построения списка категорий. В шаблоне у меня есть:

панель, которую вы можете включать / выключать. (развернуть / свернуть, как двухуровневое дерево). второй повторитель внутри панели ссылка для перехода на страницу категории (asp: гиперссылка)

у второго повторителя есть только ссылка в шаблоне товара.

Теперь каждый раз, когда я нажимаю на ссылку, этот элемент управления сбрасывается. Это означает, что если я разверну вторую категорию и перейду к одной из подкатегорий, этот список подкатегорий будет снова свернут (фактически весь элемент управления перерисовывается).

Есть ли способ, которым я все еще могу использовать отдельные страницы aspx, но не нужно каждый раз перезагружать пользовательский элемент управления навигацией или каким-либо образом возвращать навигацию в предыдущее состояние просмотра. То, что я пробовал до сих пор:

панель обновления на пользовательском контроле

панель обновлений на держателе содержимого

пытается восстановить предыдущую страницу просмотра состояния

<asp:Repeater ID="RptCategories" runat="server" OnItemCommand="RptCategories_ItemCommand" EnableViewState="true">
        <ItemTemplate>
            <asp:LinkButton runat="server" ID="BtnToggleSubcategories" CommandName="ToggleSubcategories"
                CommandArgument='<%# Eval("Id") %>' Text="+" />
            <asp:HyperLink runat="server" ID="LnkCategory" Text='<%# Eval("Name") %>' NavigateUrl='<%# Eval("Id", "~/Pages/ViewList.aspx?CatId={0}") %>' />
            <asp:Panel runat="server" ID="PnlSubcategories" Visible="false" EnableViewState="true">
                <asp:Repeater ID="RptSubcategories" runat="server" EnableViewState="true">
                    <HeaderTemplate><ul></HeaderTemplate>
                    <ItemTemplate>
                        <li><asp:HyperLink runat="server" ID="LnkSubcategory" Text='<%# Eval("Name") %>' NavigateUrl='<%# Eval("Id", "~/Pages/ViewList.aspx?SubcatId={0}") %>' /></li>
                    </ItemTemplate>
                    <FooterTemplate></ul></FooterTemplate>
                </asp:Repeater>
            </asp:Panel>
            <br />
        </ItemTemplate>
    </asp:Repeater>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...