如何使用razor语法添加列索引?

时间:2018-06-13 15:07:05

标签: c# html asp.net-mvc razor datatables

我目前正在尝试使用DataTables搜索单个列。我有它工作,但我想有客户端和服务器端过滤,因此结合我已成功创建的两个过滤器。在我之前的过滤器中,我有一个像这样的剃刀Html.TextBox:

@Html.TextBox("CustomerCodesSearch", "", new { placeholder = "Search Customer"})

我会在控制器中引用它,如下所示:

 if (TheForm["CustomerCodesSearch"] != "")
            {
                string byCustomerCodesSearch = (String)TheForm["CustomerCodesSearch"];
                MyMessage = MyMessage + "/ Customer Code Like:[" + byCustomerCodesSearch + "]";

                if (MyWhere != "") { MyWhere = MyWhere + " AND "; }
                MyWhere = MyWhere + "CustomerCode Like '%" + byCustomerCodesSearch + "%'";
            }

现在这个工作正常,但它减慢了过滤过程。所以我实现了DataTables,现在有了客户端过滤,工作正常。像这样:

<input type='text' value='' class='filter' placeholder="Search Customer" data-column-index='2'>

这是JavaScript:

var dtable = $('#DataRows').DataTable({
        "paging": false,
        "ordering": false,
        "searching": true,
        dom: 't'
    });

    $('.filter').on('keyup change', function () {
        //clear global search values
        dtable.search('');
        dtable.column($(this).data('columnIndex')).search(this.value).draw();
    });

    $(".dataTables_filter input").on('keyup change', function () {
        //clear column search values
        dtable.columns().search('');
        //clear input values
        $('.filter').val('');
    });

这是我想要完成的任务:我想要1.从控制器引用input type ='text'框,以便在查询数据库时传递字符串。或2.为剃刀文本框添加“data-column-index”属性,以便程序知道我要搜索的列,这是我目前为止更新的剃刀文本框:

 @Html.TextBox("CustomerCodesSearch", "", new { placeholder = "Search Customer", @class = "filter"})

当我输入时,JavaScript会选择Razor文本框,但我需要定义要搜索的文本框的哪个数据列索引(客户端),以便显示结果。

*额外信息:我想要客户端和服务器端过滤,因为其他列中也有下拉过滤器,所以我不想在文本框中查询数据库和那么类型。如果输入类型='文本'框中已有文本值,我希望它是一个进程。谢谢!

0 个答案:

没有答案