使用 DataTable.js 在 asp.net gridview 中使用下拉列表按列过滤

Posted

技术标签:

【中文标题】使用 DataTable.js 在 asp.net gridview 中使用下拉列表按列过滤【英文标题】:Columnwise filter with dropdown in asp.net gridview using DataTable.js 【发布时间】:2016-05-10 20:18:27 【问题描述】:

DataTable.js 提供Columnwise Search with Dropdown,如下所示。

我在这里做了精确的演示 using html,CSS,JS only 也可以正常工作。

现在,在我的 asp.net webforms 项目中,我已经集成了 DataTable.js,它工作得非常好。

我是怎么做到的?在这里,

gridview.aspx

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">

    <link href="Content/DataTables/css/dataTables.jqueryui.css" rel="stylesheet" />
    <script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
    <script src="https://cdn.datatables.net/1.10.10/js/jquery.dataTables.min.js"></script>
</asp:Content>

    <asp:Content ID="Content2" ContentPlaceHolderID="FeaturedContent" runat="server">
   </asp:Content>


<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server">

<asp:GridView ID="GridView1" runat="server" CssClass="gvdatatable" AutoGenerateColumns="true" OnPreRender="GridView1_PreRender"></asp:GridView>


<script>
         $(document).ready(function () 
             $('#<%=GridView1.ClientID%>').DataTable(
                 initComplete: function () 
                     this.api().columns().every(function () 
                         var column = this;
                         var select = $('<select><option value=""></option></select>')
                             .appendTo($(column.footer()).empty())
                             .on('change', function () 
                                 var val = $.fn.dataTable.util.escapeRegex(
                                     $(this).val()
                                 );

                                 column
                                     .search(val ? '^' + val + '$' : '', true, false)
                                     .draw();
                             );

                         column.data().unique().sort().each(function (d, j) 
                             select.append('<option value="' + d + '">' + d + '</option>')
                         );
                     );
                 
             );
         );
        </script>
</asp:Content>

gridview.aspx.cs

protected void GridView1_PreRender(object sender, EventArgs e)
        
            if (GridView1.Rows.Count > 0)
            
                GridView1.UseAccessibleHeader = true;
                GridView1.HeaderRow.TableSection = TableRowSection.TableHeader;
                GridView1.FooterRow.TableSection = TableRowSection.TableFooter;
            

        

一切正常。只是问题是它没有在底部显示带有值的下拉列表。我有什么遗漏吗?

怎么做?

我们将不胜感激。

额外说明:

最近发现,在DataTable示例中,它有

  <tfoot>
        <tr>
            <th>Name</th>
            <th>Position</th>
            <th>Office</th>
            <th>Age</th>
            <th>Start date</th>
            <th>Salary</th>
        </tr>
    </tfoot>

当我检查控制台时,gridview 的&lt;tfoot&gt; 是空的。我认为需要一些魔法。

【问题讨论】:

【参考方案1】:

里面

<asp:GridView /> 

你需要

showfooter="true"

【讨论】:

以上是关于使用 DataTable.js 在 asp.net gridview 中使用下拉列表按列过滤的主要内容,如果未能解决你的问题,请参考以下文章

datatable.js使用

dataTable.js,打印插件,防止淡出信息框

使用 TABS 时 DataTable.js 无法正确加载

服务器端 DataTable JS clear() 不工作

JQ事件在datatable.js的提取行排序中没有活动

使用 Datatable.js 时,如何将我点击的页面编号发送回我的后端? (有一些小问题)