如何在服务器端处理的数据表上使用搜索?

rad*_*byx 3 javascript ajax datatable jquery jquery-datatables

使用数据表处理时server-side.搜索值如何传递给服务器?我查看了文档.

DataTable中自动发送draw,startlength到服务器.可以而且我应该做一些类似的事情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" }
        ]
    });
});
Run Code Online (Sandbox Code Playgroud)

服务器

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;
}
Run Code Online (Sandbox Code Playgroud)

小智 6

您不应该使用search作为参数.但它会自动成为查询字符串的一部分.

public JsonResult GetJsonData(string draw, int start, int length)
{
     string search = Request.QueryString["search[value]"];
     // your code for search filtering

}
Run Code Online (Sandbox Code Playgroud)

谢谢你


rad*_*byx 5

我使用它,因为它永远不会为空,而是一个空字符串。

Request.Form.GetValues("search[value]")[0]
Run Code Online (Sandbox Code Playgroud)