Я добавил библиотеку 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 с данными больше не появлялся.

нужно предложить эту проблему и исправить это. Спасибо
как это реализовать?
Во-первых, ответ @H.Mikhaeljan правильный. Причина возникновения этой проблемы в том, что функция $(...) вызывается только один раз при начальной загрузке страницы. Вызовы из-за автоматической отправки UpdatePanel и DropDownList1 не будут выполнять сценарий снова.
Смотрите мой ответ здесь. stackoverflow.com/questions/48960734/…. Это DatePicker, но основная идея та же.
@VDWWD не работает. когда я попробовал ваш комментарий к этому потоку, моя таблица данных не может быть загружена при первой загрузке страницы



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы должны повторно привязать свой 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 это никогда не вызывает никаких условий
pageLoad () - это функция, которая вызывается после частичной обратной передачи.
наконец, это сработало для меня ... я не знаю, почему после нескольких попыток ... но спасибо, что предложили мне
Вы должны повторно привязать свой datatable после обратной передачи. Сейчас это происходит только во время загрузки. После каждого постбэка перепривязать таблицу