簡體   English   中英

如何在服務器端處理數據表上使用搜索?

[英]How to use search on datatables with server-side processing?

使用數據表server-side 搜索值如何傳遞給服務器? 我看過文檔

數據表自動將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;
}

您不應該使用搜索作為參數。但它會自動成為您的查詢字符串的一部分。

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

}

謝謝拉維

我使用它,因為它永遠不會為空,而是一個空字符串。

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

如果你想在服務器端獲取 serach box 的值:

string search = Request.Form.GetValues("search[value]").FirstOrDefault();

這將為您提供搜索框的價值。

正如 docs 數據表中所寫的那樣,傳遞一個具有兩個值的搜索數組。 search[value] 是過濾所需的搜索字符串,search[regex] 只是一個布爾值,表示 search[value] 應該被解釋為正則表達式還是字符串。

如果您在特定列中搜索值,則搜索字符串將位於 columns[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

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM