Вложенность ASP.NET ListView + Jquery .show () .hide () - PullRequest
0 голосов
/ 16 февраля 2012

У меня есть что-то вроде этого:

<div>
    <asp:ListView>
        <div>
            <asp:ListView>
                <div>
                    <asp:ListView>
                    </asp:ListView>
                </div>
            </asp:ListView>
        <div>
    </asp:ListView>
</div>

Конечно, приведенное выше - просто псевдокод, но в основном это так.3 уровня DataBound ListViews (каждый из которых подключен к SqlDataSource). Все мои ListViews полностью используют встроенные функции элемента управления , что означает, что Select / Insert / Update / Delete находятся на .aspx (ItemCommand) до SqlDataSource.У меня нет никакого Code-behind.

Я пытаюсь сделать из этого многоуровневого ListView нечто вроде TreeView, используя JQuery.Мой первый шаг - .show() / .hide() дочерние ListViews, но, как и ожидалось, когда происходит PostBack, состояния .show() / .hide() не сохраняются.

Я собираюсь попытатьсяиспользование <asp:HiddenField> для установки во время OnItemCommand из ListViews для использования JQuery во время document.ready, но я думаю, что это будет .FindControl() Ад.

Есть ли у вас в уме элегантное решение??

1 Ответ

1 голос
/ 16 февраля 2012

Как насчет использования скрытых входных данных сервера, которые будут сохранять состояние на задних частях почтового сервера, а затем иметь скрипт инициализации, который переназначит видимость после того, как обратная связь произойдет.Вот некоторый код, который передает идею (не проверено).Если вам не нравятся все скрытые входные данные, вы можете использовать их, упаковать данные в некоторую строку и проанализировать их, но это больше работы, чем приведенное ниже решение.

<div>
    <asp:ListView>
        <div>
            <asp:HiddenField id="level2IsVisible" value="true" class="algc-level-visiblity" />
            <asp:ListView>
                <div>
                  <asp:HiddenField id="level3IsVisible" value="true" class="algc-level-visiblity" />
                    <asp:ListView>
                    </asp:ListView>
                </div>
            </asp:ListView>
        <div>
    </asp:ListView>
</div>


<script type="text/javascript">

// Initialization logic
$(function(){
   $("input.algc-level-visiblity").each(function() {
     if ($(this).val())
        $(this).closest("div").show();
     else
        $(this).closest("div").hide();
    // TODO: Add other rules that dictate parent div visibility toggle.
   });
});

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