예제 #1
0
        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));
            }
        }
예제 #2
0
 private bool isBetweenType()
 {
     return(DataGridColumnExtensions.GetIsBetweenFilterControl(AssignedDataGridColumn));
 }
예제 #3
0
        private string getValuePropertyBindingPath(DataGridColumn column)
        {
            string path = DataGridColumnExtensions.GetFilterMemberPathProperty(column);

            if (path == null)
            {
                path = String.Empty;

                if (column is DataGridBoundColumn)
                {
                    DataGridBoundColumn bc = column as DataGridBoundColumn;
                    path = (bc.Binding as Binding).Path.Path;
                }
                else if (column is DataGridTemplateColumn)
                {
                    DataGridTemplateColumn tc = column as DataGridTemplateColumn;

                    object templateContent = tc.CellTemplate.LoadContent();

                    if (templateContent != null && templateContent is TextBlock)
                    {
                        TextBlock block = templateContent as TextBlock;

                        BindingExpression binding = block.GetBindingExpression(TextBlock.TextProperty);

                        path = binding.ParentBinding.Path.Path;
                    }
                    else if (templateContent != null && templateContent is Button)
                    {
                        Button block = templateContent as Button;

                        BindingExpression binding = block.GetBindingExpression(Button.ContentProperty);

                        path = binding.ParentBinding.Path.Path;
                    }
                }
                else if (column is DataGridComboBoxColumn)
                {
                    DataGridComboBoxColumn comboColumn = column as DataGridComboBoxColumn;

                    path = null;

                    Binding binding = ((comboColumn.SelectedValueBinding) as Binding);

                    if (binding == null)
                    {
                        binding = ((comboColumn.SelectedItemBinding) as Binding);
                    }

                    if (binding == null)
                    {
                        binding = comboColumn.SelectedValueBinding as Binding;
                    }

                    if (binding != null)
                    {
                        path = binding.Path.Path;
                    }

                    if (comboColumn.SelectedItemBinding != null && comboColumn.SelectedValueBinding == null)
                    {
                        if (path != null && path.Trim().Length > 0)
                        {
                            if (DataGridComboBoxExtensions.GetIsTextFilter(comboColumn))
                            {
                                path += "." + comboColumn.DisplayMemberPath;
                            }
                            else
                            {
                                path += "." + comboColumn.SelectedValuePath;
                            }
                        }
                    }
                }
            }

            return(path);
        }
 private bool IsTextContainsColumn()
 {
     return(DataGridColumnExtensions.GetContainsSearchProperty(AssignedDataGridColumn));
 }