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); }
public string GetSubTableJson(DataFilters filters, DataFields columns) { var subTable = GetSubTable(filters, columns); var tableData = new TableDataForJS(subTable, false); string json = tableData.GetJson(); return(json); }
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)); }