Пытаясь достичь
Мне удалось передать значения всех отдельных столбцов в server
, используя AjaxGet
.В дальнейшем pic
или пример будет t
и v
.На сервере я передам значение методу filter
.Теперь я пытаюсь понять, как правильно фильтровать t
и v
.В настоящее время после ввода v
я буду фильтровать v
, а затем, если введен t
, в идеале он должен фильтровать t
для столбца LOGIN_ID
и v
для столбца NAME
.Тем не менее, я получаю v
или t
результаты.Пожалуйста помоги.
КОД
private List<DataItem> FilterData(ref int recordFiltered, int start, int length, string search, string searchLOGIN_ID, string searchNAME, string searchDT_EDIT, int sortColumn, string sortDirection)
{
List<DataItem> _data = CreateData();
List<DataItem> list = new List<DataItem>();
if (!string.IsNullOrEmpty(searchLOGIN_ID))
{
foreach (DataItem dataItem in _data)
{
if (
dataItem.LOGIN_ID.ToUpper().Contains(searchLOGIN_ID.ToUpper())
)
{
list.Add(dataItem);
}
}
}
if (!string.IsNullOrEmpty(searchNAME))
{
foreach (DataItem dataItem in _data)
{
if (
dataItem.NAME.ToUpper().Contains(searchNAME.ToUpper())
)
{
list.Add(dataItem);
}
}
}
if (!string.IsNullOrEmpty(searchDT_EDIT))
{
foreach (DataItem dataItem in _data)
{
if (
dataItem.DT_EDIT.ToUpper().Contains(searchDT_EDIT.ToUpper())
)
{
list.Add(dataItem);
}
}
}
if (!string.IsNullOrEmpty(searchLOGIN_ID) && !string.IsNullOrEmpty(searchNAME) && !string.IsNullOrEmpty(searchDT_EDIT))
{
foreach (DataItem dataItem in _data)
{
if (
dataItem.LOGIN_ID.ToUpper().Contains(search.ToUpper()) ||
dataItem.NAME.ToString().Contains(search.ToUpper()) ||
dataItem.DT_EDIT.ToString().Contains(search.ToUpper())
)
{
list.Add(dataItem);
}
}
}
if (!string.IsNullOrEmpty(searchLOGIN_ID) && !string.IsNullOrEmpty(searchNAME))
{
foreach (DataItem dataItem in _data)
{
if (
dataItem.LOGIN_ID.ToUpper().Contains(searchLOGIN_ID.ToUpper()) ||
dataItem.NAME.ToUpper().Contains(searchNAME.ToUpper())
)
{
list.Add(dataItem);
}
}
}
if (!string.IsNullOrEmpty(searchLOGIN_ID) && !string.IsNullOrEmpty(searchDT_EDIT))
{
foreach (DataItem dataItem in _data)
{
if (
dataItem.LOGIN_ID.ToUpper().Contains(searchLOGIN_ID.ToUpper()) ||
dataItem.DT_EDIT.ToUpper().Contains(searchDT_EDIT.ToUpper())
)
{
list.Add(dataItem);
}
}
}
if (!string.IsNullOrEmpty(searchNAME) && !string.IsNullOrEmpty(searchDT_EDIT))
{
foreach (DataItem dataItem in _data)
{
if (
dataItem.NAME.ToUpper().Contains(searchNAME.ToUpper()) ||
dataItem.DT_EDIT.ToUpper().Contains(searchDT_EDIT.ToUpper())
)
{
list.Add(dataItem);
}
}
}
if (!string.IsNullOrEmpty(search))
{
foreach (DataItem dataItem in _data)
{
if (
dataItem.LOGIN_ID.ToUpper().Contains(search.ToUpper()) ||
dataItem.NAME.ToString().Contains(search.ToUpper()) ||
dataItem.DT_EDIT.ToString().Contains(search.ToUpper())
)
{
list.Add(dataItem);
}
}
}
if(string.IsNullOrEmpty(search) && string.IsNullOrEmpty(searchLOGIN_ID) && string.IsNullOrEmpty(searchNAME) && string.IsNullOrEmpty(searchDT_EDIT))
{
list = _data;
}
// simulate sort
//=== sortColumn need to change additional column
if (sortColumn == 1)
{ // sort LOGIN_ID
list.Sort((x, y) => SortString(x.LOGIN_ID, y.LOGIN_ID, sortDirection));
}
else if (sortColumn == 2)
{ // sort NAME
list.Sort((x, y) => SortString(x.NAME, y.NAME, sortDirection));
}
else if (sortColumn == 3)
{ // sort DT_CREATE
list.Sort((x, y) => SortDateTime(x.DT_EDIT, y.DT_EDIT, sortDirection));
}
recordFiltered = list.Count;
// get just one page of data
list = list.GetRange(start, Math.Min(length, list.Count - start));
return list;
}
public ActionResult AjaxGetJsonData(int draw, int start, int length)
{
var searchLOGIN_ID = Request.QueryString["columns[1][search][value]"];
var searchNAME = Request.QueryString["columns[2][search][value]"];
var searchDT_EDIT = Request.QueryString["columns[3][search][value]"];
string search = Request.QueryString["search[value]"];
int sortColumn = -1;
string sortDirection = "asc";
if (length == -1)
{
length = TOTAL_ROWS;
}
if (Request.QueryString["order[0][column]"] != null)
{
sortColumn = int.Parse(Request.QueryString["order[0][column]"]);
}
if (Request.QueryString["order[0][dir]"] != null)
{
sortDirection = Request.QueryString["order[0][dir]"];
}
DataTableData dataTableData = new DataTableData();
dataTableData.draw = draw;
dataTableData.recordsTotal = TOTAL_ROWS;
int recordsFiltered = 0;
dataTableData.data = FilterData(ref recordsFiltered, start, length, search, searchLOGIN_ID, searchNAME, searchDT_EDIT, sortColumn, sortDirection);
dataTableData.recordsFiltered = recordsFiltered;
return Json(dataTableData, JsonRequestBehavior.AllowGet);
}
GITHUB
https://github.com/BROMVC5/BROSTANDARD