Установить стиль родительского DIV в usercontrol

0

У меня динамически названный DIV в GridView, который содержит пользовательский элемент управления с динамически назначенным Parent_ID. Javascript используется для отображения или скрытия DIV. Я покажу вам два примера разных строк без кода ASP.

Строка 1 для заказа № 123456:

<a href="<%#"javascript:collapseExpand('Order_Notes_Panel123456');" %>" >+</a>
<div id='Order_Notes_Panel123456' style="display:none;">
    <uc:Comments_Control id="Comments_Control_ID" runat="server" Parent_ID='123456'/>
</div>

Строка 2 для заказа № 678901:

<a href="<%#"javascript:collapseExpand('Order_Notes_Panel678901');" %>" >+</a>
<div id='Order_Notes_Panel678901' style="display:none;">
    <uc:Comments_Control id="Comments_Control_ID" runat="server" Parent_ID='678901'/>
</div>

Хорошей новостью является то, что пользовательский контроль связывается и работает отлично. Javascript показывает (устанавливает стиль "display: block;") и скрывает (стиль установлен на "display: none;") соответствующий DIV каждый раз, когда нажимается "+".

Вот моя проблема: в пользовательском элементе есть ссылка "Ответить", которая при щелчке делает пост-назад и помещает элемент управления в режим редактирования. Когда я использую этот пользовательский элемент управления на другой странице без содержания DIV, вы ничего не заметите. Однако, когда "Ответ" выполняет обратную связь, содержащая DIV возвращается к style = "display: none;".

Можете ли вы дать рекомендации о том, как установить родительский стиль DIV на "display: block;" в то время как пользователь явно работает с ним? Я бы предположил, что соответствующий код пойдет в коде позади пользовательского элемента управления, когда он войдет в режим редактирования.

Благодаря,
обкрадывать

Обновление: я понимаю, что в моем DIV нет сервера runat =. Поскольку я пытаюсь установить динамический идентификатор для каждого, я получаю сообщение об ошибке, если попытаюсь использовать runat. Вероятно, это причина, по которой я не могу достичь этого из-за кода...

Теги:
user-controls
parent

1 ответ

0

Я очень доволен собой... (см. Видео на YouTube для этой фразы, вы будете рады, что сделали.)

Таким образом, это то, что я добавил:
1. Новая функция Javascript для добавления имени целевого DIV в скрытое поле (функция "collapseExpand" находится в Site.Master. Я не мог поместить "load_div_to_hidden" в Site.Master, поскольку "myhiddenField" не является настраивается на каждой странице
2. Новое скрытое поле для захвата имени целевой DIV
3. Новая функция Javascript для запуска на window.onload, проверьте, есть ли у нас пост-обратно, а затем отобразите значение из скрытого поля
4. Добавление второго вызова Javascript из href в ссылке

Ниже приведены новые фрагменты кода:

<script type="text/javascript">
    function load_div_to_hidden(obj) {
        var hidden = document.getElementById('<%= myhiddenField.ClientID %>');
        hidden.value = obj;
    }

    function windowOnLoad() {
        var isPostBack = (('<%= IsPostBack %>').toLowerCase() == 'true') ? true : false;

        if (isPostBack == true) {
            var hid_field_value = document.getElementById('<%= myhiddenField.ClientID %>').value;
            var right_div = document.getElementById(hid_field_value);
            right_div.style.display = "block";
        }
    }

    window.onload = windowOnLoad;

</script>



<input type="hidden" id="myhiddenField" runat="server" value="" />


<a href="<%#"javascript:collapseExpand('Order_Notes_Panel123456'); javascript:load_div_to_hidden('Order_Notes_Panel123456');" %>" >+</a>
<div id='Order_Notes_Panel123456' style="display:none;">
<uc:Comments_Control id="Comments_Control_ID" runat="server" Parent_ID='123456'/>
</div>  

Работает как шарм!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню