Jquery数据表:根据表外的选择框过滤/搜索

时间:2017-08-12 23:39:06

标签: javascript jquery asp.net-mvc datatable datatables

我正在桌面上使用dataTables jQuery插件,但我想在搜索框之前添加一个Filter Column下拉框。我看到了向各列添加下拉框的文档,但我想添加一个包含所有列名的下拉框。我是新手,非常感谢任何帮助。我在下面添加了我的代码。

HTML:

<select id='mySelector'>
   <option value="">Please Select</option>
   <option value='Name'>Name</option>
   <option value='Highlights'>Highlights</option>
   <option value='Area'>Area</option>
</select>
<table class="table table-striped" id="myTable" cellspacing="0">
    @{int rowNo = 0;}
    <thead>
        <tr>
            <th>
                Item
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Name)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Highlights)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Area)
            </th>
            <th></th>
        </tr>
    </thead>
    <tbody>

        @foreach (var item in Model.Select((x, i) => new { Data = x, Index = i + 1 }))
        {
            rowNo++;
            <tr>
                <td>
                    @rowNo.ToString("000")
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Data.Name)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Data.Highlights)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Data.Area)
                </td>
                <td>
                    @Html.ActionLink("Edit", "Edit", new { id = item.Data.id}) |
                    @Html.ActionLink("Details", "Details", new { id = item.Data.id}) |
                    @Html.ActionLink("Delete", "Delete", new { id = item.Data.id})
                </td>
            </tr>

        }
    </tbody>
</table>

JS:

  $('#myTable').DataTable();

1 个答案:

答案 0 :(得分:3)

试试这个,我添加下拉选项以选择要搜索的列。

var table = $('#example').DataTable({
    dom : 'l<"#add">frtip'
})  

$('<label/>').text('Search Column:').appendTo('#add')
$select = $('<select/>').appendTo('#add')

$('<option/>').val('All').text('All').appendTo($select);
$('<option/>').val('0').text('Seq').appendTo($select);
$('<option/>').val('1').text('Name').appendTo($select);
$('<option/>').val('2').text('Position').appendTo($select);
$('<option/>').val('3').text('Office').appendTo($select);
$('<option/>').val('4').text('Start Date').appendTo($select);
$('<option/>').val('5').text('Salary').appendTo($select);

$('input[type="search"]').on( 'keyup change', function () {
    var searchValue = $(this).val();
    var columnSearch = $select.val();

    if(columnSearch == 'All'){
        table.search(searchValue).draw();
    } else {
        table.columns(columnSearch).search(searchValue).draw();
    }
});

以上代码为demo.