jquery 数据表中的自定义搜索
Custom search in jquery datatable
我正在使用 jquery 数据表并创建自定义搜索功能,如下所示。
HTML代码:
<table>
<tr>
<td>First Name</td>
<td><input type="text" id="txtFirstName" /></td>
<td>Last Name</td>
<td><input type="text" id="txtLastName" /></td>
</tr>
<tr>
<td>From Date</td>
<td><input type="text" id="txtFromDate" /></td>
<td>To Date</td>
<td><input type="text" id="txtToDate" /></td>
</tr>
<tr>
<td>Address</td>
<td><input type="text" id="txtAddress" /></td>
<td><input type="button" id="btnSearch" value="Search" /></td>
</tr>
</table>
<table id="mytable">
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Address</th>
<th>Birth Date</th>
</tr>
</thead>
</table>
脚本:
$(document).ready(function () {
$("#txtFromDate, #txtToDate").datepicker({ dateFormat: 'dd MM yy' });
var MyDataTable = $("#mytable").dataTable(
{
"processing": true,
"serverSide": true,
"ajax":
{
"url": "/Home/GetData",
"type": "POST",
"dataType": "JSON",
//"contentType": "JSON",
"data": {
"FirstName": $("#txtFirstName").val().trim(),
"LastName": $("#txtLastName").val().trim(),
"Address": $("#txtAddress").val().trim(),
"FromDate": $("#txtFromDate").val(),
"ToDate": $("#txtToDate").val()
}
},
columns: [
{ data: 'FirstName' },
{ data: 'LastName' },
{ data: 'Address' },
{
data: 'DOB',
render: function (data, type, row) {
var rawdate = data.substr(6);
var dt = new Date(parseFloat(rawdate));
return $.format.date(dt, "dd MMM yyyy");
}
}
]
});
$("#btnSearch").click(function () {
//1. draw it's not working
//MyDataTable.draw();
//2. ajax.reload it's not working
//MyDataTable.ajax.reload(null, true);
});
});
我在服务器端的代码
[HttpPost]
public JsonResult GetData(MyViewModel info)
{
............
}
MyViewModel.cs
public class MyViewModel: DTParameters
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
public DateTime? FromDate { get; set; }
public DateTime? ToDate { get; set; }
}
我的问题是,当我第一次加载页面时,它转到控制器操作方法 GetData,而我的模型 MyViewModel 获得空值,这是正确的。当我输入一些搜索条件时,即。名字,姓氏和点击搜索按钮我想将输入的值传递给服务器端,但我得到的是空值。为了将值传递到服务器端,我尝试使用 dataTable().draw() 方法和 dataTable().ajax.reload() 方法重新加载数据表,但它不起作用。代码有什么问题。提前致谢....
我找到了我的问题的解决方案。我只是将 "ajax" 部分修改为这样
"ajax":
{
"url": "/Home/GetData",
"type": "POST",
"dataType": "JSON",
//"contentType": "JSON",
"data": function ( d ) {
return $.extend( {}, d, {
"FirstName": $("#txtFirstName").val().trim(),
"LastName": $("#txtLastName").val().trim(),
"Address": $("#txtAddress").val().trim(),
"FromDate": $("#txtFromDate").val(),
"ToDate": $("#txtToDate").val()
});
}
},
并且在单击按钮时我使用了以下代码:
$("#btnSearch").click(function () {
$("#mytable").DataTable().draw();
});
我正在使用 jquery 数据表并创建自定义搜索功能,如下所示。
HTML代码:
<table>
<tr>
<td>First Name</td>
<td><input type="text" id="txtFirstName" /></td>
<td>Last Name</td>
<td><input type="text" id="txtLastName" /></td>
</tr>
<tr>
<td>From Date</td>
<td><input type="text" id="txtFromDate" /></td>
<td>To Date</td>
<td><input type="text" id="txtToDate" /></td>
</tr>
<tr>
<td>Address</td>
<td><input type="text" id="txtAddress" /></td>
<td><input type="button" id="btnSearch" value="Search" /></td>
</tr>
</table>
<table id="mytable">
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Address</th>
<th>Birth Date</th>
</tr>
</thead>
</table>
脚本:
$(document).ready(function () {
$("#txtFromDate, #txtToDate").datepicker({ dateFormat: 'dd MM yy' });
var MyDataTable = $("#mytable").dataTable(
{
"processing": true,
"serverSide": true,
"ajax":
{
"url": "/Home/GetData",
"type": "POST",
"dataType": "JSON",
//"contentType": "JSON",
"data": {
"FirstName": $("#txtFirstName").val().trim(),
"LastName": $("#txtLastName").val().trim(),
"Address": $("#txtAddress").val().trim(),
"FromDate": $("#txtFromDate").val(),
"ToDate": $("#txtToDate").val()
}
},
columns: [
{ data: 'FirstName' },
{ data: 'LastName' },
{ data: 'Address' },
{
data: 'DOB',
render: function (data, type, row) {
var rawdate = data.substr(6);
var dt = new Date(parseFloat(rawdate));
return $.format.date(dt, "dd MMM yyyy");
}
}
]
});
$("#btnSearch").click(function () {
//1. draw it's not working
//MyDataTable.draw();
//2. ajax.reload it's not working
//MyDataTable.ajax.reload(null, true);
});
});
我在服务器端的代码
[HttpPost]
public JsonResult GetData(MyViewModel info)
{
............
}
MyViewModel.cs
public class MyViewModel: DTParameters
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
public DateTime? FromDate { get; set; }
public DateTime? ToDate { get; set; }
}
我的问题是,当我第一次加载页面时,它转到控制器操作方法 GetData,而我的模型 MyViewModel 获得空值,这是正确的。当我输入一些搜索条件时,即。名字,姓氏和点击搜索按钮我想将输入的值传递给服务器端,但我得到的是空值。为了将值传递到服务器端,我尝试使用 dataTable().draw() 方法和 dataTable().ajax.reload() 方法重新加载数据表,但它不起作用。代码有什么问题。提前致谢....
我找到了我的问题的解决方案。我只是将 "ajax" 部分修改为这样
"ajax":
{
"url": "/Home/GetData",
"type": "POST",
"dataType": "JSON",
//"contentType": "JSON",
"data": function ( d ) {
return $.extend( {}, d, {
"FirstName": $("#txtFirstName").val().trim(),
"LastName": $("#txtLastName").val().trim(),
"Address": $("#txtAddress").val().trim(),
"FromDate": $("#txtFromDate").val(),
"ToDate": $("#txtToDate").val()
});
}
},
并且在单击按钮时我使用了以下代码:
$("#btnSearch").click(function () {
$("#mytable").DataTable().draw();
});