Возможно создать элемент html в datatable, который работает на стороне сервера, как поисковый ввод по умолчанию (это означает, что после каждого изменения ввода вызывается AJAX).
Я пробовал некоторые вещи, такие как DOM, Request, но у меня ничего не получалось.
Дата инициализации:
var table = $('#allCodesTable').DataTable({
"dom": '<"toolbar">frtip',
"serverSide": "true",
"processing": "true",
"ajax": {
"url": "/MTMCreator/GetList",
"type": "POST",
"dataType": "json",
},
"columns": [
{ data: 'Code', "name": "Code"},
{ data: "Name", "name": "Činnosť"},
{ data: "TmuVD", "name": "TMU"},
{ data: "Description", "name": "Poznámka"},
{ data: "Id", "name": "Id"},
{ data: "Tmu", "name": "Tmu"},
{ data: "Type", "name": "Type"},
],
"order": [0, "arc"],
});
JsonResult для ajax:
public JsonResult GetList()
{
int start = Convert.ToInt32(Request["start"]);
int length = Convert.ToInt32(Request["length"]);
string searchValue = Request["search[value]"];
string sortColumnName = Request["columns[" + Request["order[0][column]"] + "][name]"];
string sortDirection = Request["order[0][dir]"];
string uasCheckBox = Request["uni"];
var list = new List<AnalyzeListDto>();
using (var ctx = new ApplicationDbContext())
{
list = ctx.AnalyzeList.Select(i => new AnalyzeListDto()
{
Code = i.Code,
Name = i.Name,
TmuVD = i.TmuVD,
Description = i.Description,
Id = i.Id,
Tmu = i.Tmu,
Type = i.Type.ToString()
}).ToList();
}
if (!string.IsNullOrEmpty(searchValue)){
list = list.Where(x => x.Name.ToLower().Contains(searchValue.ToLower())).ToList<AnalyzeListDto>();
}
list = list.Skip(start).Take(length).ToList<AnalyzeListDto>();
return Json(new { data = list }, JsonRequestBehavior.AllowGet);
}