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

问题描述 投票:5回答:5

[使用数据表server-side处理时。搜索值如何传递到服务器?我看过doc

数据表自动将drawstartlength发送到服务器。我可以并且应该用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;
}
javascript jquery ajax datatable jquery-datatables
5个回答
6
投票

您不应该将搜索用作参数。但是它自动成为查询字符串的一部分。

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

}

谢谢ravi


4
投票

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

Request.Form.GetValues("search[value]")[0]

2
投票

如果您想在服务器端获得Serach Box的价值:

字符串搜索= Request.Form.GetValues(“ search [value]”)。FirstOrDefault();

这将为您提供搜索框的值。


1
投票

如docs数据表中所写,传递带有两个值的搜索数组。search [value]是您需要过滤的搜索字符串,而search [regex]只是一个布尔值,表示是将search [value]解释为正则表达式还是字符串。

如果您要在特定列中搜索值,则搜索字符串将在列中[i] [search] [value]


0
投票

如果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

}
© www.soinside.com 2019 - 2024. All rights reserved.