JQuery Datatable потерян после выпадающего списка изменения выбранного индекса панель обновления asp.net

Я добавил библиотеку jquery в свой gridview, и это было действительно полезно. когда на странице загружается эта таблица данных, отображается отлично, но когда я меняю значение раскрывающегося списка jquery datatable disapper. в этом случае gridview просто отображает данные на основе значения параметров раскрывающегося списка. Я слежу за этим руководство.

ссылка ссылка jquery:

<link type = "text/css" rel = "stylesheet" href = "https://cdn.datatables.net/1.10.9/css/dataTables.bootstrap.min.css" />
<link type = "text/css" rel = "stylesheet" href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" />
<link type = "text/css" rel = "stylesheet" href = "https://cdn.datatables.net/responsive/1.0.7/css/responsive.bootstrap.min.css" />
<script type = "text/javascript" src = "https://code.jquery.com/jquery-1.12.4.js"></script>
<script type = "text/javascript" src = "https://cdn.datatables.net/1.10.9/js/jquery.dataTables.min.js"></script>
<script type = "text/javascript" src = "https://cdn.datatables.net/responsive/1.0.7/js/dataTables.responsive.min.js"></script>
<script type = "text/javascript" src = "https://cdn.datatables.net/1.10.9/js/dataTables.bootstrap.min.js"></script>
<script type = "text/javascript" src = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>

установить синтаксис javascript в gridview:

<script type = "text/javascript">
    //on page load
    $(function () {
        $('[id*=GridView1]').prepend($("<thead></thead>").append($(this).find("tr:first"))).DataTable({
            "responsive": true,
            "sPaginationType": "full_numbers"
        });
    });

</script>

вот мой gridview asp.net:

<form id = "form1" runat = "server">
    <div>
        <asp:ScriptManager ID = "ScriptManager1" runat = "server"></asp:ScriptManager>
        <asp:UpdatePanel ID = "UpdatePanel1" runat = "server" RenderMode = "Inline">
            <ContentTemplate>
                <asp:DropDownList ID = "DropDownList1" runat = "server" AutoPostBack = "true" DataTextField = "Name" DataValueField = "Name" 
                OnSelectedIndexChanged = "DropDownList1_SelectedIndexChanged" Width = "30%" placeholder = "select">
                </asp:DropDownList>
                <br />
                <br />
                <asp:Label ID = "Label1" runat = "server" Text = "Label"></asp:Label>
                <br />
                <asp:GridView ID = "GridView1" runat = "server" AutoGenerateColumns = "false" class = "table table-striped"
                    Width = "100%" OnRowCommand = "GridView1_RowCommand">
                    <Columns>
                        <asp:BoundField DataField = "Name" HeaderText = "Name" />
                        <asp:BoundField DataField = "Address" HeaderText = "Address" />
                        <asp:ButtonField CommandName = "editRecord" ControlStyle-CssClass = "btn btn-info"
                            ButtonType = "Button" Text = "Edit" HeaderText = "Edit Record" HeaderStyle-Width = "10%">
                            <ControlStyle CssClass = "btn btn-info"></ControlStyle>
                        </asp:ButtonField>
                    </Columns>
                </asp:GridView>
            </ContentTemplate>
        </asp:UpdatePanel>
    </div>
</form>

когда я запустил эту страницу, это сработало: JQuery Datatable потерян после выпадающего списка изменения выбранного индекса панель обновления asp.net

НО после того, как я попытался выбрать одно из значений раскрывающегося списка, jquery с данными больше не появлялся. JQuery Datatable потерян после выпадающего списка изменения выбранного индекса панель обновления asp.net

нужно предложить эту проблему и исправить это. Спасибо

Вы должны повторно привязать свой datatable после обратной передачи. Сейчас это происходит только во время загрузки. После каждого постбэка перепривязать таблицу

H.Mikhaeljan 22.03.2018 16:35

как это реализовать?

aminvincent 22.03.2018 16:37

Во-первых, ответ @H.Mikhaeljan правильный. Причина возникновения этой проблемы в том, что функция $(...) вызывается только один раз при начальной загрузке страницы. Вызовы из-за автоматической отправки UpdatePanel и DropDownList1 не будут выполнять сценарий снова.

user9525052 22.03.2018 16:58

Смотрите мой ответ здесь. stackoverflow.com/questions/48960734/…. Это DatePicker, но основная идея та же.

VDWWD 22.03.2018 18:09

@VDWWD не работает. когда я попробовал ваш комментарий к этому потоку, моя таблица данных не может быть загружена при первой загрузке страницы

aminvincent 23.03.2018 03:08
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
1 413
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны повторно привязать свой datatable после обратной передачи. Сейчас это происходит только во время загрузки. После каждого постбэка перепривязать таблицу

Вероятно, это то, что вы ищете

pageLoad() будет срабатывать после каждой обратной передачи

function pageLoad() { 
         bindGrid();
};

function bindGrid(){
      $('[id*=GridView1]').prepend($("<thead></thead>").append($(this).find("tr:first"))).DataTable({
      "responsive": true,
      "sPaginationType": "full_numbers"
   });
};

он действительно должен быть на странице.

<asp:ScriptManager runat = "server" />

Другой вариант вместо загрузки страницы -

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(bindGrid);

в моем коде выше ScriptManager уже существует. но проблема в том, что я не знаю, как его перепрограммировать. так какова цель функции pageLoad()? cz это никогда не вызывает никаких условий

aminvincent 22.03.2018 16:56

pageLoad () - это функция, которая вызывается после частичной обратной передачи.

H.Mikhaeljan 22.03.2018 17:01

наконец, это сработало для меня ... я не знаю, почему после нескольких попыток ... но спасибо, что предложили мне

aminvincent 26.03.2018 08:36

Другие вопросы по теме