GetQueryController( System.Windows.Controls.DataGrid dataGrid, FilterData filterData, IEnumerable itemsSource) { QueryController query; query = DataGridExtensions.GetDataGridFilterQueryController(dataGrid); if (query == null) { //clear the filter if exisits begin System.ComponentModel.ICollectionView view = System.Windows.Data.CollectionViewSource.GetDefaultView(dataGrid.ItemsSource); if (view != null) view.Filter = null; //clear the filter if exisits end query = new QueryController(); DataGridExtensions.SetDataGridFilterQueryController(dataGrid, query); } query.ColumnFilterData = filterData; query.ItemsSource = itemsSource; query.CallingThreadDispatcher = dataGrid.Dispatcher; query.UseBackgroundWorker = DataGridExtensions.GetUseBackgroundWorkerForFiltering(dataGrid); return query; }
internal StringFilterExpressionCreator( ParameterCounter paramCounter, FilterData filterData, List<object> paramseters) { this.paramCounter = paramCounter; this.filterData = filterData; this.paramseters = paramseters; }
public virtual void OnFilter(DataGridFilterLibrary.Support.FilterData data) { if (FilterChanged != null) { FilterChanged(); } }
private StringBuilder createSingleFilter(FilterData filterData) { StringBuilder filter = new StringBuilder(); if ( (filterData.Type == FilterType.NumericBetween || filterData.Type == FilterType.DateTimeBetween) && (filterData.QueryString != String.Empty || filterData.QueryStringTo != String.Empty) ) { if (filterData.QueryString != String.Empty) { createFilterExpression( filterData, filterData.QueryString, filter, getOperatorString(FilterOperator.GreaterThanOrEqual)); } if (filterData.QueryStringTo != String.Empty) { if (filter.Length > 0) filter.Append(" AND "); createFilterExpression( filterData, filterData.QueryStringTo, filter, getOperatorString(FilterOperator.LessThanOrEqual)); } } else if (filterData.QueryString != String.Empty && filterData.Operator != FilterOperator.Undefined) { if (filterData.Type == FilterType.Text) { createStringFilterExpression(filterData, filter); } else { createFilterExpression( filterData, filterData.QueryString, filter, getOperatorString(filterData.Operator)); } } return filter; }
public static Dictionary <string, FilterData> CloneDictionaryHelper(Dictionary <string, FilterData> dict) { var dictNew = new Dictionary <string, FilterData>(); foreach (KeyValuePair <string, FilterData> kvp in dict) { var data = new FilterData( kvp.Value.Operator, kvp.Value.Type, kvp.Value.ValuePropertyBindingPath, kvp.Value.ValuePropertyType, kvp.Value.QueryString, kvp.Value.QueryStringTo, kvp.Value.IsTypeInitialized, kvp.Value.IsCaseSensitiveSearch); dictNew.Add(kvp.Key, data); } return(dictNew); }
private void initFilterData() { if (FilterCurrentData == null || !FilterCurrentData.IsTypeInitialized) { string valuePropertyBindingPath = getValuePropertyBindingPath(AssignedDataGridColumn); bool typeInitialized; Type valuePropertyType = getValuePropertyType( valuePropertyBindingPath, getItemSourceElementType(out typeInitialized)); FilterType filterType = getFilterType( valuePropertyType, isComboDataGridColumn(), isBetweenType()); FilterOperator filterOperator = FilterOperator.Undefined; string queryString = String.Empty; string queryStringTo = String.Empty; FilterCurrentData = new FilterData( filterOperator, filterType, valuePropertyBindingPath, valuePropertyType, queryString, queryStringTo, typeInitialized, DataGridColumnExtensions.GetIsCaseSensitiveSearch(AssignedDataGridColumn)); } }
private void createStringFilterExpression( FilterData filterData, StringBuilder filter) { StringFilterExpressionCreator creator = new StringFilterExpressionCreator( paramCounter, filterData, Parameters); string filterExpression = creator.Create(); filter.Append(filterExpression); }
private void createFilterExpression( FilterData filterData, string queryString, StringBuilder filter, string operatorString) { filter.Append(filterData.ValuePropertyBindingPath); object parameterValue = null; if (trySetParameterValue(out parameterValue, queryString, filterData.ValuePropertyType)) { Parameters.Add(parameterValue); paramCounter.Increment(); filter.Append(" " + operatorString + " @" + paramCounter.ParameterNumber); } else { filter = new StringBuilder();//do not use filter } }
public void AddOrUpdateData(FilterData data) { Datas.Add(data); }