Exemplo n.º 1
0
        private Data GetSubTable(DataFilters filters, DataFields columns)
        {
            Data subTable = new Data();

            //проверяем колонки для фильтрации и собираем их индексы
            List <int> filterColumnIndexes = new List <int>();

            foreach (var f in filters.filtersList)
            {
                var i = data.headers.IndexOf(f.columnName);

                if (i == -1)
                {
                    return(null);
                }
                else
                {
                    filterColumnIndexes.Add(i);
                }
            }

            //собираем индексы столбцов
            List <int> columnsIndexes = new List <int>();

            foreach (var c in columns.fields)
            {
                var i = data.headers.IndexOf(c);

                if (i != -1)
                {
                    columnsIndexes.Add(i);
                    subTable.headers.Add(c);
                }
            }


            foreach (var row in data.body)
            {
                for (int i = 0; i < filterColumnIndexes.Count(); i++)
                {
                    if (row[filterColumnIndexes[i]] != filters.filtersList[i].condition)
                    {
                        break;
                    }
                    else
                    {
                        List <string> subRow = new List <string>();

                        for (int j = 0; j < columnsIndexes.Count; j++)
                        {
                            subRow.Add(row[columnsIndexes[j]]);
                        }

                        subTable.body.Add(subRow);
                    }
                }
            }

            return(subTable);
        }
Exemplo n.º 2
0
        public string GetSubTableJson(DataFilters filters, DataFields columns)
        {
            var subTable = GetSubTable(filters, columns);

            var    tableData = new TableDataForJS(subTable, false);
            string json      = tableData.GetJson();

            return(json);
        }
Exemplo n.º 3
0
        internal Table GetSubTable(DataFilters filters, DataFields columns)
        {
            //проверяем колонки для фильтрации
            foreach (var f in filters.filtersList)
            {
                if (!HasColumn(f.columnName))
                {
                    return(null);
                }
            }

            //проверяем колооки для вывода (нужно ли???)
            foreach (var c in columns.fields)
            {
                if (!HasColumn(c))
                {
                    return(null);
                }
            }

            var subTable = dataTable.Copy();

            List <DataRow> badRows = new List <DataRow>();

            //удаляем линие строки
            foreach (DataRow r in subTable.Rows)
            {
                for (int i = 0; i < r.ItemArray.Count(); i++)
                {
                    TableCell c          = (TableCell)r.ItemArray[i];
                    string    columnName = subTable.Columns[i].ColumnName;

                    if (filters.ItIsCorrectValue(columnName, c.text) == false)
                    {
                        badRows.Add(r);
                        break;
                    }
                }
            }

            foreach (var br in badRows)
            {
                subTable.Rows.Remove(br);
            }

            //удаляем лишние столбцы

            List <DataColumn> badColumns = new List <DataColumn>();

            foreach (DataColumn c in subTable.Columns)
            {
                if (!columns.fields.Any(x => x == c.ColumnName))
                {
                    badColumns.Add(c);
                }
            }

            foreach (var bc in badColumns)
            {
                subTable.Columns.Remove(bc);
            }

            return(new Table(subTable));
        }