private void queryBuilder1_QueryElementControlCreated(QueryElement queryElement, IQueryElementControl queryElementControl) { if (queryElementControl is IQueryColumnListControl) { var queryColumnListControl = (IQueryColumnListControl)queryElementControl; DataGridView dataGridView = (DataGridView)queryColumnListControl.DataGrid; _customColumn?.Dispose(); // Create custom column _customColumn = new DataGridViewTextBoxColumn { Name = "CustomColumn", HeaderText = "Custom Column", Width = 200, ValueType = typeof(string) }; _customColumn.HeaderCell.Style.Font = new Font("Tahoma", 8, FontStyle.Bold); // Insert custom column to specified position dataGridView.Columns.Insert(2, _customColumn); // Handle requierd events dataGridView.CellBeginEdit += DataGridView_CellBeginEdit; dataGridView.CellValueNeeded += DataGridView_CellValueNeeded; dataGridView.CellValuePushed += DataGridView_CellValuePushed; } }
private void QBuilder_OnQueryElementControlDestroying(QueryElement owner, IQueryElementControl control) { if (QElementDestroying.IsChecked != true) { return; } BoxLogEvents.Text = "QueryElementControl Destroying \"" + control.GetType().Name + "\"" + Environment.NewLine + BoxLogEvents.Text; }
private void queryBuilder1_QueryElementControlDestroying(QueryElement queryElement, IQueryElementControl queryElementControl) { if (queryElementControl is IQueryColumnListControl) { var queryColumnListControl = (IQueryColumnListControl)queryElementControl; DataGridView dataGridView = (DataGridView)queryColumnListControl.DataGrid; // remove event handlers to avoid memory leaking dataGridView.CellBeginEdit -= DataGridView_CellBeginEdit; dataGridView.CellValueNeeded -= DataGridView_CellValueNeeded; dataGridView.CellValuePushed -= DataGridView_CellValuePushed; } }
private void QBuilder_QueryElementControlCreated(QueryElement owner, IQueryElementControl control) { if (QElementCreated.Checked != true) { return; } TextBoxReport.Text = "QueryElementControl Created \"" + control.GetType().Name + "\"" + Environment.NewLine + TextBoxReport.Text; if (control is DataSourceControl) { var cont = (DataSourceControl)control; cont.FieldListDrawItem += cont_FieldListDrawItem; } }
private void QBuilder_QueryElementControlDestroying(QueryElement owner, IQueryElementControl control) { if (QElementDestroying.Checked != true) { return; } TextBoxReport.Text = "QueryElementControl Destroying \"" + control.GetType().Name + "\"" + Environment.NewLine + TextBoxReport.Text; if (!(control is DataSourceControl)) { return; } var cntr = (DataSourceControl)control; cntr.FieldListDrawItem -= cont_FieldListDrawItem; }
private void QueryBuilder1_OnQueryElementControlCreated(QueryElement owner, IQueryElementControl control) { if (!(control is IQueryColumnListControl)) { return; } var queryColumnListControl = (IQueryColumnListControl)control; var dataGridView = (DataGrid)queryColumnListControl.DataGrid; // Create custom column var customColumn = new DataGridComboBoxColumn() { Header = "Custom Column", Width = new DataGridLength(200), HeaderStyle = new Style { Setters = { new Setter(FontFamilyProperty, new FontFamily("Tahoma")), new Setter(FontWeightProperty, FontWeights.Bold) } }, ItemsSource = _customValuesProvider, // Bind this column to the QueryColumnListItem.CustomData object, which is expected to be a string. SelectedItemBinding = new Binding("CustomData") { UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged } }; // Insert new column to the specified position dataGridView.Columns.Insert(2, customColumn); // Handle the necessary events dataGridView.BeginningEdit += DataGridView_BeginningEdit; dataGridView.CellEditEnding += DataGridView_CellEditEnding; dataGridView.LoadingRow += dataGridView_LoadingRow; }
private void QueryBuilder1_OnQueryElementControlCreated(QueryElement owner, IQueryElementControl control) { if (control is IQueryColumnListControl) { var queryColumnListControl = (IQueryColumnListControl)control; var dataGridView = (DataGrid)queryColumnListControl.DataGrid; // Create custom column var customColumn = new DataGridCheckBoxColumn() { Header = "Custom Column", Width = new DataGridLength(200), HeaderStyle = new Style { Setters = { new Setter(FontFamilyProperty, new FontFamily("Tahoma")), new Setter(FontWeightProperty, FontWeights.Bold) } }, // Bind this column to the CustomData field of the QueryColumnListItem model, which is expected to be boolean Binding = new Binding("CustomData") { Mode = BindingMode.TwoWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged }, IsThreeState = false }; // Insert new column to the specified position dataGridView.Columns.Insert(2, customColumn); // Handle the necessary events dataGridView.BeginningEdit += DataGridView_BeginningEdit; dataGridView.CellEditEnding += dataGridView_CellEditEnding; dataGridView.LoadingRow += dataGridView_LoadingRow; } }
private void queryBuilder1_QueryElementControlCreated(QueryElement queryElement, IQueryElementControl queryElementControl) { if (queryElementControl is IQueryColumnListControl) { IQueryColumnListControl queryColumnListControl = (IQueryColumnListControl)queryElementControl; DataGridView dataGridView = (DataGridView)queryColumnListControl.DataGrid; _customColumn?.Dispose(); // Create custom column _customColumn = new DataGridViewCheckBoxColumn { Name = "CustomColumn", HeaderText = "Custom Column", Width = 100, FlatStyle = FlatStyle.Standard, ValueType = typeof(CheckState), TrueValue = CheckState.Checked, FalseValue = CheckState.Unchecked, IndeterminateValue = CheckState.Indeterminate }; _customColumn.HeaderCell.Style.Font = new Font("Tahoma", 8, FontStyle.Bold); // Insert custom column to specified position dataGridView.Columns.Insert(2, _customColumn); // Handle required events dataGridView.CellBeginEdit += DataGridView_CellBeginEdit; dataGridView.CellValueNeeded += DataGridView_CellValueNeeded; dataGridView.CellValuePushed += DataGridView_CellValuePushed; } }
private void queryBuilder1_QueryElementControlCreated(QueryElement queryElement, IQueryElementControl queryElementControl) { if (queryElementControl is IQueryColumnListControl) { IQueryColumnListControl queryColumnListControl = (IQueryColumnListControl)queryElementControl; DataGridView dataGridView = (DataGridView)queryColumnListControl.DataGrid; _customColumn?.Dispose(); // Create custom column _customColumn = new ComboBoxWithButtonColumn { Name = "CustomColumn", HeaderText = "Custom Column", Width = 200, DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing, // hide the combobox if cell is not focused ValueType = typeof(string) }; _customColumn.HeaderCell.Style.Font = new Font("Tahoma", 8, FontStyle.Bold); _customColumn.ShowButton = true; // Insert custom column to specified position dataGridView.Columns.Insert(2, _customColumn); // Handle requierd events dataGridView.CellEnter += DataGridView_CellEnter; dataGridView.CellLeave += DataGridView_CellLeave; dataGridView.CellBeginEdit += DataGridView_CellBeginEdit; dataGridView.CellValueNeeded += DataGridView_CellValueNeeded; dataGridView.CellValuePushed += DataGridView_CellValuePushed; dataGridView.EditingControlShowing += DataGridView_EditingControlShowing; } }
private void QueryBuilder1_OnQueryElementControlCreated(QueryElement queryElement, IQueryElementControl queryElementControl) { if (!(queryElementControl is IQueryColumnListControl)) { return; } var queryColumnListControl = (IQueryColumnListControl)queryElementControl; var dataGridView = (DataGrid)queryColumnListControl.DataGrid; // Create custom column var customColumn = new DataGridTextColumn { Header = "Custom Column", Width = new DataGridLength(200), HeaderStyle = new Style { Setters = { new Setter(FontFamilyProperty, new FontFamily("Tahoma")), new Setter(FontWeightProperty, FontWeights.Bold) } }, // Bind this column to the QueryColumnListItem.CustomData object, which must contain an object with the Description field (defined below) Binding = new Binding("CustomData.Description") { Mode = BindingMode.TwoWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged } }; // Insert new column to the specified position dataGridView.Columns.Insert(2, customColumn); // Handle the necessary events dataGridView.BeginningEdit += dataGridView_BeginningEdit; dataGridView.CellEditEnding += dataGridView_CellEditEnding; dataGridView.LoadingRow += dataGridView_LoadingRow; }
private void QueryBuilder1_OnQueryElementControlCreated(QueryElement owner, IQueryElementControl control) { if (!(control is IQueryColumnListControl)) { return; } var queryColumnListControl = (IQueryColumnListControl)control; var dataGridView = (DataGrid)queryColumnListControl.DataGrid; // Create binding and templates for the custom column var textBlock = new FrameworkElementFactory(typeof(TextBlock)); textBlock.SetValue(VerticalAlignmentProperty, VerticalAlignment.Center); textBlock.SetValue(MarginProperty, new Thickness(2, 0, 0, 0)); textBlock.SetBinding(TextBlock.TextProperty, new Binding("CustomData") { Mode = BindingMode.OneWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged }); // Creating a template to browse a cell var templateCell = new DataTemplate { VisualTree = textBlock }; var columnLeft = new FrameworkElementFactory(typeof(ColumnDefinition)); columnLeft.SetValue(ColumnDefinition.WidthProperty, new GridLength(1, GridUnitType.Star)); var columnRight = new FrameworkElementFactory(typeof(ColumnDefinition)); columnRight.SetValue(ColumnDefinition.WidthProperty, new GridLength(1, GridUnitType.Auto)); var gridRoot = new FrameworkElementFactory(typeof(Grid)); gridRoot.SetValue(BackgroundProperty, Brushes.White); gridRoot.AppendChild(columnLeft); gridRoot.AppendChild(columnRight); var comboBox = new FrameworkElementFactory(typeof(ComboBox)); comboBox.SetBinding(Selector.SelectedItemProperty, new Binding("CustomData") { Mode = BindingMode.TwoWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged }); comboBox.SetValue(ItemsControl.ItemsSourceProperty, _customValuesProvider); comboBox.SetValue(MarginProperty, new Thickness(0, 0, 0, 0)); comboBox.SetValue(BorderThicknessProperty, new Thickness(0)); comboBox.SetValue(VerticalContentAlignmentProperty, VerticalAlignment.Center); comboBox.SetValue(Grid.ColumnProperty, 0); comboBox.SetValue(PaddingProperty, new Thickness(1, 0, 0, 0)); // Defining a handler which is fired on loading the editor for a cell comboBox.AddHandler(LoadedEvent, new RoutedEventHandler(LoadComboBox)); gridRoot.AppendChild(comboBox); var button = new FrameworkElementFactory(typeof(Button)); button.SetValue(Grid.ColumnProperty, 1); button.SetValue(MarginProperty, new Thickness(2)); button.SetValue(ContentProperty, "..."); button.SetValue(VerticalAlignmentProperty, VerticalAlignment.Center); button.SetValue(VerticalContentAlignmentProperty, VerticalAlignment.Center); button.SetValue(WidthProperty, 16.0); // Defining a handler of cliking the ellipsis button in a cell button.AddHandler(ButtonBase.ClickEvent, new RoutedEventHandler(ClickButton)); gridRoot.AppendChild(button); // Creating a template to edit the custom cell var templateCellEdit = new DataTemplate { VisualTree = gridRoot }; var customColumn = new DataGridTemplateColumn() { Header = "Custom Column", Width = new DataGridLength(200), HeaderStyle = new Style { Setters = { new Setter(FontFamilyProperty, new FontFamily("Arial")), new Setter(FontWeightProperty, FontWeights.Bold) } }, // assigning templates to a column CellTemplate = templateCell, CellEditingTemplate = templateCellEdit }; // Insert new column to the specified position dataGridView.Columns.Insert(2, customColumn); // Handle the necessary events dataGridView.BeginningEdit += DataGridView_BeginningEdit; dataGridView.CellEditEnding += dataGridView_CellEditEnding; dataGridView.LoadingRow += dataGridView_LoadingRow; }
private void QBuilder_OnQueryElementControlCreated(QueryElement owner, IQueryElementControl control) { if (QElementCreated.IsChecked != true) { return; } BoxLogEvents.Text = "QueryElementControl Created \"" + control.GetType().Name + "\"" + Environment.NewLine + BoxLogEvents.Text; if (!(control is DataSourceControl)) { return; } var dsc = (DataSourceControl)control; var element = (UserControl)control; var root = (Grid)element.FindName("PART_CONTENT"); // Grid var list = (ListView)element.FindName("ListBoxView"); // ListView if (root == null || list == null) { return; } var customItemTemplate = (DataTemplate)FindResource("CustomFieldTemplate"); list.ItemTemplate = customItemTemplate; list.SetValue(Grid.RowProperty, 1); var border = new Border { BorderThickness = new Thickness(0, 0, 0, 1), BorderBrush = Brushes.Gray, Background = SystemColors.InfoBrush }; var grid = new Grid { Margin = new Thickness(3, 0, 3, 0), Height = 24, VerticalAlignment = VerticalAlignment.Center }; border.SetValue(Grid.RowProperty, 0); border.Child = grid; root.Children.Add(border); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto }); #region Search box and button var textSearchBox = new TextBox { VerticalContentAlignment = VerticalAlignment.Center, VerticalAlignment = VerticalAlignment.Center, }; var buttonSearchClear = new Button { Content = "X", FontSize = 10, Padding = new Thickness(5, 0, 5, 0), VerticalAlignment = VerticalAlignment.Center, Margin = new Thickness(3, 0, 0, 0), VerticalContentAlignment = VerticalAlignment.Center, IsEnabled = false }; textSearchBox.SetValue(Grid.ColumnProperty, 0); // Filtering the list of fields in the DataSourceControl textSearchBox.TextChanged += delegate { list.Items.Filter = x => { var dataSourceControlItem = x as DataSourceControlItem; return(dataSourceControlItem != null && dataSourceControlItem.Name.Text.ToLower().Contains(textSearchBox.Text.ToLower())); }; buttonSearchClear.IsEnabled = !string.IsNullOrWhiteSpace(textSearchBox.Text); dsc.Refresh(); }; grid.Children.Add(textSearchBox); buttonSearchClear.Click += (sender, args) => textSearchBox.Text = ""; buttonSearchClear.SetValue(Grid.ColumnProperty, 1); #endregion grid.Children.Add(buttonSearchClear); }