如何使用服务器端处理对数据表进行搜索?
How to use search on datatables with server-side processing?
在处理数据表时server-side
处理。搜索值如何传递到服务器?我看过 doc.
数据表自动发送draw
、start
和length
到服务器。我可以而且应该做一些与 search
类似的事情吗?文档提到 search[value]
但我不知道如何解释它。
客户
$(document).ready(function () {
var url = '@Url.Action("GetJsonData", "Home")';
$('#example').dataTable({
'searching': true,
"paging": true,
"processing": true,
"serverSide": true,
"ajax": {
"url": url,
"type": "GET"
},
"columns": [
{ "data": "id" },
{ "data": "name" }
]
});
});
服务器
public JsonResult GetJsonData(string draw, int start, int length, string search)
{
var hugeDataArr = new object[100];
var returnDataArr = new object[length];
for (int i = 0; i < hugeDataArr.Length; i++)
{
hugeDataArr[i] = new
{
DT_RowId = i,
id = "id" + i.ToString().PadLeft(2, '0'),
name = "nameæøå" + i.ToString().PadLeft(2, '0')
};
}
for (int i = 0; i < length; i++)
{
returnDataArr[i] = hugeDataArr[start + i];
}
JsonResult json = Json(new
{
draw = Convert.ToInt32(draw),
recordsTotal = 100, // calculated field
recordsFiltered = 50, // calculated field
data = returnDataArr
}, JsonRequestBehavior.AllowGet);
return json;
}
如文档数据表中所写,传递具有两个值的搜索数组。
search[value] 是过滤所需的搜索字符串,search[regex] 只是一个布尔值,表示 search[value] 应该被解释为 regex 还是字符串。
如果您在特定列中搜索值,搜索字符串将在列[i][搜索][值]
中
您不应该使用搜索,因为 parameter.But 它自动成为您查询字符串的一部分。
public JsonResult GetJsonData(string draw, int start, int length)
{
string search = Request.QueryString["search[value]"];
// your code for search filtering
}
谢谢
拉维
我使用它,因为它永远不会为 null,而是一个空字符串。
Request.Form.GetValues("search[value]")[0]
如果您想在服务器端获取搜索框的值:
字符串搜索 = Request.Form.GetValues("搜索[值]").FirstOrDefault();
这会给你搜索框的价值。
如果 search[value]
参数始终为 null 那么请确保您在客户端使用 POST
Ajax 调用并且控制器的操作方法标记为 [HttpPost]
.
客户端:
$('#example').dataTable({
"processing": true,
"serverSide": true,
"ajax": {
"url": url,
"type": "POST"
},
//Other configurations
});
服务器:
[HttpPost]
public JsonResult GetJsonData(string draw, int start, int length)
{
string search = Request.QueryString["search[value]"];
// your code for search filtering
}
在处理数据表时server-side
处理。搜索值如何传递到服务器?我看过 doc.
数据表自动发送draw
、start
和length
到服务器。我可以而且应该做一些与 search
类似的事情吗?文档提到 search[value]
但我不知道如何解释它。
客户
$(document).ready(function () {
var url = '@Url.Action("GetJsonData", "Home")';
$('#example').dataTable({
'searching': true,
"paging": true,
"processing": true,
"serverSide": true,
"ajax": {
"url": url,
"type": "GET"
},
"columns": [
{ "data": "id" },
{ "data": "name" }
]
});
});
服务器
public JsonResult GetJsonData(string draw, int start, int length, string search)
{
var hugeDataArr = new object[100];
var returnDataArr = new object[length];
for (int i = 0; i < hugeDataArr.Length; i++)
{
hugeDataArr[i] = new
{
DT_RowId = i,
id = "id" + i.ToString().PadLeft(2, '0'),
name = "nameæøå" + i.ToString().PadLeft(2, '0')
};
}
for (int i = 0; i < length; i++)
{
returnDataArr[i] = hugeDataArr[start + i];
}
JsonResult json = Json(new
{
draw = Convert.ToInt32(draw),
recordsTotal = 100, // calculated field
recordsFiltered = 50, // calculated field
data = returnDataArr
}, JsonRequestBehavior.AllowGet);
return json;
}
如文档数据表中所写,传递具有两个值的搜索数组。 search[value] 是过滤所需的搜索字符串,search[regex] 只是一个布尔值,表示 search[value] 应该被解释为 regex 还是字符串。
如果您在特定列中搜索值,搜索字符串将在列[i][搜索][值]
中您不应该使用搜索,因为 parameter.But 它自动成为您查询字符串的一部分。
public JsonResult GetJsonData(string draw, int start, int length)
{
string search = Request.QueryString["search[value]"];
// your code for search filtering
}
谢谢 拉维
我使用它,因为它永远不会为 null,而是一个空字符串。
Request.Form.GetValues("search[value]")[0]
如果您想在服务器端获取搜索框的值:
字符串搜索 = Request.Form.GetValues("搜索[值]").FirstOrDefault();
这会给你搜索框的价值。
如果 search[value]
参数始终为 null 那么请确保您在客户端使用 POST
Ajax 调用并且控制器的操作方法标记为 [HttpPost]
.
客户端:
$('#example').dataTable({
"processing": true,
"serverSide": true,
"ajax": {
"url": url,
"type": "POST"
},
//Other configurations
});
服务器:
[HttpPost]
public JsonResult GetJsonData(string draw, int start, int length)
{
string search = Request.QueryString["search[value]"];
// your code for search filtering
}