简体   繁体   English

选定索引更改下拉列表 asp.net 更新面板后 Jquery 数据表丢失

[英]Jquery Datatable lost after selected index change dropdownlist asp.net update panel

i have added jquery library to my gridview and it was really helpfull.我已经将 jquery 库添加到我的 gridview 中,它真的很有帮助。 when on page load this datatable show perfectly, but when I change value of dropdown list jquery datatable disapper.在页面上加载此数据表时显示完美,但是当我更改下拉列表的值时 jquery 数据表消失。 in this case, gridview just showing data based on dropdown list parameters value.在这种情况下,gridview 只显示基于下拉列表参数值的数据。 I follow this tutorial .我按照这个教程

link jquery reference:链接 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>

set javascript sintax to gridview:将 javascript sintax 设置为 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>

here is my gridview asp.net:这是我的 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>

when I run this page,it worked:当我运行此页面时,它起作用了: 在此处输入图片说明

BUT after i tried select one of value of dropdown list, datatable jquery didn't appear any more.但是在我尝试选择下拉列表的值之一后,数据表 jquery 不再出现。 在此处输入图片说明

need suggest for this issue and fix this.需要对此问题提出建议并解决此问题。 Thanks谢谢

You have to rebind your datatable after postback.您必须在回发后重新绑定数据表。 It happens now only during load.它现在仅在加载期间发生。 After every postback rebind the table每次回发后重新绑定表

This is probably what you are searching for这可能是您正在寻找的

pageLoad() will be triggered after every postback pageLoad()将在每次回发后触发

function pageLoad() { 
         bindGrid();
};

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

it does require to be on page.它确实需要在页面上。

<asp:ScriptManager runat="server" />

A other option instead of pageload is代替页面加载的另一个选项是

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM