alexvw Ответов: 1

Пирог загрузки плагина + попса/не попса


Всем привет,

Окружающая среда:
ASP.NET {WebfForms}
VS: 2013

Я обращаюсь к вам за помощью относительно Bootstrap Popover; мы реализовали эту функциональность на одной из наших страниц [Master -> Content Page -> UserControl] следующим образом:
В разделе содержание :
<script type="text/javascript">

    function pageLoad() {
        if (Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()) {
            $(document).ready(function () {
                $('.popper').popover({
                    container: 'body',
                    placement: 'auto',
                    html: true,
                    title: 'Observaciones',
                    content: function () {
                        return $(this).children(':first').html();
                    }
                });
            });
        };
    }

</script>


Класс Поппера был назначен следующим образом (в пользовательских элементов управления):
<asp:TemplateField HeaderText="Observaciones">
    <ItemTemplate>
        <div style="width: 275px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; text-align:left" class="popper" data-toggle="popover" data-trigger="hover" >
            <asp:Label ID="lbObs" runat="server" Text='<%# Eval("Observacion") %>'></asp:Label>
        </div>
    </ItemTemplate>
</asp:TemplateField>


Этот сценарий работает просто отлично; каждая строка в нашем GridView ведет себя так, как ожидалось. Однако на другую страницу {мастер -&ГТ; ChildMaster -и GT; страница -&содержание ГТ; элемент управления UserControl} он просто не работает вообще.

Есть только два отличия мэра:
а) дочерняя Главная страница, которая обрабатывает только внешний вид и ощущения для определенной группы страниц
Б) второй экземпляр UserControl на такой странице контента; который, очевидно, имеет свое собственное имя и т. д.

Сценарий был реализован на уровне страницы содержимого, как и раньше; и класс во вторичном пользовательском элементе управления, как это:
<asp:TemplateField HeaderText="Observaciones">
    <ItemTemplate>
        <div style="width: 275px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; text-align:left" class="popper" data-toggle="popover" data-trigger="hover" >
            <asp:Label ID="lbObsAlt" runat="server" Text='<%# Eval("Observacion") %>'></asp:Label>
        </div>
    </ItemTemplate>
</asp:TemplateField>


Все ссылки на Скрипты находятся на главной странице:
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>


Что я уже пробовал:

Глядя на инструменты разработчика Firefox, я определил "незначительную" разницу в том, как эти элементы управления визуализируются, но игнорирую, почему или если это имеет какое-то отношение к проблеме:

Рабочая Страница:
<div style="width: 275px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; text-align:left" class="popper" data-toggle="popover" data-trigger="hover" data-original-title="" title=""></div>


Нерабочая страница:
<div style="width: 275px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; text-align:left" class="popper" data-toggle="popover" data-trigger="hover">
</div>


Это мой первый раз, когда я использую этот плагин, и действительно не знаю, что происходит.

Руководство очень ценится. Заранее спасибо.

Karthik_Mahalingam

содержит ли страница панель обновления ?

alexvw

Здравствуйте Картик; обе страницы содержат панели обновления, и как пользовательские элементы управления находятся внутри них.

Karthik_Mahalingam

пробовать

function pageLoad() {
            
 
    $('.popper').popover({
        container: 'body',
        placement: 'auto',
        html: true,
        title: 'Observaciones',
        content: function () {
            return $(this).children(':first').html();
        }
    });
 
        }

alexvw

Здравствуй, Картик, добрый день.

Я попробовал ваше предложение, то есть удаление вызова к

Представление sys.Веб-формы.PageRequestManager.getInstance().get_isInAsyncPostBack()

и для начальных тестов это, кажется, работает. Под этим я подразумеваю, что он позволяет всплывающему окну работать так, как ожидалось, на двух других страницах, где он перестал работать. Можете ли вы объяснить причину такого поведения?

Кроме того, как я могу отметить ваш ответ как ответ и оценить его? ;) Большое спасибо!

Karthik_Mahalingam

хорошо, разместили его как решение
функция pageLoad() { , эта функция эквивалентна событию dom ready для страниц с включенной панелью обновления. так что нет необходимости звонить по этим линиям еще раз
если (представление sys.Веб-формы.PageRequestManager.getInstance().get_isInAsyncPostBack()) {
$(документ).готово(функция () {

однако вы должны применять оба кода для работы во всех случаях
значение pageload() для страниц с включенной панелью обновления
$(документ).ready(function () { для не обновленных страниц панели.

1 Ответов

Рейтинг:
5

Karthik_Mahalingam

публикация в качестве решения, так как она была разрешена в разделе комментариев и чтобы избежать неотвеченного сообщения

function pageLoad() {
            
 
    $('.popper').popover({
        container: 'body',
        placement: 'auto',
        html: true,
        title: 'Observaciones',
        content: function () {
            return $(this).children(':first').html();
        }
    });
 
        }