Стили CSS не применяются в диалоговом окне jQuery после обратной передачи - PullRequest
2 голосов
/ 09 ноября 2011

У меня есть стандартное диалоговое окно jQuery с пользовательским контролем ввода данных, помещенным в панель обновления. Выглядит отлично до первого постбэка. После чего стили не применяются вообще. (элементы управления сохраняют свои значения, а события продолжают работать, как и ожидалось.) После закрытия диалога к последующим вызовам .dialog («open») не применяются стили, если произошла обратная передача.

    $(function () {
        var dlg = jQuery("#EventMod").dialog({
            autoOpen: false
            , modal: true
        });
        dlg.parent().appendTo(jQuery("form:first"));  

        $(".NewEvent").click(function () {
            $("#EventMod").dialog("open");
            return false;
        });
    });

Диалоговое окно div здесь:

<div id="EventMod" title="Event Modify" class="ui-helper-hidden">
    <asp:UpdatePanel ID="updNewEvent" runat="server">
        <ContentTemplate>
            <uc1:EventEdit ID="NewEvent" runat="server" />
        </ContentTemplate>
    </asp:UpdatePanel>
</div>

В пользовательском контроле классы НЕ назначаются динамически, они выглядят так:

    <table class="NewEvent" >
        <tr>
            <td align="center">
                <table class="Event">
                    <tr class="Title">
                        <th width="55">
                            <strong>Event #</strong>
                        </th>
    ... snip ...

У меня есть таблица стилей, связанная на родительской странице. Я попытался добавить его в usercontrol, но без видимых результатов.

1 Ответ

2 голосов
/ 09 ноября 2011

У меня раньше была такая странность, и я должен был сделать это, чтобы получить стабильные результаты в течение UpdatePanel:

   $(function () {

        var titleText="This is the title"
        var key = "uniqueId";
        var newParentDiv= "#" + key;
        var div = $("<div title='" + titleText + "' id='" + key+ "'></div>");
        $('body').append(div);
        $(newParentDiv).html($("#EventMod").html());

        var dlg = jQuery(newParentDiv).dialog({
            autoOpen: false
            , modal: true
        });
        dlg.parent().appendTo(jQuery("form:first"));  

        $(".NewEvent").click(function () {
            $(newParentDiv).dialog("open");
            return false;
        });
   });

Проблема для меня заключалась в том, что диалог jQuery фактически перемещает ваш контент в новое место в DOM. Если происходит частичная обратная передача, которая не обновляет DOM, куда jQuery UI помещает диалоговое окно, оно становится устаревшим или зависает.

...