Пирог загрузки плагина + попса/не попса
Всем привет,
Окружающая среда:
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 () { для не обновленных страниц панели.