我目前正在尝试使用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文本框,但我需要定义要搜索的文本框的哪个数据列索引(客户端),以便显示结果。
*额外信息:我想要客户端和服务器端过滤,因为其他列中也有下拉过滤器,所以我不想在文本框中查询数据库和那么类型。如果输入类型='文本'框中已有文本值,我希望它是一个进程。谢谢!