JQUery.DataTables自定义过滤器

时间:2018-06-20 13:03:43

标签: jquery asp.net-mvc datatables

在我的ASP.NET MVC应用程序中,我使用jQuery DataTables列出我的客户。我的jQuery版本是3.3.1。我为我的DataTable使用了这段代码,它工作正常:

objectif将通过另一个搜索输入来过滤数据表(应用程序的设计由设计者强加)。 为此,我使用以下代码

 <input type="text" onkeyup="filterTable(this);" id="txt-search" maxlength="20" placeholder="Rechercher..." class="capron-input-text pull-right" />   


//Sets the value of the search input of the datatable and triggers the keyup event. It works fine.
function filterTable(sender) {
    var filterText = $(sender).val();
    var searchInput = $("#tbl-data_filter").find("input");
    $(searchInput).val(filterText);

    $(searchInput).trigger("keyup");
}

 $(document).ready(function() {
  $('#tbl-data').dataTable();

  // These two lines hides related fields. It works.
  $("#tbl-data_filter").hide();
  $("#tbl-data_length").hide();
});

当我使用此代码转换DataTable时,本地化工作正常,但搜索输入和行数Dropdown仍然可见:

 $(document).ready(function () {
  $('#tbl-data').dataTable({
    "language": {
      "url": "/Resources/Localisation/French.json"
    }
  });

  // It doesn't work.
  $("#tbl-data_filter").hide();
  $("#tbl-data_length").hide();
});

如果我在手动事件中调用这些行,例如任何控件的click事件,它将再次起作用。我认为DataTable()方法是异步的,在它完成要隐藏的元素的翻译和创建之前,行会执行。

有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

经过一番搜索,我找到了解决方案:

我在CSS中添加了这些行

MERGE INTO tab1 tgt USING (
    SELECT
            CASE mod( ROW_NUMBER() OVER(
                ORDER BY
                    col1 -- the column which is in order and unique
            ),10)
                WHEN 1   THEN 1.23
                WHEN 2   THEN 12.34
                WHEN 3   THEN 123.45
                --..
                --.. 9
            ELSE col2
        AS col2
    FROM
        tab1 t
)
src ON ( tgt.rowid = src.rowid ) --use primary key/unique key if there is one instead of rowid
WHEN MATCHED THEN UPDATE SET tgt.col2 = src.col2;