/// <summary>Removes a filter item from the list of this class.</summary> /// <param name="column">The column to be checked for removing the filter item.</param> /// <param name="filterItem">The filter item to be removed.</param> private void Remove(int column, FilterItem filterItem) { // This would remove a FilterItem from the Filter list when the filter is cleared. // Used Iterator for removing instead of canonical loop to prevent ConcurrentModificationException. int index = -1; for (int i = 0; i < filterItems.Count; ++i) { FilterItem item = filterItems[i]; if (column == -1 && item.GetFilterType().Equals(filterItem.GetFilterType())) { index = i; break; } else if (item.GetColumn() == filterItem.GetColumn()) { index = i; break; } } if (index != -1) { filterItems.RemoveAt(index); } tableView.Filter(this); }
/// <summary>Updates a filter item from the list of this class.</summary> /// <param name="column">The column in which filter item will be updated.</param> /// <param name="filterItem">The updated filter item.</param> private void Update(int column, FilterItem filterItem) { // This would update an existing FilterItem from the Filter list. // Used Iterator for updating instead of canonical loop to prevent ConcurrentModificationException. int index = -1; for (int i = 0; i < filterItems.Count; ++i) { FilterItem item = filterItems[i]; if (column == -1 && item.GetFilterType().Equals(filterItem.GetFilterType())) { index = i; break; } else if (item.GetColumn() == filterItem.GetColumn()) { index = i; break; } } if (index != -1) { filterItems[index] = filterItem; } tableView.Filter(this); }
/// <summary>Method to check if a filter item is already added based on the column to be filtered. /// </summary> /// <param name="column">The column to be checked if the list is already filtering.</param> /// <param name="filterItem">The filter item to be checked.</param> /// <returns>True if a filter item for a specific column or for ALL is already in the list. /// </returns> private bool IsAlreadyFiltering(int column, FilterItem filterItem) { // This would determine if Filter is already filtering ALL or a specified COLUMN. foreach (FilterItem item in filterItems) { if (column == -1 && item.GetFilterType().Equals(filterItem.GetFilterType())) { return(true); } else { if (item.GetColumn() == filterItem.GetColumn()) { return(true); } } } return(false); }