C # ASP MVC5 Datatable Индивидуальный поиск столбец, как фильтровать && и || - PullRequest
0 голосов
/ 07 июня 2019

Пытаясь достичь

Мне удалось передать значения всех отдельных столбцов в server, используя AjaxGet.В дальнейшем pic или пример будет t и v.На сервере я передам значение методу filter.Теперь я пытаюсь понять, как правильно фильтровать t и v.В настоящее время после ввода v я буду фильтровать v, а затем, если введен t, в идеале он должен фильтровать t для столбца LOGIN_ID и v для столбца NAME.Тем не менее, я получаю v или t результаты.Пожалуйста помоги.

enter image description here

КОД

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

1 Ответ

0 голосов
/ 07 июня 2019

Private List FilterData (ref int recordFiltered, int start, int длина, поиск строки, поиск строкиLOGIN_ID, поиск строкиNAME, поиск строкиDT_EDIT, int sortColumn, строка sortDirection)

        {
            List<DataItem> _data = CreateData();        

            if (!string.IsNullOrEmpty(searchLOGIN_ID))
            {
                _data = _data.Where(x => x.LOGIN_ID.ToUpper().Contains(searchLOGIN_ID.ToUpper()).ToList();
            }

            if (!string.IsNullOrEmpty(searchNAME))
            {
              _data = _data.Where(x => x.NAME.ToUpper().Contains(searchNAME.ToUpper()).ToList();            
            }

            if (!string.IsNullOrEmpty(searchDT_EDIT))
            {
             _data = _data.Where(x => x.DT_EDIT.ToUpper().Contains(searchDT_EDIT.ToUpper()).ToList();
            }

            if (!string.IsNullOrEmpty(search))
            {
             _data = _data.Where(x => x.LOGIN_ID.ToUpper().Contains(search.ToUpper()) ||
                        x.NAME.ToString().Contains(search.ToUpper()) ||
                        x.DT_EDIT.ToString().Contains(search.ToUpper()).ToList();            
            }
             list = _data;

            // past this point this is your original code :)
            // 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;
        }

Редактировать: ОК не может отформатировать. прости Ханз ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...