[使用数据表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;
}
您不应该将搜索用作参数。但是它自动成为查询字符串的一部分。
public JsonResult GetJsonData(string draw, int start, int length)
{
string search = Request.QueryString["search[value]"];
// your code for search filtering
}
谢谢ravi
我使用它,因为它永远不会为null,而是一个空字符串。
Request.Form.GetValues("search[value]")[0]
字符串搜索= Request.Form.GetValues(“ search [value]”)。FirstOrDefault();
这将为您提供搜索框的值。
如docs数据表中所写,传递带有两个值的搜索数组。search [value]是您需要过滤的搜索字符串,而search [regex]只是一个布尔值,表示是将search [value]解释为正则表达式还是字符串。
如果您要在特定列中搜索值,则搜索字符串将在列中[i] [search] [value]
如果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
}