diff --git a/_config.yml b/_config.yml index 8dfee80dd..b6dadcad4 100644 --- a/_config.yml +++ b/_config.yml @@ -10,7 +10,6 @@ navigation: winformslab: title: "WinForms Labs" position: 0 - getting-started: title: Getting Started position: 2 @@ -1506,61 +1505,64 @@ navigation: position: 500 controls/virtualgrid/design-time: title: Design Time - position: 1 + position: 1 controls/virtualgrid/fundamentals: title: Fundamentals position: 3 + controls/virtualgrid/features: + title: Features + position: 5 + controls/virtualgrid/visual-elements: + title: Visual Elements + position: 6 controls/virtualgrid/working-with-data: title: Working with Data - position: 4 - controls/virtualgrid/columns: + position: 8 + controls/virtualgrid/visual-elements/columns: title: Columns position: 5 - controls/virtualgrid/rows: + controls/virtualgrid/visual-elements/rows: title: Rows position: 6 - controls/virtualgrid/cells: + controls/virtualgrid/visual-elements/cells: title: Cells - position: 7 - controls/virtualgrid/editing: - title: Editing - position: 8 - controls/virtualgrid/sorting: - title: Sorting - position: 9 - controls/virtualgrid/filtering: + position: 7 + controls/virtualgrid/features/filtering: title: Filtering - position: 10 - controls/virtualgrid/paging: - title: Paging - position: 11 - controls/virtualgrid/selection: + position: 1 + controls/virtualgrid/features/sorting: + title: Sorting + position: 2 + controls/virtualgrid/features/editing: + title: Editing + position: 3 + controls/virtualgrid/features/selection: title: Selection - position: 12 - controls/virtualgrid/context-menu: + position: 4 + controls/virtualgrid/features/context-menu: title: Context Menu - position: 13 + position: 5 + controls/virtualgrid/features/paging: + title: Paging + position: 6 + controls/virtualgrid/features/save-and-load-layout: + title: Save and Load Layout + position: 7 controls/virtualgrid/customizing-apearance: title: Customizing Apearance - position: 13 + position: 9 controls/virtualgrid/hierarchical-virtual-grid: title: Hierarchical Virtual Grid - position: 14 - controls/virtualgrid/handling-user-input: - title: Handling User Input - position: 18 + position: 7 controls/virtualgrid/how-to: title: How-To - position: 19 + position: 12 controls/virtualgrid/end-user-capabilities: title: End User Capabilities - position: 20 + position: 11 controls/virtualgrid/localization: title: Localization - position: 20 - controls/virtualgrid/save-and-load-layout: - title: Save and Load Layout - position: 21 + position: 10 controls/virtual-keyboard: title: Virtual Keyboard position: 503 diff --git a/controls/virtualgrid/developer-focused-examples.md b/controls/virtualgrid/developer-focused-examples.md index b8360cec2..7124048a0 100644 --- a/controls/virtualgrid/developer-focused-examples.md +++ b/controls/virtualgrid/developer-focused-examples.md @@ -5,7 +5,7 @@ description: Additional examples built on top of the WinForms VirtualGrid contro slug: winforms/virtualgrid/developer-focused-examples tags: developer, sdk, examples published: True -position: 2 +position: 13 --- # Developer Focused Examples diff --git a/controls/virtualgrid/busy-indicators.md b/controls/virtualgrid/features/busy-indicators.md similarity index 96% rename from controls/virtualgrid/busy-indicators.md rename to controls/virtualgrid/features/busy-indicators.md index 0c00406fa..624087e1e 100644 --- a/controls/virtualgrid/busy-indicators.md +++ b/controls/virtualgrid/features/busy-indicators.md @@ -1,75 +1,75 @@ ---- -title: Busy Indicators -page_title: Busy Indicators - WinForms VirtualGrid Control -description: Learn how you can use the built-in busy indicators functionality in WinForms VirtualGrid. -slug: winforms/virtualgrid/busy-indicators -tags: virtualgrid, busy, indicators -published: True -position: 16 ---- - -# Busy Indicators - -There are two ways to indicate that the grid need time to perform a specific operation. The first one is to show a waiting bar in front of __RadVirtualGrid__. This way the entire control will be unaccessible while the time consuming operation is executed. The second one is to show a waiting icon in the row header. This way you can indicate that a the data for a specific row is still not loaded. - -## WatingBar - -While this indicator is shown the entire grid is disabled. It is useful when the initial data loading requires more time. - ->caption Figure 1: WaitingBar in RadVirtualGrid enabled. - -![WinForms RadVirtualGrid WaitingBar](images/virtualgrid-busy-indicators001.gif) - -The following snippet shows how you can show/hide the waiting bar: - -{{source=..\SamplesCS\VirtualGrid\VirtualGridWaitingIndicators.cs region=WaitingBar}} -{{source=..\SamplesVB\VirtualGrid\VirtualGridWaitingIndicators.vb region=WaitingBar}} -````C# -radVirtualGrid1.MasterViewInfo.IsWaiting = true; -radVirtualGrid1.MasterViewInfo.IsWaiting = false; - -```` -````VB.NET -radVirtualGrid1.MasterViewInfo.IsWaiting = True -radVirtualGrid1.MasterViewInfo.IsWaiting = False - -```` - -{{endregion}} - - -## Waiting icon - -The waiting icon can be shown in each row header. With it you can indicate that the row data is still not loaded. - ->caption Figure 2: Busy indicators in RadVirtualGrid. - -![WinForms RadVirtualGrid Busy indicators](images/virtualgrid-busy-indicators002.gif) - - -The following snippet shows how you can show/hide the waiting icon: - -{{source=..\SamplesCS\VirtualGrid\VirtualGridWaitingIndicators.cs region=icon}} -{{source=..\SamplesVB\VirtualGrid\VirtualGridWaitingIndicators.vb region=icon}} -````C# -radVirtualGrid1.MasterViewInfo.StartRowWaiting(5); -radVirtualGrid1.MasterViewInfo.StopRowWaiting(5); - -```` -````VB.NET -radVirtualGrid1.MasterViewInfo.StartRowWaiting(5) -radVirtualGrid1.MasterViewInfo.StopRowWaiting(5) - -```` - -{{endregion}} - -# See Also -* [Copy/Paste/Cut]({%slug winforms/virtualgrid/copy-paste-cut%}) - -* [Scrolling]({%slug winforms/virtualgrid/scrolling%}) - -* [Getting Started]({%slug winforms/virtualgrid/getting-started%}) - -* [Overview]({%slug winforms/virtualgrid%}) - +--- +title: Busy Indicators +page_title: Busy Indicators - WinForms VirtualGrid Control +description: Learn how you can use the built-in busy indicators functionality in WinForms VirtualGrid. +slug: winforms/virtualgrid/busy-indicators +tags: virtualgrid, busy, indicators +published: True +position: 8 +--- + +# Busy Indicators + +There are two ways to indicate that the grid need time to perform a specific operation. The first one is to show a waiting bar in front of __RadVirtualGrid__. This way the entire control will be unaccessible while the time consuming operation is executed. The second one is to show a waiting icon in the row header. This way you can indicate that a the data for a specific row is still not loaded. + +## WatingBar + +While this indicator is shown the entire grid is disabled. It is useful when the initial data loading requires more time. + +>caption Figure 1: WaitingBar in RadVirtualGrid enabled. + +![WinForms RadVirtualGrid WaitingBar](images/virtualgrid-busy-indicators001.gif) + +The following snippet shows how you can show/hide the waiting bar: + +{{source=..\SamplesCS\VirtualGrid\VirtualGridWaitingIndicators.cs region=WaitingBar}} +{{source=..\SamplesVB\VirtualGrid\VirtualGridWaitingIndicators.vb region=WaitingBar}} +````C# +radVirtualGrid1.MasterViewInfo.IsWaiting = true; +radVirtualGrid1.MasterViewInfo.IsWaiting = false; + +```` +````VB.NET +radVirtualGrid1.MasterViewInfo.IsWaiting = True +radVirtualGrid1.MasterViewInfo.IsWaiting = False + +```` + +{{endregion}} + + +## Waiting icon + +The waiting icon can be shown in each row header. With it you can indicate that the row data is still not loaded. + +>caption Figure 2: Busy indicators in RadVirtualGrid. + +![WinForms RadVirtualGrid Busy indicators](images/virtualgrid-busy-indicators002.gif) + + +The following snippet shows how you can show/hide the waiting icon: + +{{source=..\SamplesCS\VirtualGrid\VirtualGridWaitingIndicators.cs region=icon}} +{{source=..\SamplesVB\VirtualGrid\VirtualGridWaitingIndicators.vb region=icon}} +````C# +radVirtualGrid1.MasterViewInfo.StartRowWaiting(5); +radVirtualGrid1.MasterViewInfo.StopRowWaiting(5); + +```` +````VB.NET +radVirtualGrid1.MasterViewInfo.StartRowWaiting(5) +radVirtualGrid1.MasterViewInfo.StopRowWaiting(5) + +```` + +{{endregion}} + +# See Also +* [Copy/Paste/Cut]({%slug winforms/virtualgrid/copy-paste-cut%}) + +* [Scrolling]({%slug winforms/virtualgrid/scrolling%}) + +* [Getting Started]({%slug winforms/virtualgrid/getting-started%}) + +* [Overview]({%slug winforms/virtualgrid%}) + diff --git a/controls/virtualgrid/context-menu/context-menu.md b/controls/virtualgrid/features/context-menu/context-menu.md similarity index 96% rename from controls/virtualgrid/context-menu/context-menu.md rename to controls/virtualgrid/features/context-menu/context-menu.md index d26369572..78e885fd9 100644 --- a/controls/virtualgrid/context-menu/context-menu.md +++ b/controls/virtualgrid/features/context-menu/context-menu.md @@ -1,72 +1,72 @@ ---- -title: Overview -page_title: Context Menu - RadVirtualGrid -description: RadVirtualGrid provides default context menu for its cells. This context menu will appear every time the user right-clicks the RadVirtualGrid. -slug: winforms/virtualgrid/context-menu/context-menu -tags: virtualgrid, menu -published: True -position: 0 ---- - -# Context Menu - -__RadVirtualGrid__ provides default context menu for its cells. This context menu will appear every time the user right-clicks the __RadVirtualGrid__. Depending on the clicked cell element, a specific context menu is displayed: - ->caption Figure 1: Default context menu for data cells - -![WinForms RadVirtualGrid Default context menu for data cells](images/virtualgrid-context-menu001.png) - ->caption Figure 2: Default context menu for header cells - -![WinForms RadVirtualGrid Default context menu for header cells](images/virtualgrid-context-menu002.png) - ->caption Figure 3: Default context menu for new row - -![WinForms RadVirtualGrid Default context menu for new row](images/virtualgrid-context-menu003.png) - -You can control whether the context menu will be displayed by the __AllowColumnHeaderContextMenu__ property for the header cells and the __AllowCellContextMenu__ property for the rest of the cells. - -#### Disable context menu for data cells - -{{source=..\SamplesCS\VirtualGrid\ContextMenu\VirtualGridContextMenu.cs region=CellContextMenu}} -{{source=..\SamplesVB\VirtualGrid\ContextMenu\VirtualGridContextMenu.vb region=CellContextMenu}} - -````C# - -this.radVirtualGrid1.AllowCellContextMenu = false; - -```` -````VB.NET -Me.RadVirtualGrid1.AllowCellContextMenu = False - -```` - -{{endregion}} - -#### Disable context menu for header cells - -{{source=..\SamplesCS\VirtualGrid\ContextMenu\VirtualGridContextMenu.cs region=HeaderContextMenu}} -{{source=..\SamplesVB\VirtualGrid\ContextMenu\VirtualGridContextMenu.vb region=HeaderContextMenu}} - -````C# - -this.radVirtualGrid1.AllowColumnHeaderContextMenu = false; - -```` -````VB.NET -Me.RadVirtualGrid1.AllowColumnHeaderContextMenu = False - -```` - -{{endregion}} - - - - - - -# See Also -* [Custom Context Menu]({%slug winforms/virtualgrid/context-menu/custom-context-menu%}) - -* [Modifying the Default Context Menu]({%slug winforms/virtualgrid/context-menu/modifying-the-default-context-menu%}) - +--- +title: Overview +page_title: Context Menu - RadVirtualGrid +description: RadVirtualGrid provides default context menu for its cells. This context menu will appear every time the user right-clicks the RadVirtualGrid. +slug: winforms/virtualgrid/context-menu/context-menu +tags: virtualgrid, menu +published: True +position: 0 +--- + +# Context Menu + +__RadVirtualGrid__ provides default context menu for its cells. This context menu will appear every time the user right-clicks the __RadVirtualGrid__. Depending on the clicked cell element, a specific context menu is displayed: + +>caption Figure 1: Default context menu for data cells + +![WinForms RadVirtualGrid Default context menu for data cells](images/virtualgrid-context-menu001.png) + +>caption Figure 2: Default context menu for header cells + +![WinForms RadVirtualGrid Default context menu for header cells](images/virtualgrid-context-menu002.png) + +>caption Figure 3: Default context menu for new row + +![WinForms RadVirtualGrid Default context menu for new row](images/virtualgrid-context-menu003.png) + +You can control whether the context menu will be displayed by the __AllowColumnHeaderContextMenu__ property for the header cells and the __AllowCellContextMenu__ property for the rest of the cells. + +#### Disable context menu for data cells + +{{source=..\SamplesCS\VirtualGrid\ContextMenu\VirtualGridContextMenu.cs region=CellContextMenu}} +{{source=..\SamplesVB\VirtualGrid\ContextMenu\VirtualGridContextMenu.vb region=CellContextMenu}} + +````C# + +this.radVirtualGrid1.AllowCellContextMenu = false; + +```` +````VB.NET +Me.RadVirtualGrid1.AllowCellContextMenu = False + +```` + +{{endregion}} + +#### Disable context menu for header cells + +{{source=..\SamplesCS\VirtualGrid\ContextMenu\VirtualGridContextMenu.cs region=HeaderContextMenu}} +{{source=..\SamplesVB\VirtualGrid\ContextMenu\VirtualGridContextMenu.vb region=HeaderContextMenu}} + +````C# + +this.radVirtualGrid1.AllowColumnHeaderContextMenu = false; + +```` +````VB.NET +Me.RadVirtualGrid1.AllowColumnHeaderContextMenu = False + +```` + +{{endregion}} + + + + + + +# See Also +* [Custom Context Menu]({%slug winforms/virtualgrid/context-menu/custom-context-menu%}) + +* [Modifying the Default Context Menu]({%slug winforms/virtualgrid/context-menu/modifying-the-default-context-menu%}) + diff --git a/controls/virtualgrid/context-menu/custom-context-menu.md b/controls/virtualgrid/features/context-menu/custom-context-menu.md similarity index 97% rename from controls/virtualgrid/context-menu/custom-context-menu.md rename to controls/virtualgrid/features/context-menu/custom-context-menu.md index 528a2a381..b93b19422 100644 --- a/controls/virtualgrid/context-menu/custom-context-menu.md +++ b/controls/virtualgrid/features/context-menu/custom-context-menu.md @@ -1,228 +1,228 @@ ---- -title: Custom Context Menu -page_title: Custom context Menu - RadVirtualGrid -description: This article shows how you can create and usea custom context menu in RadVirtualGrid. -slug: winforms/virtualgrid/context-menu/custom-context-menu -tags: virtualgrid, menu, custom -published: True -position: 1 ---- - -# Custom context Menu - -__RadVirtualGrid__ provides a straightforward way to use custom context menus, instead of the default one. This context menu will appear every time the user right-clicks the __RadVirtualGrid__, regardless of the element of the control they click. - -![WinForms RadVirtualGrid Custom context Menu](images/virtualgrid-custom-context-menu001.png) - -Start by creating a __RadContextMenu__, initializing its items, and subscribing for the events that you want to handle to achieve the desired behavior: - -#### Create a RadContextMenu and initialize its items - -{{source=..\SamplesCS\VirtualGrid\ContextMenu\VirtualGridContextMenu.cs region=InitializeContextMenu}} -{{source=..\SamplesVB\VirtualGrid\ContextMenu\VirtualGridContextMenu.vb region=InitializeContextMenu}} - -````C# - -RadContextMenu contextMenu = new RadContextMenu(); - -public VirtualGridContextMenu() -{ - InitializeComponent(); - - RadMenuItem menuItem1 = new RadMenuItem("Item 1"); - menuItem1.ForeColor = Color.Red; - menuItem1.Click += menuItem1_Click; - RadMenuItem menuItem2 = new RadMenuItem("Item 2"); - menuItem2.Click += menuItem2_Click; - contextMenu.Items.Add(menuItem1); - contextMenu.Items.Add(menuItem2); - this.radVirtualGrid1.ContextMenuOpening += radVirtualGrid1_ContextMenuOpening; -} - -private void menuItem1_Click(object sender, EventArgs e) -{ - RadMessageBox.Show("Item1"); -} - -private void menuItem2_Click(object sender, EventArgs e) -{ - RadMessageBox.Show("Item2"); -} - -```` -````VB.NET -Private contextMenu As New RadContextMenu() -Public Sub New() - InitializeComponent() - Dim menuItem1 As New RadMenuItem("Item 1") - menuItem1.ForeColor = Color.Red - AddHandler menuItem1.Click, AddressOf menuItem1_Click - Dim menuItem2 As New RadMenuItem("Item 2") - AddHandler menuItem2.Click, AddressOf menuItem2_Click - contextMenu.Items.Add(menuItem1) - contextMenu.Items.Add(menuItem2) - AddHandler Me.RadVirtualGrid1.ContextMenuOpening, AddressOf radVirtualGrid1_ContextMenuOpening -End Sub -Private Sub menuItem1_Click(sender As Object, e As EventArgs) - RadMessageBox.Show("Item1") -End Sub -Private Sub menuItem2_Click(sender As Object, e As EventArgs) - RadMessageBox.Show("Item2") -End Sub - -```` - -{{endregion}} - -Once the menu object has been initialized and populated with menu items, it is ready to be attached to the __RadVirtualGrid__. To do that, subscribe to the __ContextMenuOpening__ event and set the context menu to be displayed: - -#### Apply the custom context menu - -{{source=..\SamplesCS\VirtualGrid\ContextMenu\VirtualGridContextMenu.cs region=ApplyCustomContextMenu}} -{{source=..\SamplesVB\VirtualGrid\ContextMenu\VirtualGridContextMenu.vb region=ApplyCustomContextMenu}} - -````C# - -private void radVirtualGrid1_ContextMenuOpening(object sender, VirtualGridContextMenuOpeningEventArgs e) -{ - e.ContextMenu = contextMenu.DropDown; -} - -```` -````VB.NET -Private Sub radVirtualGrid1_ContextMenuOpening(sender As Object, e As VirtualGridContextMenuOpeningEventArgs) - e.ContextMenu = contextMenu.DropDown -End Sub - -```` - -{{endregion}} - -# Conditional Custom Context Menus - -Applications may need to provide specific individual context menus depending on the element that was clicked. The following example demonstrates how to create two __RadContextMenu__ instances, filled with two items each. Then, according to the right-clicked cell element, apply the relevant menu. - -#### Create custom context menus - -{{source=..\SamplesCS\VirtualGrid\ContextMenu\VirtualGridContextMenu.cs region=ConditionalMenus}} -{{source=..\SamplesVB\VirtualGrid\ContextMenu\VirtualGridContextMenu.vb region=ConditionalMenus}} - -````C# - -RadContextMenu contextMenu1 = new RadContextMenu(); -RadContextMenu contextMenu2 = new RadContextMenu(); - -public void BuildCustomContextMenus() -{ - RadMenuItem item1 = new RadMenuItem("Data item 1"); - item1.Click += item1_Click; - RadMenuItem item2 = new RadMenuItem("Data item 2"); - item2.Click += item2_Click; - contextMenu1.Items.Add(item1); - contextMenu1.Items.Add(item2); - - RadMenuItem item3 = new RadMenuItem("Header item 1"); - item3.Click += item3_Click; - RadMenuItem item4 = new RadMenuItem("Header item 2"); - item4.Click += item4_Click; - contextMenu2.Items.Add(item3); - contextMenu2.Items.Add(item4); -} - -private void item4_Click(object sender, EventArgs e) -{ - RadMessageBox.Show("Header item 2"); -} - -private void item3_Click(object sender, EventArgs e) -{ - RadMessageBox.Show("Header item 1"); -} - -private void item2_Click(object sender, EventArgs e) -{ - RadMessageBox.Show("Data item 2"); -} - -private void item1_Click(object sender, EventArgs e) -{ - RadMessageBox.Show("Data item 1"); -} - -```` -````VB.NET -Private contextMenu1 As New RadContextMenu() -Private contextMenu2 As New RadContextMenu() -Public Sub BuildCustomContextMenus() - Dim item1 As New RadMenuItem("Data item 1") - AddHandler item1.Click, AddressOf item1_Click - Dim item2 As New RadMenuItem("Data item 2") - AddHandler item2.Click, AddressOf item2_Click - contextMenu1.Items.Add(item1) - contextMenu1.Items.Add(item2) - Dim item3 As New RadMenuItem("Header item 1") - AddHandler item3.Click, AddressOf item3_Click - Dim item4 As New RadMenuItem("Header item 2") - AddHandler item4.Click, AddressOf item4_Click - contextMenu2.Items.Add(item3) - contextMenu2.Items.Add(item4) -End Sub -Private Sub item4_Click(sender As Object, e As EventArgs) - RadMessageBox.Show("Header item 2") -End Sub -Private Sub item3_Click(sender As Object, e As EventArgs) - RadMessageBox.Show("Header item 1") -End Sub -Private Sub item2_Click(sender As Object, e As EventArgs) - RadMessageBox.Show("Data item 2") -End Sub -Private Sub item1_Click(sender As Object, e As EventArgs) - RadMessageBox.Show("Data item 1") -End Sub - -```` - -{{endregion}} - -#### Apply the relevant menu - -{{source=..\SamplesCS\VirtualGrid\ContextMenu\VirtualGridContextMenu.cs region=SetConditionalMenus}} -{{source=..\SamplesVB\VirtualGrid\ContextMenu\VirtualGridContextMenu.vb region=SetConditionalMenus}} - -````C# - -private void ConditionalCustom_ContextMenuOpening(object sender, VirtualGridContextMenuOpeningEventArgs e) -{ - if (e.RowIndex == -1) - { - e.ContextMenu = contextMenu2.DropDown; - } - else if (e.RowIndex >= 0) - { - e.ContextMenu = contextMenu1.DropDown; - } -} - -```` -````VB.NET -Private Sub ConditionalCustom_ContextMenuOpening(sender As Object, e As VirtualGridContextMenuOpeningEventArgs) - If e.RowIndex = -1 Then - e.ContextMenu = contextMenu2.DropDown - ElseIf e.RowIndex >= 0 Then - e.ContextMenu = contextMenu1.DropDown - End If -End Sub - -```` - -{{endregion}} - -|Data Cells Menu|Header Cells Menu| -|----|----| -|![WinForms RadVirtualGrid Data Cells Menu](images/virtualgrid-custom-context-menu002.png)|![WinForms RadVirtualGrid Header Cells Menu](images/virtualgrid-custom-context-menu003.png)| - -# See Also -* [Overview]({%slug winforms/virtualgrid/context-menu/context-menu%}) - -* [Modifying the Default Context Menu]({%slug winforms/virtualgrid/context-menu/modifying-the-default-context-menu%}) - +--- +title: Custom Context Menu +page_title: Custom context Menu - RadVirtualGrid +description: This article shows how you can create and usea custom context menu in RadVirtualGrid. +slug: winforms/virtualgrid/context-menu/custom-context-menu +tags: virtualgrid, menu, custom +published: True +position: 1 +--- + +# Custom context Menu + +__RadVirtualGrid__ provides a straightforward way to use custom context menus, instead of the default one. This context menu will appear every time the user right-clicks the __RadVirtualGrid__, regardless of the element of the control they click. + +![WinForms RadVirtualGrid Custom context Menu](images/virtualgrid-custom-context-menu001.png) + +Start by creating a __RadContextMenu__, initializing its items, and subscribing for the events that you want to handle to achieve the desired behavior: + +#### Create a RadContextMenu and initialize its items + +{{source=..\SamplesCS\VirtualGrid\ContextMenu\VirtualGridContextMenu.cs region=InitializeContextMenu}} +{{source=..\SamplesVB\VirtualGrid\ContextMenu\VirtualGridContextMenu.vb region=InitializeContextMenu}} + +````C# + +RadContextMenu contextMenu = new RadContextMenu(); + +public VirtualGridContextMenu() +{ + InitializeComponent(); + + RadMenuItem menuItem1 = new RadMenuItem("Item 1"); + menuItem1.ForeColor = Color.Red; + menuItem1.Click += menuItem1_Click; + RadMenuItem menuItem2 = new RadMenuItem("Item 2"); + menuItem2.Click += menuItem2_Click; + contextMenu.Items.Add(menuItem1); + contextMenu.Items.Add(menuItem2); + this.radVirtualGrid1.ContextMenuOpening += radVirtualGrid1_ContextMenuOpening; +} + +private void menuItem1_Click(object sender, EventArgs e) +{ + RadMessageBox.Show("Item1"); +} + +private void menuItem2_Click(object sender, EventArgs e) +{ + RadMessageBox.Show("Item2"); +} + +```` +````VB.NET +Private contextMenu As New RadContextMenu() +Public Sub New() + InitializeComponent() + Dim menuItem1 As New RadMenuItem("Item 1") + menuItem1.ForeColor = Color.Red + AddHandler menuItem1.Click, AddressOf menuItem1_Click + Dim menuItem2 As New RadMenuItem("Item 2") + AddHandler menuItem2.Click, AddressOf menuItem2_Click + contextMenu.Items.Add(menuItem1) + contextMenu.Items.Add(menuItem2) + AddHandler Me.RadVirtualGrid1.ContextMenuOpening, AddressOf radVirtualGrid1_ContextMenuOpening +End Sub +Private Sub menuItem1_Click(sender As Object, e As EventArgs) + RadMessageBox.Show("Item1") +End Sub +Private Sub menuItem2_Click(sender As Object, e As EventArgs) + RadMessageBox.Show("Item2") +End Sub + +```` + +{{endregion}} + +Once the menu object has been initialized and populated with menu items, it is ready to be attached to the __RadVirtualGrid__. To do that, subscribe to the __ContextMenuOpening__ event and set the context menu to be displayed: + +#### Apply the custom context menu + +{{source=..\SamplesCS\VirtualGrid\ContextMenu\VirtualGridContextMenu.cs region=ApplyCustomContextMenu}} +{{source=..\SamplesVB\VirtualGrid\ContextMenu\VirtualGridContextMenu.vb region=ApplyCustomContextMenu}} + +````C# + +private void radVirtualGrid1_ContextMenuOpening(object sender, VirtualGridContextMenuOpeningEventArgs e) +{ + e.ContextMenu = contextMenu.DropDown; +} + +```` +````VB.NET +Private Sub radVirtualGrid1_ContextMenuOpening(sender As Object, e As VirtualGridContextMenuOpeningEventArgs) + e.ContextMenu = contextMenu.DropDown +End Sub + +```` + +{{endregion}} + +# Conditional Custom Context Menus + +Applications may need to provide specific individual context menus depending on the element that was clicked. The following example demonstrates how to create two __RadContextMenu__ instances, filled with two items each. Then, according to the right-clicked cell element, apply the relevant menu. + +#### Create custom context menus + +{{source=..\SamplesCS\VirtualGrid\ContextMenu\VirtualGridContextMenu.cs region=ConditionalMenus}} +{{source=..\SamplesVB\VirtualGrid\ContextMenu\VirtualGridContextMenu.vb region=ConditionalMenus}} + +````C# + +RadContextMenu contextMenu1 = new RadContextMenu(); +RadContextMenu contextMenu2 = new RadContextMenu(); + +public void BuildCustomContextMenus() +{ + RadMenuItem item1 = new RadMenuItem("Data item 1"); + item1.Click += item1_Click; + RadMenuItem item2 = new RadMenuItem("Data item 2"); + item2.Click += item2_Click; + contextMenu1.Items.Add(item1); + contextMenu1.Items.Add(item2); + + RadMenuItem item3 = new RadMenuItem("Header item 1"); + item3.Click += item3_Click; + RadMenuItem item4 = new RadMenuItem("Header item 2"); + item4.Click += item4_Click; + contextMenu2.Items.Add(item3); + contextMenu2.Items.Add(item4); +} + +private void item4_Click(object sender, EventArgs e) +{ + RadMessageBox.Show("Header item 2"); +} + +private void item3_Click(object sender, EventArgs e) +{ + RadMessageBox.Show("Header item 1"); +} + +private void item2_Click(object sender, EventArgs e) +{ + RadMessageBox.Show("Data item 2"); +} + +private void item1_Click(object sender, EventArgs e) +{ + RadMessageBox.Show("Data item 1"); +} + +```` +````VB.NET +Private contextMenu1 As New RadContextMenu() +Private contextMenu2 As New RadContextMenu() +Public Sub BuildCustomContextMenus() + Dim item1 As New RadMenuItem("Data item 1") + AddHandler item1.Click, AddressOf item1_Click + Dim item2 As New RadMenuItem("Data item 2") + AddHandler item2.Click, AddressOf item2_Click + contextMenu1.Items.Add(item1) + contextMenu1.Items.Add(item2) + Dim item3 As New RadMenuItem("Header item 1") + AddHandler item3.Click, AddressOf item3_Click + Dim item4 As New RadMenuItem("Header item 2") + AddHandler item4.Click, AddressOf item4_Click + contextMenu2.Items.Add(item3) + contextMenu2.Items.Add(item4) +End Sub +Private Sub item4_Click(sender As Object, e As EventArgs) + RadMessageBox.Show("Header item 2") +End Sub +Private Sub item3_Click(sender As Object, e As EventArgs) + RadMessageBox.Show("Header item 1") +End Sub +Private Sub item2_Click(sender As Object, e As EventArgs) + RadMessageBox.Show("Data item 2") +End Sub +Private Sub item1_Click(sender As Object, e As EventArgs) + RadMessageBox.Show("Data item 1") +End Sub + +```` + +{{endregion}} + +#### Apply the relevant menu + +{{source=..\SamplesCS\VirtualGrid\ContextMenu\VirtualGridContextMenu.cs region=SetConditionalMenus}} +{{source=..\SamplesVB\VirtualGrid\ContextMenu\VirtualGridContextMenu.vb region=SetConditionalMenus}} + +````C# + +private void ConditionalCustom_ContextMenuOpening(object sender, VirtualGridContextMenuOpeningEventArgs e) +{ + if (e.RowIndex == -1) + { + e.ContextMenu = contextMenu2.DropDown; + } + else if (e.RowIndex >= 0) + { + e.ContextMenu = contextMenu1.DropDown; + } +} + +```` +````VB.NET +Private Sub ConditionalCustom_ContextMenuOpening(sender As Object, e As VirtualGridContextMenuOpeningEventArgs) + If e.RowIndex = -1 Then + e.ContextMenu = contextMenu2.DropDown + ElseIf e.RowIndex >= 0 Then + e.ContextMenu = contextMenu1.DropDown + End If +End Sub + +```` + +{{endregion}} + +|Data Cells Menu|Header Cells Menu| +|----|----| +|![WinForms RadVirtualGrid Data Cells Menu](images/virtualgrid-custom-context-menu002.png)|![WinForms RadVirtualGrid Header Cells Menu](images/virtualgrid-custom-context-menu003.png)| + +# See Also +* [Overview]({%slug winforms/virtualgrid/context-menu/context-menu%}) + +* [Modifying the Default Context Menu]({%slug winforms/virtualgrid/context-menu/modifying-the-default-context-menu%}) + diff --git a/controls/virtualgrid/context-menu/images/virtualgrid-context-menu001.png b/controls/virtualgrid/features/context-menu/images/virtualgrid-context-menu001.png similarity index 100% rename from controls/virtualgrid/context-menu/images/virtualgrid-context-menu001.png rename to controls/virtualgrid/features/context-menu/images/virtualgrid-context-menu001.png diff --git a/controls/virtualgrid/context-menu/images/virtualgrid-context-menu002.png b/controls/virtualgrid/features/context-menu/images/virtualgrid-context-menu002.png similarity index 100% rename from controls/virtualgrid/context-menu/images/virtualgrid-context-menu002.png rename to controls/virtualgrid/features/context-menu/images/virtualgrid-context-menu002.png diff --git a/controls/virtualgrid/context-menu/images/virtualgrid-context-menu003.png b/controls/virtualgrid/features/context-menu/images/virtualgrid-context-menu003.png similarity index 100% rename from controls/virtualgrid/context-menu/images/virtualgrid-context-menu003.png rename to controls/virtualgrid/features/context-menu/images/virtualgrid-context-menu003.png diff --git a/controls/virtualgrid/context-menu/images/virtualgrid-custom-context-menu001.png b/controls/virtualgrid/features/context-menu/images/virtualgrid-custom-context-menu001.png similarity index 100% rename from controls/virtualgrid/context-menu/images/virtualgrid-custom-context-menu001.png rename to controls/virtualgrid/features/context-menu/images/virtualgrid-custom-context-menu001.png diff --git a/controls/virtualgrid/context-menu/images/virtualgrid-custom-context-menu002.png b/controls/virtualgrid/features/context-menu/images/virtualgrid-custom-context-menu002.png similarity index 100% rename from controls/virtualgrid/context-menu/images/virtualgrid-custom-context-menu002.png rename to controls/virtualgrid/features/context-menu/images/virtualgrid-custom-context-menu002.png diff --git a/controls/virtualgrid/context-menu/images/virtualgrid-custom-context-menu003.png b/controls/virtualgrid/features/context-menu/images/virtualgrid-custom-context-menu003.png similarity index 100% rename from controls/virtualgrid/context-menu/images/virtualgrid-custom-context-menu003.png rename to controls/virtualgrid/features/context-menu/images/virtualgrid-custom-context-menu003.png diff --git a/controls/virtualgrid/context-menu/images/virtualgrid-modifying-the-default-context-menu001.png b/controls/virtualgrid/features/context-menu/images/virtualgrid-modifying-the-default-context-menu001.png similarity index 100% rename from controls/virtualgrid/context-menu/images/virtualgrid-modifying-the-default-context-menu001.png rename to controls/virtualgrid/features/context-menu/images/virtualgrid-modifying-the-default-context-menu001.png diff --git a/controls/virtualgrid/context-menu/images/virtualgrid-modifying-the-default-context-menu002.png b/controls/virtualgrid/features/context-menu/images/virtualgrid-modifying-the-default-context-menu002.png similarity index 100% rename from controls/virtualgrid/context-menu/images/virtualgrid-modifying-the-default-context-menu002.png rename to controls/virtualgrid/features/context-menu/images/virtualgrid-modifying-the-default-context-menu002.png diff --git a/controls/virtualgrid/context-menu/images/virtualgrid-modifying-the-default-context-menu003.png b/controls/virtualgrid/features/context-menu/images/virtualgrid-modifying-the-default-context-menu003.png similarity index 100% rename from controls/virtualgrid/context-menu/images/virtualgrid-modifying-the-default-context-menu003.png rename to controls/virtualgrid/features/context-menu/images/virtualgrid-modifying-the-default-context-menu003.png diff --git a/controls/virtualgrid/context-menu/modifying-the-default-context-menu.md b/controls/virtualgrid/features/context-menu/modifying-the-default-context-menu.md similarity index 97% rename from controls/virtualgrid/context-menu/modifying-the-default-context-menu.md rename to controls/virtualgrid/features/context-menu/modifying-the-default-context-menu.md index b9032ac09..fab47ab52 100644 --- a/controls/virtualgrid/context-menu/modifying-the-default-context-menu.md +++ b/controls/virtualgrid/features/context-menu/modifying-the-default-context-menu.md @@ -1,97 +1,97 @@ ---- -title: Modifying the Default Context Menu -page_title: Modifying the Default Context Menu - RadVirtualGrid -description: This article shows how one can access and modify the default context menu of RadVirtualGrid. -slug: winforms/virtualgrid/context-menu/modifying-the-default-context-menu -tags: virtualgrid, menu, modify -published: True -position: 2 ---- - -The default __RadVirtualGrid__ context menu can be customized in the __ContextMenuOpening__ event. - -# Removing an item from the default RadVirtualGrid context menu: - -{{source=..\SamplesCS\VirtualGrid\ContextMenu\VirtualGridContextMenu.cs region=RemoveItem}} -{{source=..\SamplesVB\VirtualGrid\ContextMenu\VirtualGridContextMenu.vb region=RemoveItem}} - -````C# - -private void Remove_ContextMenuOpening(object sender, VirtualGridContextMenuOpeningEventArgs e) -{ - for (int i = 0; i < e.ContextMenu.Items.Count; i++) - { - if (e.ContextMenu.Items[i].Text == "Delete") - { - // hide the Delete option from the context menu - e.ContextMenu.Items[i].Visibility = Telerik.WinControls.ElementVisibility.Collapsed; - // hide the separator before the Delete option - e.ContextMenu.Items[i - 1].Visibility = Telerik.WinControls.ElementVisibility.Collapsed; - } - } -} - -```` -````VB.NET -Private Sub Remove_ContextMenuOpening(sender As Object, e As VirtualGridContextMenuOpeningEventArgs) - For i As Integer = 0 To e.ContextMenu.Items.Count - 1 - If e.ContextMenu.Items(i).Text = "Delete" Then - ' hide the Delete option from the context menu - e.ContextMenu.Items(i).Visibility = Telerik.WinControls.ElementVisibility.Collapsed - ' hide the separator before the Delete option - e.ContextMenu.Items(i - 1).Visibility = Telerik.WinControls.ElementVisibility.Collapsed - End If - Next -End Sub - -```` - -{{endregion}} - -|Default Context Menu|Modified Context Menu| -|----|----| -|![WinForms RadVirtualGrid Default Context Menu](images/virtualgrid-modifying-the-default-context-menu001.png)|![WinForms RadVirtualGrid Modified Context Menu with Removed Item](images/virtualgrid-modifying-the-default-context-menu002.png)| - -# Adding menu items to the default RadVirtualGrid context menu - -In order to add custom menu items to the default context menu, you should create menu item instances in the __ContextMenuOpening__ event handler and add them to the __VirtualGridContextMenuOpeningEventArgs.ContextMenu.Items__ collection: - -#### Adding items to the default RadVirtualGrid context menu: - -{{source=..\SamplesCS\VirtualGrid\ContextMenu\VirtualGridContextMenu.cs region=AddItem}} -{{source=..\SamplesVB\VirtualGrid\ContextMenu\VirtualGridContextMenu.vb region=AddItem}} - -````C# - -private void Add_ContextMenuOpening(object sender, VirtualGridContextMenuOpeningEventArgs e) -{ - RadMenuItem customMenuItem = new RadMenuItem(); - customMenuItem.Text = "Custom Data Operation"; - RadMenuSeparatorItem separator = new RadMenuSeparatorItem(); - e.ContextMenu.Items.Add(separator); - e.ContextMenu.Items.Add(customMenuItem); -} - -```` -````VB.NET -Private Sub Add_ContextMenuOpening(sender As Object, e As VirtualGridContextMenuOpeningEventArgs) - Dim customMenuItem As New RadMenuItem() - customMenuItem.Text = "Custom Data Operation" - Dim separator As New RadMenuSeparatorItem() - e.ContextMenu.Items.Add(separator) - e.ContextMenu.Items.Add(customMenuItem) -End Sub - -```` - -{{endregion}} - -|Default Context Menu|Modified Context Menu| -|----|----| -|![WinForms RadVirtualGrid ContextMenu](images/virtualgrid-modifying-the-default-context-menu001.png)|![WinForms RadVirtualGrid Modified Context Menu with Added item](images/virtualgrid-modifying-the-default-context-menu003.png)| - -# See Also -* [Overview]({%slug winforms/virtualgrid/context-menu/context-menu%}) - -* [Custom Context Menu]({%slug winforms/virtualgrid/context-menu/custom-context-menu%}) - +--- +title: Modifying the Default Context Menu +page_title: Modifying the Default Context Menu - RadVirtualGrid +description: This article shows how one can access and modify the default context menu of RadVirtualGrid. +slug: winforms/virtualgrid/context-menu/modifying-the-default-context-menu +tags: virtualgrid, menu, modify +published: True +position: 2 +--- + +The default __RadVirtualGrid__ context menu can be customized in the __ContextMenuOpening__ event. + +# Removing an item from the default RadVirtualGrid context menu: + +{{source=..\SamplesCS\VirtualGrid\ContextMenu\VirtualGridContextMenu.cs region=RemoveItem}} +{{source=..\SamplesVB\VirtualGrid\ContextMenu\VirtualGridContextMenu.vb region=RemoveItem}} + +````C# + +private void Remove_ContextMenuOpening(object sender, VirtualGridContextMenuOpeningEventArgs e) +{ + for (int i = 0; i < e.ContextMenu.Items.Count; i++) + { + if (e.ContextMenu.Items[i].Text == "Delete") + { + // hide the Delete option from the context menu + e.ContextMenu.Items[i].Visibility = Telerik.WinControls.ElementVisibility.Collapsed; + // hide the separator before the Delete option + e.ContextMenu.Items[i - 1].Visibility = Telerik.WinControls.ElementVisibility.Collapsed; + } + } +} + +```` +````VB.NET +Private Sub Remove_ContextMenuOpening(sender As Object, e As VirtualGridContextMenuOpeningEventArgs) + For i As Integer = 0 To e.ContextMenu.Items.Count - 1 + If e.ContextMenu.Items(i).Text = "Delete" Then + ' hide the Delete option from the context menu + e.ContextMenu.Items(i).Visibility = Telerik.WinControls.ElementVisibility.Collapsed + ' hide the separator before the Delete option + e.ContextMenu.Items(i - 1).Visibility = Telerik.WinControls.ElementVisibility.Collapsed + End If + Next +End Sub + +```` + +{{endregion}} + +|Default Context Menu|Modified Context Menu| +|----|----| +|![WinForms RadVirtualGrid Default Context Menu](images/virtualgrid-modifying-the-default-context-menu001.png)|![WinForms RadVirtualGrid Modified Context Menu with Removed Item](images/virtualgrid-modifying-the-default-context-menu002.png)| + +# Adding menu items to the default RadVirtualGrid context menu + +In order to add custom menu items to the default context menu, you should create menu item instances in the __ContextMenuOpening__ event handler and add them to the __VirtualGridContextMenuOpeningEventArgs.ContextMenu.Items__ collection: + +#### Adding items to the default RadVirtualGrid context menu: + +{{source=..\SamplesCS\VirtualGrid\ContextMenu\VirtualGridContextMenu.cs region=AddItem}} +{{source=..\SamplesVB\VirtualGrid\ContextMenu\VirtualGridContextMenu.vb region=AddItem}} + +````C# + +private void Add_ContextMenuOpening(object sender, VirtualGridContextMenuOpeningEventArgs e) +{ + RadMenuItem customMenuItem = new RadMenuItem(); + customMenuItem.Text = "Custom Data Operation"; + RadMenuSeparatorItem separator = new RadMenuSeparatorItem(); + e.ContextMenu.Items.Add(separator); + e.ContextMenu.Items.Add(customMenuItem); +} + +```` +````VB.NET +Private Sub Add_ContextMenuOpening(sender As Object, e As VirtualGridContextMenuOpeningEventArgs) + Dim customMenuItem As New RadMenuItem() + customMenuItem.Text = "Custom Data Operation" + Dim separator As New RadMenuSeparatorItem() + e.ContextMenu.Items.Add(separator) + e.ContextMenu.Items.Add(customMenuItem) +End Sub + +```` + +{{endregion}} + +|Default Context Menu|Modified Context Menu| +|----|----| +|![WinForms RadVirtualGrid ContextMenu](images/virtualgrid-modifying-the-default-context-menu001.png)|![WinForms RadVirtualGrid Modified Context Menu with Added item](images/virtualgrid-modifying-the-default-context-menu003.png)| + +# See Also +* [Overview]({%slug winforms/virtualgrid/context-menu/context-menu%}) + +* [Custom Context Menu]({%slug winforms/virtualgrid/context-menu/custom-context-menu%}) + diff --git a/controls/virtualgrid/copy-paste-cut.md b/controls/virtualgrid/features/copy-paste-cut.md similarity index 98% rename from controls/virtualgrid/copy-paste-cut.md rename to controls/virtualgrid/features/copy-paste-cut.md index 09e6a72ea..7333e6af5 100644 --- a/controls/virtualgrid/copy-paste-cut.md +++ b/controls/virtualgrid/features/copy-paste-cut.md @@ -5,7 +5,7 @@ description: WinForms VirtualGrid supports built-in Copy/Paste functionality, wh slug: winforms/virtualgrid/copy-paste-cut tags: virtualgrid, copy, paste, cut published: True -position: 15 +position: 10 --- # Copy/Paste/Cut @@ -22,22 +22,22 @@ __RadVirtualGrid__ introduces __Copying__ event which occurs when the grid has p {{source=..\SamplesCS\VirtualGrid\CopyPasteCutCode.cs region=copy}} {{source=..\SamplesVB\VirtualGrid\CopyPasteCutCode.vb region=copy}} -````C# -void radVirtualGrid1_Copying(object sender, VirtualGridClipboardEventArgs e) -{ - if (e.Format == DataFormats.Html) - { - e.Cancel = true; - } -} +````C# +void radVirtualGrid1_Copying(object sender, VirtualGridClipboardEventArgs e) +{ + if (e.Format == DataFormats.Html) + { + e.Cancel = true; + } +} ```` -````VB.NET -Private Sub radVirtualGrid1_Copying(ByVal sender As Object, ByVal e As VirtualGridClipboardEventArgs) - If e.Format = DataFormats.Html Then - e.Cancel = True - End If -End Sub +````VB.NET +Private Sub radVirtualGrid1_Copying(ByVal sender As Object, ByVal e As VirtualGridClipboardEventArgs) + If e.Format = DataFormats.Html Then + e.Cancel = True + End If +End Sub ```` @@ -57,29 +57,29 @@ The __Pasting__ event is appropriate for modifying the Clipboard data before pas {{source=..\SamplesCS\VirtualGrid\CopyPasteCutCode.cs region=paste}} {{source=..\SamplesVB\VirtualGrid\CopyPasteCutCode.vb region=paste}} -````C# -void radVirtualGrid1_Pasting(object sender, VirtualGridClipboardEventArgs e) -{ - if (Clipboard.ContainsData(DataFormats.Text)) - { - string data = Clipboard.GetData(DataFormats.Text).ToString(); - if (data != string.Empty) - { - Clipboard.SetData(DataFormats.Text, data.ToUpper()); - } - } -} +````C# +void radVirtualGrid1_Pasting(object sender, VirtualGridClipboardEventArgs e) +{ + if (Clipboard.ContainsData(DataFormats.Text)) + { + string data = Clipboard.GetData(DataFormats.Text).ToString(); + if (data != string.Empty) + { + Clipboard.SetData(DataFormats.Text, data.ToUpper()); + } + } +} ```` -````VB.NET -Private Sub radVirtualGrid1_Pasting(ByVal sender As Object, ByVal e As VirtualGridClipboardEventArgs) - If Clipboard.ContainsData(DataFormats.Text) Then - Dim data As String = Clipboard.GetData(DataFormats.Text).ToString() - If data <> String.Empty Then - Clipboard.SetData(DataFormats.Text, data.ToUpper()) - End If - End If -End Sub +````VB.NET +Private Sub radVirtualGrid1_Pasting(ByVal sender As Object, ByVal e As VirtualGridClipboardEventArgs) + If Clipboard.ContainsData(DataFormats.Text) Then + Dim data As String = Clipboard.GetData(DataFormats.Text).ToString() + If data <> String.Empty Then + Clipboard.SetData(DataFormats.Text, data.ToUpper()) + End If + End If +End Sub ```` diff --git a/controls/virtualgrid/editing/api.md b/controls/virtualgrid/features/editing/api.md similarity index 100% rename from controls/virtualgrid/editing/api.md rename to controls/virtualgrid/features/editing/api.md diff --git a/controls/virtualgrid/editing/changing-default-editor.md b/controls/virtualgrid/features/editing/changing-default-editor.md similarity index 97% rename from controls/virtualgrid/editing/changing-default-editor.md rename to controls/virtualgrid/features/editing/changing-default-editor.md index 841633b59..8e5cbab8c 100644 --- a/controls/virtualgrid/editing/changing-default-editor.md +++ b/controls/virtualgrid/features/editing/changing-default-editor.md @@ -1,62 +1,62 @@ ---- -title: Changing the Default Editors -page_title: Changing the Default Editors - RadVirtualGrid -description: This article shows how you can replace the default editors used in RadVirtualGrid with custom ones. -slug: winforms/virtualgrid/cells/changing-default-editor -tags: virtualgrid, custom, editor -published: True -position: 4 ---- - -# Changing the Default Editors - -By default the grid is using the underlying field data type to determine the editor type. If you want to change the default editor you should use the __EditorReqired__ event. For example the following snippet shows how you can change the default text editor to __VirtualGridDropDownListEditor__. - -{{source=..\SamplesCS\VirtualGrid\Editing\EditorsProperties.cs region=ChangeEditor}} -{{source=..\SamplesVB\VirtualGrid\Editing\EditorsProperties.vb region=ChangeEditor}} -````C# - -private void RadVirtualGrid1_EditorRequired(object sender, VirtualGridEditorRequiredEventArgs e) -{ - if (e.ColumnIndex == 1) - { - VirtualGridDropDownListEditor dropDownListEditor = new VirtualGridDropDownListEditor(); - RadDropDownListEditorElement element = dropDownListEditor.EditorElement as RadDropDownListEditorElement; - element.DataSource = new string[] { "Mr.", "Mrs.", "Ms.", "Dr." }; - e.Editor = dropDownListEditor; - } -} - -```` -````VB.NET -Private Sub RadVirtualGrid1_EditorRequired(ByVal sender As Object, ByVal e As VirtualGridEditorRequiredEventArgs) - If e.ColumnIndex = 1 Then - Dim dropDownListEditor As New VirtualGridDropDownListEditor() - Dim element As RadDropDownListEditorElement = TryCast(dropDownListEditor.EditorElement, RadDropDownListEditorElement) - element.DataSource = New String() {"Mr.", "Mrs.", "Ms.", "Dr."} - e.Editor = dropDownListEditor - End If -End Sub -Private Sub DefineColumnDataType() - '#Region "DefineColumnDataType" - Me.radVirtualGrid1.MasterViewInfo.ColumnDataTypes(0) = GetType(Integer) - -```` - -{{endregion}} - - - -# See Also -* [API]({%slug winforms/virtualgrid/cells/api%}) - -* [Changing Editors Properties]({%slug winforms/virtualgrid/editing/editors-properties%}) - -* [Data Validation]({%slug winforms/virtualgrid/editing/data-validation%}) - -* [Overview]({%slug winforms/virtualgrid/editing/editors%}) - -* [Events]({%slug winforms/virtualgrid/editing/events%}) - -* [Using Custom Editors]({%slug winforms/virtualgrid/editing/using-custom-editors%}) - +--- +title: Changing the Default Editors +page_title: Changing the Default Editors - RadVirtualGrid +description: This article shows how you can replace the default editors used in RadVirtualGrid with custom ones. +slug: winforms/virtualgrid/cells/changing-default-editor +tags: virtualgrid, custom, editor +published: True +position: 4 +--- + +# Changing the Default Editors + +By default the grid is using the underlying field data type to determine the editor type. If you want to change the default editor you should use the __EditorReqired__ event. For example the following snippet shows how you can change the default text editor to __VirtualGridDropDownListEditor__. + +{{source=..\SamplesCS\VirtualGrid\Editing\EditorsProperties.cs region=ChangeEditor}} +{{source=..\SamplesVB\VirtualGrid\Editing\EditorsProperties.vb region=ChangeEditor}} +````C# + +private void RadVirtualGrid1_EditorRequired(object sender, VirtualGridEditorRequiredEventArgs e) +{ + if (e.ColumnIndex == 1) + { + VirtualGridDropDownListEditor dropDownListEditor = new VirtualGridDropDownListEditor(); + RadDropDownListEditorElement element = dropDownListEditor.EditorElement as RadDropDownListEditorElement; + element.DataSource = new string[] { "Mr.", "Mrs.", "Ms.", "Dr." }; + e.Editor = dropDownListEditor; + } +} + +```` +````VB.NET +Private Sub RadVirtualGrid1_EditorRequired(ByVal sender As Object, ByVal e As VirtualGridEditorRequiredEventArgs) + If e.ColumnIndex = 1 Then + Dim dropDownListEditor As New VirtualGridDropDownListEditor() + Dim element As RadDropDownListEditorElement = TryCast(dropDownListEditor.EditorElement, RadDropDownListEditorElement) + element.DataSource = New String() {"Mr.", "Mrs.", "Ms.", "Dr."} + e.Editor = dropDownListEditor + End If +End Sub +Private Sub DefineColumnDataType() + '#Region "DefineColumnDataType" + Me.radVirtualGrid1.MasterViewInfo.ColumnDataTypes(0) = GetType(Integer) + +```` + +{{endregion}} + + + +# See Also +* [API]({%slug winforms/virtualgrid/cells/api%}) + +* [Changing Editors Properties]({%slug winforms/virtualgrid/editing/editors-properties%}) + +* [Data Validation]({%slug winforms/virtualgrid/editing/data-validation%}) + +* [Overview]({%slug winforms/virtualgrid/editing/editors%}) + +* [Events]({%slug winforms/virtualgrid/editing/events%}) + +* [Using Custom Editors]({%slug winforms/virtualgrid/editing/using-custom-editors%}) + diff --git a/controls/virtualgrid/editing/changing-editors-properties.md b/controls/virtualgrid/features/editing/changing-editors-properties.md similarity index 97% rename from controls/virtualgrid/editing/changing-editors-properties.md rename to controls/virtualgrid/features/editing/changing-editors-properties.md index e005baf0a..977a56678 100644 --- a/controls/virtualgrid/editing/changing-editors-properties.md +++ b/controls/virtualgrid/features/editing/changing-editors-properties.md @@ -1,87 +1,87 @@ ---- -title: Changing Editors Properties -page_title: Changing Editors Properties - RadVirtualGrid -description: This article shows how you can access and change the editors properties. -slug: winforms/virtualgrid/editing/editors-properties -tags: virtualgrid, edidtors, properties -published: True -position: 5 ---- - -# Accessing the Editors and Changing their Properties. - -Since the editors are created each time when the user starts edit operation, they can by accessed in the __CellEditorInitialized__ event. The following example shows how you can access some of the editors and change their properties. - -{{source=..\SamplesCS\VirtualGrid\Editing\EditorsProperties.cs region=AccessProperties}} -{{source=..\SamplesVB\Virtualgrid\Editing\EditorsProperties.vb region=AccessProperties}} -````C# - -void radVirtualGrid1_CellEditorInitialized(object sender, VirtualGridCellEditorInitializedEventArgs e) -{ - var dateTimeEditor = e.ActiveEditor as VirtualGridDateTimeEditor; - if (dateTimeEditor != null) - { - var editorElement = dateTimeEditor.EditorElement as RadDateTimeEditorElement; - editorElement.Format = DateTimePickerFormat.Custom; - editorElement.CustomFormat = "dd/MM/yyyy"; - } - - var dropDownListEditor = e.ActiveEditor as VirtualGridDropDownListEditor; - if (dropDownListEditor != null) - { - RadDropDownListEditorElement element = dropDownListEditor.EditorElement as RadDropDownListEditorElement; - element.DisplayMember = "Name"; - element.ValueMember = "Name"; - - element.DataSource = GetTable(); - } - - var textBoxEditor = e.ActiveEditor as VirtualGridTextBoxEditor; - if (textBoxEditor != null) - { - var editorElement = textBoxEditor.EditorElement as RadTextBoxEditorElement; - editorElement.TextBoxItem.ForeColor = Color.Red; - } -} - -```` -````VB.NET -Private Sub radVirtualGrid1_CellEditorInitialized(ByVal sender As Object, ByVal e As VirtualGridCellEditorInitializedEventArgs) - Dim dateTimeEditor = TryCast(e.ActiveEditor, VirtualGridDateTimeEditor) - If dateTimeEditor IsNot Nothing Then - Dim editorElement = TryCast(dateTimeEditor.EditorElement, RadDateTimeEditorElement) - editorElement.Format = DateTimePickerFormat.Custom - editorElement.CustomFormat = "dd/MM/yyyy" - End If - Dim dropDownListEditor = TryCast(e.ActiveEditor, VirtualGridDropDownListEditor) - If dropDownListEditor IsNot Nothing Then - Dim element As RadDropDownListEditorElement = TryCast(dropDownListEditor.EditorElement, RadDropDownListEditorElement) - element.DisplayMember = "Name" - element.ValueMember = "Name" - element.DataSource = GetTable() - End If - Dim textBoxEditor = TryCast(e.ActiveEditor, VirtualGridTextBoxEditor) - If textBoxEditor IsNot Nothing Then - Dim editorElement = TryCast(textBoxEditor.EditorElement, RadTextBoxEditorElement) - editorElement.TextBoxItem.ForeColor = Color.Red - End If -End Sub - -```` - -{{endregion}} - - -# See Also -* [API]({%slug winforms/virtualgrid/cells/api%}) - -* [Changing the Default Editors]({%slug winforms/virtualgrid/cells/changing-default-editor%}) - -* [Data Validation]({%slug winforms/virtualgrid/editing/data-validation%}) - -* [Overview]({%slug winforms/virtualgrid/editing/editors%}) - -* [Events]({%slug winforms/virtualgrid/editing/events%}) - -* [Using Custom Editors]({%slug winforms/virtualgrid/editing/using-custom-editors%}) - +--- +title: Changing Editors Properties +page_title: Changing Editors Properties - RadVirtualGrid +description: This article shows how you can access and change the editors properties. +slug: winforms/virtualgrid/editing/editors-properties +tags: virtualgrid, edidtors, properties +published: True +position: 5 +--- + +# Accessing the Editors and Changing their Properties. + +Since the editors are created each time when the user starts edit operation, they can by accessed in the __CellEditorInitialized__ event. The following example shows how you can access some of the editors and change their properties. + +{{source=..\SamplesCS\VirtualGrid\Editing\EditorsProperties.cs region=AccessProperties}} +{{source=..\SamplesVB\Virtualgrid\Editing\EditorsProperties.vb region=AccessProperties}} +````C# + +void radVirtualGrid1_CellEditorInitialized(object sender, VirtualGridCellEditorInitializedEventArgs e) +{ + var dateTimeEditor = e.ActiveEditor as VirtualGridDateTimeEditor; + if (dateTimeEditor != null) + { + var editorElement = dateTimeEditor.EditorElement as RadDateTimeEditorElement; + editorElement.Format = DateTimePickerFormat.Custom; + editorElement.CustomFormat = "dd/MM/yyyy"; + } + + var dropDownListEditor = e.ActiveEditor as VirtualGridDropDownListEditor; + if (dropDownListEditor != null) + { + RadDropDownListEditorElement element = dropDownListEditor.EditorElement as RadDropDownListEditorElement; + element.DisplayMember = "Name"; + element.ValueMember = "Name"; + + element.DataSource = GetTable(); + } + + var textBoxEditor = e.ActiveEditor as VirtualGridTextBoxEditor; + if (textBoxEditor != null) + { + var editorElement = textBoxEditor.EditorElement as RadTextBoxEditorElement; + editorElement.TextBoxItem.ForeColor = Color.Red; + } +} + +```` +````VB.NET +Private Sub radVirtualGrid1_CellEditorInitialized(ByVal sender As Object, ByVal e As VirtualGridCellEditorInitializedEventArgs) + Dim dateTimeEditor = TryCast(e.ActiveEditor, VirtualGridDateTimeEditor) + If dateTimeEditor IsNot Nothing Then + Dim editorElement = TryCast(dateTimeEditor.EditorElement, RadDateTimeEditorElement) + editorElement.Format = DateTimePickerFormat.Custom + editorElement.CustomFormat = "dd/MM/yyyy" + End If + Dim dropDownListEditor = TryCast(e.ActiveEditor, VirtualGridDropDownListEditor) + If dropDownListEditor IsNot Nothing Then + Dim element As RadDropDownListEditorElement = TryCast(dropDownListEditor.EditorElement, RadDropDownListEditorElement) + element.DisplayMember = "Name" + element.ValueMember = "Name" + element.DataSource = GetTable() + End If + Dim textBoxEditor = TryCast(e.ActiveEditor, VirtualGridTextBoxEditor) + If textBoxEditor IsNot Nothing Then + Dim editorElement = TryCast(textBoxEditor.EditorElement, RadTextBoxEditorElement) + editorElement.TextBoxItem.ForeColor = Color.Red + End If +End Sub + +```` + +{{endregion}} + + +# See Also +* [API]({%slug winforms/virtualgrid/cells/api%}) + +* [Changing the Default Editors]({%slug winforms/virtualgrid/cells/changing-default-editor%}) + +* [Data Validation]({%slug winforms/virtualgrid/editing/data-validation%}) + +* [Overview]({%slug winforms/virtualgrid/editing/editors%}) + +* [Events]({%slug winforms/virtualgrid/editing/events%}) + +* [Using Custom Editors]({%slug winforms/virtualgrid/editing/using-custom-editors%}) + diff --git a/controls/virtualgrid/editing/data-validation.md b/controls/virtualgrid/features/editing/data-validation.md similarity index 97% rename from controls/virtualgrid/editing/data-validation.md rename to controls/virtualgrid/features/editing/data-validation.md index 6a94be6c1..2bb075caa 100644 --- a/controls/virtualgrid/editing/data-validation.md +++ b/controls/virtualgrid/features/editing/data-validation.md @@ -1,84 +1,84 @@ ---- -title: Data Validation -page_title: Data Validation - RadVirtualGrid -description: This article shows how you can validate the data in RadVirtualGrid using the appropriate events. -slug: winforms/virtualgrid/editing/data-validation -tags: virtualgrid, editors -published: True -position: 3 ---- - - -## Data Validation - -__RadVirtualGrid__ provides a convenient way to perform validation before data is committed to the associated data source. You can validate data by handling __CellValidating__ event which is raised by __RadVirtualGrid__ when the current cell changes or when the cell loses input focus (when pressing Enter key). Canceling this event prevents the user from exiting the cell until a valid editor value is entered or the edit process is canceled. The __RowValidating__ event can be used the same way to prevent the user from exiting the current row. - -Here is a list of all validation events: - -* __CellValidating:__ Fires when a cell loses input focus, enabling content validation. - -* __RowValidating:__ Fires when a row is validating. - -* __RowValidated:__ Fires after a row has finished validating. - -The VirtualGridViewInfo.__SetRowErrorText__ method can be used to indicate validation errors. It will show an error indicator at the row header. - -The code snippet below demonstrates simple data validation scenario. It is enabled in the third column to enter only non-empty strings. When the string is empty, the validation fails and the error indicator at the row header is shown: - ->caption Figure 1: Cell validation - -![WinForms RadVirtualGrid Cell validation](images/virtualgrid-editing-data-validation001.png) - - -{{source=..\SamplesCS\VirtualGrid\Editing\EditorsProperties.cs region=CellValidating}} -{{source=..\SamplesVB\VirtualGrid\Editing\EditorsProperties.vb region=CellValidating}} -````C# - -private void radVirtualGrid1_CellValidating(object sender, VirtualGridCellValidatingEventArgs e) -{ - if (e.RowIndex >= 0 && e.ColumnIndex == 2) - { - e.ViewInfo.SetRowErrorText(e.RowIndex, "Validation error!"); - if (string.IsNullOrEmpty((string)e.NewValue) || ((string)e.NewValue).Trim() == string.Empty) - { - e.Cancel = true; - e.ViewInfo.SetRowErrorText(e.RowIndex, "Validation error!"); - } - else - { - e.ViewInfo.ClearRowErrorText(e.RowIndex); - } - } -} - -```` -````VB.NET -Private Sub radVirtualGrid1_CellValidating(sender As Object, e As VirtualGridCellValidatingEventArgs) - If e.RowIndex >= 0 AndAlso e.ColumnIndex = 2 Then - e.ViewInfo.SetRowErrorText(e.RowIndex, "Validation error!") - If String.IsNullOrEmpty(DirectCast(e.NewValue, String)) OrElse DirectCast(e.NewValue, String).Trim() = String.Empty Then - e.Cancel = True - e.ViewInfo.SetRowErrorText(e.RowIndex, "Validation error!") - Else - e.ViewInfo.ClearRowErrorText(e.RowIndex) - End If - End If -End Sub - -```` - -{{endregion}} - -# See Also -* [API]({%slug winforms/virtualgrid/cells/api%}) - -* [Changing the Default Editors]({%slug winforms/virtualgrid/cells/changing-default-editor%}) - -* [Changing Editors Properties]({%slug winforms/virtualgrid/editing/editors-properties%}) - -* [Overview]({%slug winforms/virtualgrid/editing/editors%}) - -* [Events]({%slug winforms/virtualgrid/editing/events%}) - -* [Using Custom Editors]({%slug winforms/virtualgrid/editing/using-custom-editors%}) - +--- +title: Data Validation +page_title: Data Validation - RadVirtualGrid +description: This article shows how you can validate the data in RadVirtualGrid using the appropriate events. +slug: winforms/virtualgrid/editing/data-validation +tags: virtualgrid, editors +published: True +position: 3 +--- + + +## Data Validation + +__RadVirtualGrid__ provides a convenient way to perform validation before data is committed to the associated data source. You can validate data by handling __CellValidating__ event which is raised by __RadVirtualGrid__ when the current cell changes or when the cell loses input focus (when pressing Enter key). Canceling this event prevents the user from exiting the cell until a valid editor value is entered or the edit process is canceled. The __RowValidating__ event can be used the same way to prevent the user from exiting the current row. + +Here is a list of all validation events: + +* __CellValidating:__ Fires when a cell loses input focus, enabling content validation. + +* __RowValidating:__ Fires when a row is validating. + +* __RowValidated:__ Fires after a row has finished validating. + +The VirtualGridViewInfo.__SetRowErrorText__ method can be used to indicate validation errors. It will show an error indicator at the row header. + +The code snippet below demonstrates simple data validation scenario. It is enabled in the third column to enter only non-empty strings. When the string is empty, the validation fails and the error indicator at the row header is shown: + +>caption Figure 1: Cell validation + +![WinForms RadVirtualGrid Cell validation](images/virtualgrid-editing-data-validation001.png) + + +{{source=..\SamplesCS\VirtualGrid\Editing\EditorsProperties.cs region=CellValidating}} +{{source=..\SamplesVB\VirtualGrid\Editing\EditorsProperties.vb region=CellValidating}} +````C# + +private void radVirtualGrid1_CellValidating(object sender, VirtualGridCellValidatingEventArgs e) +{ + if (e.RowIndex >= 0 && e.ColumnIndex == 2) + { + e.ViewInfo.SetRowErrorText(e.RowIndex, "Validation error!"); + if (string.IsNullOrEmpty((string)e.NewValue) || ((string)e.NewValue).Trim() == string.Empty) + { + e.Cancel = true; + e.ViewInfo.SetRowErrorText(e.RowIndex, "Validation error!"); + } + else + { + e.ViewInfo.ClearRowErrorText(e.RowIndex); + } + } +} + +```` +````VB.NET +Private Sub radVirtualGrid1_CellValidating(sender As Object, e As VirtualGridCellValidatingEventArgs) + If e.RowIndex >= 0 AndAlso e.ColumnIndex = 2 Then + e.ViewInfo.SetRowErrorText(e.RowIndex, "Validation error!") + If String.IsNullOrEmpty(DirectCast(e.NewValue, String)) OrElse DirectCast(e.NewValue, String).Trim() = String.Empty Then + e.Cancel = True + e.ViewInfo.SetRowErrorText(e.RowIndex, "Validation error!") + Else + e.ViewInfo.ClearRowErrorText(e.RowIndex) + End If + End If +End Sub + +```` + +{{endregion}} + +# See Also +* [API]({%slug winforms/virtualgrid/cells/api%}) + +* [Changing the Default Editors]({%slug winforms/virtualgrid/cells/changing-default-editor%}) + +* [Changing Editors Properties]({%slug winforms/virtualgrid/editing/editors-properties%}) + +* [Overview]({%slug winforms/virtualgrid/editing/editors%}) + +* [Events]({%slug winforms/virtualgrid/editing/events%}) + +* [Using Custom Editors]({%slug winforms/virtualgrid/editing/using-custom-editors%}) + diff --git a/controls/virtualgrid/editing/editors.md b/controls/virtualgrid/features/editing/editors.md similarity index 98% rename from controls/virtualgrid/editing/editors.md rename to controls/virtualgrid/features/editing/editors.md index 0c4406db9..798182a02 100644 --- a/controls/virtualgrid/editing/editors.md +++ b/controls/virtualgrid/features/editing/editors.md @@ -1,84 +1,84 @@ ---- -title: Overview -page_title: Editors - RadVirtualGrid -description: This article describes the editing functiality supported by RadVirtualGrid. -slug: winforms/virtualgrid/editing/editors -tags: virtualgrid, editors -published: True -position: 0 ---- - - -## Editors - -__RadVirtualGrid__ allows the users to edit the cells values. Usually this process starts by typing in the cell or by pressing F2. By default the editor type is determined according to the data value type. When in edit mode, the user can change the cell value and press __Enter__ to commit the change or __Esc__ to revert to the original value. Clicking outside the edited cell also commits the change. - ->caption Figure 1: Row editing indication - -![WinForms RadVirtualGrid Row editing indication](images/virtualgrid-editing-editors001.png) - - ->note RadVirtualGrid can be made read-only by setting the __AllowEdit__ property to *false*. In this case the editors would not appear. -> - -Currently, __RadVirtualGrid__ supports the following editors out of the box: - -|Editor type|Description|Image| -|----|----|----| -|__VirtualGridCalculatorEditor__|Represents a calculator editor|![WinForms RadVirtualGrid VirtualGridCalculatorEditor](images/virtualgrid-editing-using-custom-editors001.png)| -|__VirtualGridDateTimeEditor__|Represents a date time editor|![WinForms RadVirtualGrid VirtualGridDateTimeEditor](images/virtualgrid-editing-using-custom-editors002.png)| -|__VirtualGridDropDownListEditor__|Represents a DropDownList editor|![WinForms RadVirtualGrid VirtualGridDropDownListEditor](images/virtualgrid-editing-using-custom-editors003.png)| -|__VirtualGridMaskedEditBoxEditor__|Represents a masked editbox editor|![WinForms RadVirtualGrid VirtualGridMaskedEditBoxEditor](images/virtualgrid-editing-using-custom-editors004.png)| -|__VirtualGridSpinEditor__|Represents a spin editor|![WinForms RadVirtualGrid VirtualGridSpinEditor](images/virtualgrid-editing-using-custom-editors005.png)| -|__VirtualGridTextBoxControlEditor__|Represents a textbox control editor|![WinForms RadVirtualGrid VirtualGridTextBoxControlEditor](images/virtualgrid-editing-using-custom-editors006.png)| -|__VirtualGridTextBoxEditor__|Represents a textbox editor|![WinForms RadVirtualGrid VirtualGridTextBoxEditor](images/virtualgrid-editing-using-custom-editors006.png)| -|__VirtualGridTimePickerEditor__|Represents a time picker editor|![WinForms RadVirtualGrid VirtualGridTimePickerEditor](images/virtualgrid-editing-using-custom-editors007.png)| -|__VirtualGridBrowseEditor__|Represents a browse editor|![WinForms RadVirtualGrid VirtualGridBrowseEditor](images/virtualgrid-editing-using-custom-editors008.png)| -|__VirtualGridColorPickerEditor__|Represents a color editor|![WinForms RadVirtualGrid VirtualGridColorPickerEditor](images/virtualgrid-editing-using-custom-editors009.png)| - - -__RadVirtualGrid__ exposes an API for defining the data types of its columns. If the data type is explicitly set it wil determine the cell editors used in this column. Otherwise, the editor is determined by the cell value. The API works by column index. - -#### Defining a Columns`s Data Type - -{{source=..\SamplesCS\VirtualGrid\Editing\EditorsProperties.cs region=DefineColumnDataType}} -{{source=..\SamplesVB\Virtualgrid\Editing\EditorsProperties.vb region=DefineColumnDataType}} -````C# -this.radVirtualGrid1.MasterViewInfo.ColumnDataTypes[0] = typeof(int); - -```` -````VB.NET -Me.radVirtualGrid1.MasterViewInfo.ColumnDataTypes(0) = GetType(Integer) - -```` - -{{endregion}} - -#### Reading a Columns`s Data Type - -{{source=..\SamplesCS\VirtualGrid\Editing\EditorsProperties.cs region=ReadColumnDataType}} -{{source=..\SamplesVB\Virtualgrid\Editing\EditorsProperties.vb region=ReadColumnDataType}} -````C# -Type dataType = this.radVirtualGrid1.MasterViewInfo.GetColumnDataType(1); - -```` -````VB.NET -Dim dataType As Type = Me.radVirtualGrid1.MasterViewInfo.GetColumnDataType(1) - -```` - -{{endregion}} - -# See Also -* [API]({%slug winforms/virtualgrid/cells/api%}) - -* [Changing the Default Editors]({%slug winforms/virtualgrid/cells/changing-default-editor%}) - -* [Changing Editors Properties]({%slug winforms/virtualgrid/editing/editors-properties%}) - -* [Data Validation]({%slug winforms/virtualgrid/editing/data-validation%}) - -* [Events]({%slug winforms/virtualgrid/editing/events%}) - -* [Using Custom Editors]({%slug winforms/virtualgrid/editing/using-custom-editors%}) - +--- +title: Overview +page_title: Editors - RadVirtualGrid +description: This article describes the editing functiality supported by RadVirtualGrid. +slug: winforms/virtualgrid/editing/editors +tags: virtualgrid, editors +published: True +position: 0 +--- + + +## Editors + +__RadVirtualGrid__ allows the users to edit the cells values. Usually this process starts by typing in the cell or by pressing F2. By default the editor type is determined according to the data value type. When in edit mode, the user can change the cell value and press __Enter__ to commit the change or __Esc__ to revert to the original value. Clicking outside the edited cell also commits the change. + +>caption Figure 1: Row editing indication + +![WinForms RadVirtualGrid Row editing indication](images/virtualgrid-editing-editors001.png) + + +>note RadVirtualGrid can be made read-only by setting the __AllowEdit__ property to *false*. In this case the editors would not appear. +> + +Currently, __RadVirtualGrid__ supports the following editors out of the box: + +|Editor type|Description|Image| +|----|----|----| +|__VirtualGridCalculatorEditor__|Represents a calculator editor|![WinForms RadVirtualGrid VirtualGridCalculatorEditor](images/virtualgrid-editing-using-custom-editors001.png)| +|__VirtualGridDateTimeEditor__|Represents a date time editor|![WinForms RadVirtualGrid VirtualGridDateTimeEditor](images/virtualgrid-editing-using-custom-editors002.png)| +|__VirtualGridDropDownListEditor__|Represents a DropDownList editor|![WinForms RadVirtualGrid VirtualGridDropDownListEditor](images/virtualgrid-editing-using-custom-editors003.png)| +|__VirtualGridMaskedEditBoxEditor__|Represents a masked editbox editor|![WinForms RadVirtualGrid VirtualGridMaskedEditBoxEditor](images/virtualgrid-editing-using-custom-editors004.png)| +|__VirtualGridSpinEditor__|Represents a spin editor|![WinForms RadVirtualGrid VirtualGridSpinEditor](images/virtualgrid-editing-using-custom-editors005.png)| +|__VirtualGridTextBoxControlEditor__|Represents a textbox control editor|![WinForms RadVirtualGrid VirtualGridTextBoxControlEditor](images/virtualgrid-editing-using-custom-editors006.png)| +|__VirtualGridTextBoxEditor__|Represents a textbox editor|![WinForms RadVirtualGrid VirtualGridTextBoxEditor](images/virtualgrid-editing-using-custom-editors006.png)| +|__VirtualGridTimePickerEditor__|Represents a time picker editor|![WinForms RadVirtualGrid VirtualGridTimePickerEditor](images/virtualgrid-editing-using-custom-editors007.png)| +|__VirtualGridBrowseEditor__|Represents a browse editor|![WinForms RadVirtualGrid VirtualGridBrowseEditor](images/virtualgrid-editing-using-custom-editors008.png)| +|__VirtualGridColorPickerEditor__|Represents a color editor|![WinForms RadVirtualGrid VirtualGridColorPickerEditor](images/virtualgrid-editing-using-custom-editors009.png)| + + +__RadVirtualGrid__ exposes an API for defining the data types of its columns. If the data type is explicitly set it wil determine the cell editors used in this column. Otherwise, the editor is determined by the cell value. The API works by column index. + +#### Defining a Columns`s Data Type + +{{source=..\SamplesCS\VirtualGrid\Editing\EditorsProperties.cs region=DefineColumnDataType}} +{{source=..\SamplesVB\Virtualgrid\Editing\EditorsProperties.vb region=DefineColumnDataType}} +````C# +this.radVirtualGrid1.MasterViewInfo.ColumnDataTypes[0] = typeof(int); + +```` +````VB.NET +Me.radVirtualGrid1.MasterViewInfo.ColumnDataTypes(0) = GetType(Integer) + +```` + +{{endregion}} + +#### Reading a Columns`s Data Type + +{{source=..\SamplesCS\VirtualGrid\Editing\EditorsProperties.cs region=ReadColumnDataType}} +{{source=..\SamplesVB\Virtualgrid\Editing\EditorsProperties.vb region=ReadColumnDataType}} +````C# +Type dataType = this.radVirtualGrid1.MasterViewInfo.GetColumnDataType(1); + +```` +````VB.NET +Dim dataType As Type = Me.radVirtualGrid1.MasterViewInfo.GetColumnDataType(1) + +```` + +{{endregion}} + +# See Also +* [API]({%slug winforms/virtualgrid/cells/api%}) + +* [Changing the Default Editors]({%slug winforms/virtualgrid/cells/changing-default-editor%}) + +* [Changing Editors Properties]({%slug winforms/virtualgrid/editing/editors-properties%}) + +* [Data Validation]({%slug winforms/virtualgrid/editing/data-validation%}) + +* [Events]({%slug winforms/virtualgrid/editing/events%}) + +* [Using Custom Editors]({%slug winforms/virtualgrid/editing/using-custom-editors%}) + diff --git a/controls/virtualgrid/editing/events.md b/controls/virtualgrid/features/editing/events.md similarity index 100% rename from controls/virtualgrid/editing/events.md rename to controls/virtualgrid/features/editing/events.md diff --git a/controls/virtualgrid/editing/images/virtualgrid-editing-data-validation001.png b/controls/virtualgrid/features/editing/images/virtualgrid-editing-data-validation001.png similarity index 100% rename from controls/virtualgrid/editing/images/virtualgrid-editing-data-validation001.png rename to controls/virtualgrid/features/editing/images/virtualgrid-editing-data-validation001.png diff --git a/controls/virtualgrid/editing/images/virtualgrid-editing-editors001.png b/controls/virtualgrid/features/editing/images/virtualgrid-editing-editors001.png similarity index 100% rename from controls/virtualgrid/editing/images/virtualgrid-editing-editors001.png rename to controls/virtualgrid/features/editing/images/virtualgrid-editing-editors001.png diff --git a/controls/virtualgrid/editing/images/virtualgrid-editing-using-custom-editors001.png b/controls/virtualgrid/features/editing/images/virtualgrid-editing-using-custom-editors001.png similarity index 100% rename from controls/virtualgrid/editing/images/virtualgrid-editing-using-custom-editors001.png rename to controls/virtualgrid/features/editing/images/virtualgrid-editing-using-custom-editors001.png diff --git a/controls/virtualgrid/editing/images/virtualgrid-editing-using-custom-editors002.png b/controls/virtualgrid/features/editing/images/virtualgrid-editing-using-custom-editors002.png similarity index 100% rename from controls/virtualgrid/editing/images/virtualgrid-editing-using-custom-editors002.png rename to controls/virtualgrid/features/editing/images/virtualgrid-editing-using-custom-editors002.png diff --git a/controls/virtualgrid/editing/images/virtualgrid-editing-using-custom-editors003.png b/controls/virtualgrid/features/editing/images/virtualgrid-editing-using-custom-editors003.png similarity index 100% rename from controls/virtualgrid/editing/images/virtualgrid-editing-using-custom-editors003.png rename to controls/virtualgrid/features/editing/images/virtualgrid-editing-using-custom-editors003.png diff --git a/controls/virtualgrid/editing/images/virtualgrid-editing-using-custom-editors004.png b/controls/virtualgrid/features/editing/images/virtualgrid-editing-using-custom-editors004.png similarity index 100% rename from controls/virtualgrid/editing/images/virtualgrid-editing-using-custom-editors004.png rename to controls/virtualgrid/features/editing/images/virtualgrid-editing-using-custom-editors004.png diff --git a/controls/virtualgrid/editing/images/virtualgrid-editing-using-custom-editors005.png b/controls/virtualgrid/features/editing/images/virtualgrid-editing-using-custom-editors005.png similarity index 100% rename from controls/virtualgrid/editing/images/virtualgrid-editing-using-custom-editors005.png rename to controls/virtualgrid/features/editing/images/virtualgrid-editing-using-custom-editors005.png diff --git a/controls/virtualgrid/editing/images/virtualgrid-editing-using-custom-editors006.png b/controls/virtualgrid/features/editing/images/virtualgrid-editing-using-custom-editors006.png similarity index 100% rename from controls/virtualgrid/editing/images/virtualgrid-editing-using-custom-editors006.png rename to controls/virtualgrid/features/editing/images/virtualgrid-editing-using-custom-editors006.png diff --git a/controls/virtualgrid/editing/images/virtualgrid-editing-using-custom-editors007.png b/controls/virtualgrid/features/editing/images/virtualgrid-editing-using-custom-editors007.png similarity index 100% rename from controls/virtualgrid/editing/images/virtualgrid-editing-using-custom-editors007.png rename to controls/virtualgrid/features/editing/images/virtualgrid-editing-using-custom-editors007.png diff --git a/controls/virtualgrid/editing/images/virtualgrid-editing-using-custom-editors008.png b/controls/virtualgrid/features/editing/images/virtualgrid-editing-using-custom-editors008.png similarity index 100% rename from controls/virtualgrid/editing/images/virtualgrid-editing-using-custom-editors008.png rename to controls/virtualgrid/features/editing/images/virtualgrid-editing-using-custom-editors008.png diff --git a/controls/virtualgrid/editing/images/virtualgrid-editing-using-custom-editors009.png b/controls/virtualgrid/features/editing/images/virtualgrid-editing-using-custom-editors009.png similarity index 100% rename from controls/virtualgrid/editing/images/virtualgrid-editing-using-custom-editors009.png rename to controls/virtualgrid/features/editing/images/virtualgrid-editing-using-custom-editors009.png diff --git a/controls/virtualgrid/editing/images/virtualgrid-editing-using-custom-editors010.gif b/controls/virtualgrid/features/editing/images/virtualgrid-editing-using-custom-editors010.gif similarity index 100% rename from controls/virtualgrid/editing/images/virtualgrid-editing-using-custom-editors010.gif rename to controls/virtualgrid/features/editing/images/virtualgrid-editing-using-custom-editors010.gif diff --git a/controls/virtualgrid/editing/using-custom-editors.md b/controls/virtualgrid/features/editing/using-custom-editors.md similarity index 97% rename from controls/virtualgrid/editing/using-custom-editors.md rename to controls/virtualgrid/features/editing/using-custom-editors.md index 72afbe7bc..0a7b54ade 100644 --- a/controls/virtualgrid/editing/using-custom-editors.md +++ b/controls/virtualgrid/features/editing/using-custom-editors.md @@ -1,208 +1,208 @@ ---- -title: Using Custom Editors -page_title: Using Custom Editors - RadVirtualGrid -description: RadVirtualGrid allows you create custom editors and replace the default ones. -slug: winforms/virtualgrid/editing/using-custom-editors -tags: virtualgrid, editors, properties -published: True -position: 6 ---- - -# Using Custom Editors - -Most of the grid editors inherit from __BaseVirtualGridEditor__. The following steps and code snippet demonstrate how to replace the standard editor with a custom one containing a __RadMultiColumnComboBoxElement__: - -1. Create a class that inherits __BaseVirtualGridEditor__. -2. Override its __CreateEditorElement__ method and return a new instance of __RadMultiColumnComboBoxElement__. -3. Introduce __DataSource__, __ValueMember__, __DisplayMember__ properties of the custom editor in order to data bind the editor element. -4. Override the __Value__ property and manage the editor's value considering the RadMultiColumnComboBoxElement.__SelectedValue__ property. -5. Subscribe to the RadVirtualGrid.__EditorRequired__ event and replace the default editor for the desired column with your custom one. - -![WinForms RadVirtualGrid Using Custom Editors](images/virtualgrid-editing-using-custom-editors010.gif) - -#### Creating MultiColumnComboBoxVirtualGridEditor - -{{source=..\SamplesCS\VirtualGrid\Editing\VirtualGridCustomEditor.cs region=MyEditor}} -{{source=..\SamplesVB\Virtualgrid\Editing\VirtualGridCustomEditor.vb region=MyEditor}} -````C# -public class MultiColumnComboBoxVirtualGridEditor : BaseVirtualGridEditor -{ - protected override Telerik.WinControls.RadElement CreateEditorElement() - { - return new RadMultiColumnComboBoxElement(); - } - public override object Value - { - get - { - RadMultiColumnComboBoxElement editor = this.EditorElement as RadMultiColumnComboBoxElement; - if (editor.SelectedValue != null) - { - if (!string.IsNullOrEmpty(editor.ValueMember)) - { - return editor.SelectedValue; - } - } - return -1; - } - set - { - RadMultiColumnComboBoxElement editor = this.EditorElement as RadMultiColumnComboBoxElement; - if (value == null) - { - editor.SelectedIndex = -1; - } - else if (editor.ValueMember != null) - { - editor.SelectedValue = value; - } - } - } - public object DataSource - { - get - { - RadMultiColumnComboBoxElement editorElement = this.EditorElement as RadMultiColumnComboBoxElement; - return editorElement.DataSource; - } - set - { - RadMultiColumnComboBoxElement editorElement = this.EditorElement as RadMultiColumnComboBoxElement; - if (editorElement.BindingContext == null) - { - editorElement.BindingContext = new BindingContext(); - } - editorElement.DataSource = value; - } - } - public string ValueMember - { - get - { - RadMultiColumnComboBoxElement editorElement = this.EditorElement as RadMultiColumnComboBoxElement; - return editorElement.ValueMember; - } - set - { - RadMultiColumnComboBoxElement editorElement = this.EditorElement as RadMultiColumnComboBoxElement; - editorElement.ValueMember = value; - } - } - public string DisplayMember - { - get - { - RadMultiColumnComboBoxElement editorElement = this.EditorElement as RadMultiColumnComboBoxElement; - return editorElement.DisplayMember; - } - set - { - RadMultiColumnComboBoxElement editorElement = this.EditorElement as RadMultiColumnComboBoxElement; - editorElement.DisplayMember = value; - } - } -} -private void radVirtualGrid1_EditorRequired(object sender, Telerik.WinControls.UI.VirtualGridEditorRequiredEventArgs e) -{ - if (e.ColumnIndex == 2) - { - MultiColumnComboBoxVirtualGridEditor editor = new MultiColumnComboBoxVirtualGridEditor(); - DataTable dt = new DataTable(); - dt.Columns.Add("Id", typeof(int)); - dt.Columns.Add("Name", typeof(string)); - dt.Rows.Add(-1, ""); - for (int i = 0; i <= 9; i++) - { - dt.Rows.Add(i, "Item" + i); - } - editor.DataSource = dt; - editor.ValueMember = "Id"; - editor.DisplayMember = "Name"; - e.Editor = editor; - } -} - -```` -````VB.NET -Public Class MultiColumnComboBoxVirtualGridEditor - Inherits BaseVirtualGridEditor - Protected Overrides Function CreateEditorElement() As Telerik.WinControls.RadElement - Return New RadMultiColumnComboBoxElement() - End Function - Public Overrides Property Value() As Object - Get - Dim editor As RadMultiColumnComboBoxElement = TryCast(Me.EditorElement, RadMultiColumnComboBoxElement) - If editor.SelectedValue IsNot Nothing Then - If Not String.IsNullOrEmpty(editor.ValueMember) Then - Return editor.SelectedValue - End If - End If - Return -1 - End Get - Set(value As Object) - Dim editor As RadMultiColumnComboBoxElement = TryCast(Me.EditorElement, RadMultiColumnComboBoxElement) - If value Is Nothing Then - editor.SelectedIndex = -1 - ElseIf editor.ValueMember IsNot Nothing Then - editor.SelectedValue = value - End If - End Set - End Property - Public Property DataSource() As Object - Get - Dim editorElement As RadMultiColumnComboBoxElement = TryCast(Me.EditorElement, RadMultiColumnComboBoxElement) - Return editorElement.DataSource - End Get - Set(value As Object) - Dim editorElement As RadMultiColumnComboBoxElement = TryCast(Me.EditorElement, RadMultiColumnComboBoxElement) - If editorElement.BindingContext Is Nothing Then - editorElement.BindingContext = New BindingContext() - End If - editorElement.DataSource = value - End Set - End Property - Public Property ValueMember() As String - Get - Dim editorElement As RadMultiColumnComboBoxElement = TryCast(Me.EditorElement, RadMultiColumnComboBoxElement) - Return editorElement.ValueMember - End Get - Set(value As String) - Dim editorElement As RadMultiColumnComboBoxElement = TryCast(Me.EditorElement, RadMultiColumnComboBoxElement) - editorElement.ValueMember = value - End Set - End Property - Public Property DisplayMember() As String - Get - Dim editorElement As RadMultiColumnComboBoxElement = TryCast(Me.EditorElement, RadMultiColumnComboBoxElement) - Return editorElement.DisplayMember - End Get - Set(value As String) - Dim editorElement As RadMultiColumnComboBoxElement = TryCast(Me.EditorElement, RadMultiColumnComboBoxElement) - editorElement.DisplayMember = value - End Set - End Property -End Class -Private Sub radVirtualGrid1_EditorRequired(sender As Object, e As Telerik.WinControls.UI.VirtualGridEditorRequiredEventArgs) - If e.ColumnIndex = 2 Then - Dim editor As New MultiColumnComboBoxVirtualGridEditor() - Dim dt As New DataTable() - dt.Columns.Add("Id", GetType(Integer)) - dt.Columns.Add("Name", GetType(String)) - dt.Rows.Add(-1, "") - For i As Integer = 0 To 9 - dt.Rows.Add(i, "Item" & i) - Next - editor.DataSource = dt - editor.ValueMember = "Id" - editor.DisplayMember = "Name" - e.Editor = editor - End If -End Sub - -```` - -{{endregion}} - -## See Also - -[Virtual grid editors]({%slug winforms/virtualgrid/editing/editors%}) +--- +title: Using Custom Editors +page_title: Using Custom Editors - RadVirtualGrid +description: RadVirtualGrid allows you create custom editors and replace the default ones. +slug: winforms/virtualgrid/editing/using-custom-editors +tags: virtualgrid, editors, properties +published: True +position: 6 +--- + +# Using Custom Editors + +Most of the grid editors inherit from __BaseVirtualGridEditor__. The following steps and code snippet demonstrate how to replace the standard editor with a custom one containing a __RadMultiColumnComboBoxElement__: + +1. Create a class that inherits __BaseVirtualGridEditor__. +2. Override its __CreateEditorElement__ method and return a new instance of __RadMultiColumnComboBoxElement__. +3. Introduce __DataSource__, __ValueMember__, __DisplayMember__ properties of the custom editor in order to data bind the editor element. +4. Override the __Value__ property and manage the editor's value considering the RadMultiColumnComboBoxElement.__SelectedValue__ property. +5. Subscribe to the RadVirtualGrid.__EditorRequired__ event and replace the default editor for the desired column with your custom one. + +![WinForms RadVirtualGrid Using Custom Editors](images/virtualgrid-editing-using-custom-editors010.gif) + +#### Creating MultiColumnComboBoxVirtualGridEditor + +{{source=..\SamplesCS\VirtualGrid\Editing\VirtualGridCustomEditor.cs region=MyEditor}} +{{source=..\SamplesVB\Virtualgrid\Editing\VirtualGridCustomEditor.vb region=MyEditor}} +````C# +public class MultiColumnComboBoxVirtualGridEditor : BaseVirtualGridEditor +{ + protected override Telerik.WinControls.RadElement CreateEditorElement() + { + return new RadMultiColumnComboBoxElement(); + } + public override object Value + { + get + { + RadMultiColumnComboBoxElement editor = this.EditorElement as RadMultiColumnComboBoxElement; + if (editor.SelectedValue != null) + { + if (!string.IsNullOrEmpty(editor.ValueMember)) + { + return editor.SelectedValue; + } + } + return -1; + } + set + { + RadMultiColumnComboBoxElement editor = this.EditorElement as RadMultiColumnComboBoxElement; + if (value == null) + { + editor.SelectedIndex = -1; + } + else if (editor.ValueMember != null) + { + editor.SelectedValue = value; + } + } + } + public object DataSource + { + get + { + RadMultiColumnComboBoxElement editorElement = this.EditorElement as RadMultiColumnComboBoxElement; + return editorElement.DataSource; + } + set + { + RadMultiColumnComboBoxElement editorElement = this.EditorElement as RadMultiColumnComboBoxElement; + if (editorElement.BindingContext == null) + { + editorElement.BindingContext = new BindingContext(); + } + editorElement.DataSource = value; + } + } + public string ValueMember + { + get + { + RadMultiColumnComboBoxElement editorElement = this.EditorElement as RadMultiColumnComboBoxElement; + return editorElement.ValueMember; + } + set + { + RadMultiColumnComboBoxElement editorElement = this.EditorElement as RadMultiColumnComboBoxElement; + editorElement.ValueMember = value; + } + } + public string DisplayMember + { + get + { + RadMultiColumnComboBoxElement editorElement = this.EditorElement as RadMultiColumnComboBoxElement; + return editorElement.DisplayMember; + } + set + { + RadMultiColumnComboBoxElement editorElement = this.EditorElement as RadMultiColumnComboBoxElement; + editorElement.DisplayMember = value; + } + } +} +private void radVirtualGrid1_EditorRequired(object sender, Telerik.WinControls.UI.VirtualGridEditorRequiredEventArgs e) +{ + if (e.ColumnIndex == 2) + { + MultiColumnComboBoxVirtualGridEditor editor = new MultiColumnComboBoxVirtualGridEditor(); + DataTable dt = new DataTable(); + dt.Columns.Add("Id", typeof(int)); + dt.Columns.Add("Name", typeof(string)); + dt.Rows.Add(-1, ""); + for (int i = 0; i <= 9; i++) + { + dt.Rows.Add(i, "Item" + i); + } + editor.DataSource = dt; + editor.ValueMember = "Id"; + editor.DisplayMember = "Name"; + e.Editor = editor; + } +} + +```` +````VB.NET +Public Class MultiColumnComboBoxVirtualGridEditor + Inherits BaseVirtualGridEditor + Protected Overrides Function CreateEditorElement() As Telerik.WinControls.RadElement + Return New RadMultiColumnComboBoxElement() + End Function + Public Overrides Property Value() As Object + Get + Dim editor As RadMultiColumnComboBoxElement = TryCast(Me.EditorElement, RadMultiColumnComboBoxElement) + If editor.SelectedValue IsNot Nothing Then + If Not String.IsNullOrEmpty(editor.ValueMember) Then + Return editor.SelectedValue + End If + End If + Return -1 + End Get + Set(value As Object) + Dim editor As RadMultiColumnComboBoxElement = TryCast(Me.EditorElement, RadMultiColumnComboBoxElement) + If value Is Nothing Then + editor.SelectedIndex = -1 + ElseIf editor.ValueMember IsNot Nothing Then + editor.SelectedValue = value + End If + End Set + End Property + Public Property DataSource() As Object + Get + Dim editorElement As RadMultiColumnComboBoxElement = TryCast(Me.EditorElement, RadMultiColumnComboBoxElement) + Return editorElement.DataSource + End Get + Set(value As Object) + Dim editorElement As RadMultiColumnComboBoxElement = TryCast(Me.EditorElement, RadMultiColumnComboBoxElement) + If editorElement.BindingContext Is Nothing Then + editorElement.BindingContext = New BindingContext() + End If + editorElement.DataSource = value + End Set + End Property + Public Property ValueMember() As String + Get + Dim editorElement As RadMultiColumnComboBoxElement = TryCast(Me.EditorElement, RadMultiColumnComboBoxElement) + Return editorElement.ValueMember + End Get + Set(value As String) + Dim editorElement As RadMultiColumnComboBoxElement = TryCast(Me.EditorElement, RadMultiColumnComboBoxElement) + editorElement.ValueMember = value + End Set + End Property + Public Property DisplayMember() As String + Get + Dim editorElement As RadMultiColumnComboBoxElement = TryCast(Me.EditorElement, RadMultiColumnComboBoxElement) + Return editorElement.DisplayMember + End Get + Set(value As String) + Dim editorElement As RadMultiColumnComboBoxElement = TryCast(Me.EditorElement, RadMultiColumnComboBoxElement) + editorElement.DisplayMember = value + End Set + End Property +End Class +Private Sub radVirtualGrid1_EditorRequired(sender As Object, e As Telerik.WinControls.UI.VirtualGridEditorRequiredEventArgs) + If e.ColumnIndex = 2 Then + Dim editor As New MultiColumnComboBoxVirtualGridEditor() + Dim dt As New DataTable() + dt.Columns.Add("Id", GetType(Integer)) + dt.Columns.Add("Name", GetType(String)) + dt.Rows.Add(-1, "") + For i As Integer = 0 To 9 + dt.Rows.Add(i, "Item" & i) + Next + editor.DataSource = dt + editor.ValueMember = "Id" + editor.DisplayMember = "Name" + e.Editor = editor + End If +End Sub + +```` + +{{endregion}} + +## See Also + +[Virtual grid editors]({%slug winforms/virtualgrid/editing/editors%}) diff --git a/controls/virtualgrid/filtering/filtering.md b/controls/virtualgrid/features/filtering/filtering.md similarity index 97% rename from controls/virtualgrid/filtering/filtering.md rename to controls/virtualgrid/features/filtering/filtering.md index 38abc91ed..ab37e0560 100644 --- a/controls/virtualgrid/filtering/filtering.md +++ b/controls/virtualgrid/features/filtering/filtering.md @@ -1,314 +1,314 @@ ---- -title: Filtering Overview -page_title: Filtering Overview - RadVirtualGrid -description: This article shows how you can use the built in filtering functionality. -slug: winforms/virtualgrid/filtering/filtering -tags: virtualgrid, filtering -published: True -position: 0 ---- - -# Filtering Overview - -__RadVirtualGrid__ supports data filtering. Set the RadVirtualGrid.__AllowFiltering__ property to *true*. - ->caption Figure 1: Filtering is enabled. - -![WinForms RadVirtualGrid Filtering is enabled](images/virtualgrid-filtering001.png) - -#### Enabling the user filtering - -{{source=..\SamplesCS\VirtualGrid\Filtering\VirtualGridFiltering.cs region=AllowFiltering}} -{{source=..\SamplesVB\VirtualGrid\Filtering\VirtualGridFiltering.vb region=AllowFiltering}} - -````C# - -this.radVirtualGrid1.AllowFiltering = true; - -```` -````VB.NET -Me.RadVirtualGrid1.AllowFiltering = True - -```` - -{{endregion}} - -When filtering is enabled, each column displays a filter button beneath the corresponding header which controls the filter operator: - -![WinForms RadVirtualGrid Filter Button](images/virtualgrid-filtering002.png) - -When clicking over the filter cell, the filter text box is activated: - -![WinForms RadVirtualGrid Filter TextBox](images/virtualgrid-filtering003.png) - -It is necessary to handle the __FilterChanged__ event which is fired once the __FilterDescriptors__ collection is changed. In the event handler you should extract the filtered data from the external data source. - ->note Please refer to the [Populating with data](https://docs.telerik.com/devtools/winforms/controls/virtualgrid/working-with-data/virtualgrid-populating-with-data) help article which demonstrates how to extract the necessary data and fill the virtual grid with data. - -The following example demonstrates how to achieve filtering functionality in __RadVirtualGrid__ filled with Northwind.Customers table: - -{{source=..\SamplesCS\VirtualGrid\Filtering\VirtualGridFiltering.cs region=Filtering}} -{{source=..\SamplesVB\VirtualGrid\Filtering\VirtualGridFiltering.vb region=Filtering}} - -````C# - -private void radVirtualGrid1_FilterChanged(object sender, VirtualGridEventArgs e) -{ - SelectData(); -} - -private readonly string selectCommand = "SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, PostalCode FROM Customers"; -private string[] columnNames = new string[] { "CompanyName", "ContactName", "ContactTitle", "Address", "PostalCode" }; -List data = new List(); - -private void SelectData() -{ - string filterExpression = this.radVirtualGrid1.FilterDescriptors.Expression; - - if (!string.IsNullOrEmpty(filterExpression)) - { - filterExpression = "WHERE " + filterExpression; - } - - string commandString = String.Format("{0} {1}", selectCommand, filterExpression); - using (System.Data.OleDb.OleDbCommand command = new System.Data.OleDb.OleDbCommand(commandString)) - { - command.Connection = new System.Data.OleDb.OleDbConnection(Settings.Default.NwindConnectionString); - command.Connection.Open(); - IDataReader reader = command.ExecuteReader(); - data.Clear(); - - while (reader.Read()) - { - Customer customer = new Customer( - Convert.ToString(reader[0]), - Convert.ToString(reader[1]), - Convert.ToString(reader[2]), - Convert.ToString(reader[3]), - Convert.ToString(reader[4]), - Convert.ToString(reader[5])); - data.Add(customer); - } - - command.Connection.Close(); - } - - this.radVirtualGrid1.RowCount = data.Count; -} - -private void radVirtualGrid1_CellValueNeeded(object sender, Telerik.WinControls.UI.VirtualGridCellValueNeededEventArgs e) -{ - if (e.ColumnIndex < 0) - return; - if (e.RowIndex == RadVirtualGrid.HeaderRowIndex) - { - e.Value = columnNames[e.ColumnIndex]; - } - - if (e.RowIndex < 0) - { - e.FieldName = columnNames[e.ColumnIndex]; - } - - if (e.RowIndex >= 0 && e.RowIndex < data.Count) - { - e.Value = data[e.RowIndex][e.ColumnIndex]; - } -} - -private void VirtualGridFiltering_Load(object sender, EventArgs e) -{ - this.radVirtualGrid1.ColumnCount = columnNames.Length; - this.radVirtualGrid1.CellValueNeeded += radVirtualGrid1_CellValueNeeded; - this.radVirtualGrid1.FilterChanged += radVirtualGrid1_FilterChanged; - SelectData(); -} - -public class Customer -{ - public string CustomerId { get; set; } - - public string CompanyName { get; set; } - - public string ContactName { get; set; } - - public string ContactTitle { get; set; } - - public string Address { get; set; } - - public string PostalCode { get; set; } - - public Customer(string customerId, string companyName, string contactName, string contactTitle, string address, string postalCode) - { - this.CustomerId = customerId; - this.CompanyName = companyName; - this.ContactName = contactName; - this.ContactTitle = contactTitle; - this.Address = address; - this.PostalCode = postalCode; - } - - public string this[int i] - { - get - { - switch (i) - { - case 0: - return CompanyName; - case 1: - return ContactName; - case 2: - return ContactTitle; - case 3: - return Address; - case 4: - return PostalCode; - default: - return String.Empty; - } - } - } -} - -```` -````VB.NET -Private Sub radVirtualGrid1_FilterChanged(sender As Object, e As VirtualGridEventArgs) - SelectData() -End Sub -Private ReadOnly selectCommand As String = "SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, PostalCode FROM Customers" -Private columnNames As String() = New String() {"CompanyName", "ContactName", "ContactTitle", "Address", "PostalCode"} -Private data As New List(Of Customer)() -Private Sub SelectData() - Dim filterExpression As String = Me.RadVirtualGrid1.FilterDescriptors.Expression - If Not String.IsNullOrEmpty(filterExpression) Then - filterExpression = Convert.ToString("WHERE ") & filterExpression - End If - Dim commandString As String = [String].Format("{0} {1}", selectCommand, filterExpression) - Using command As New System.Data.OleDb.OleDbCommand(commandString) - command.Connection = New System.Data.OleDb.OleDbConnection(My.Settings.NwindConnectionString) - command.Connection.Open() - Dim reader As IDataReader = command.ExecuteReader() - data.Clear() - While reader.Read() - Dim customer As New Customer(Convert.ToString(reader(0)), Convert.ToString(reader(1)), Convert.ToString(reader(2)), _ - Convert.ToString(reader(3)), Convert.ToString(reader(4)), Convert.ToString(reader(5))) - data.Add(customer) - End While - command.Connection.Close() - End Using - Me.RadVirtualGrid1.RowCount = data.Count -End Sub -Private Sub radVirtualGrid1_CellValueNeeded(sender As Object, e As Telerik.WinControls.UI.VirtualGridCellValueNeededEventArgs) - If e.ColumnIndex < 0 Then - Return - End If - If e.RowIndex = RadVirtualGrid.HeaderRowIndex Then - e.Value = columnNames(e.ColumnIndex) - End If - If e.RowIndex < 0 Then - e.FieldName = columnNames(e.ColumnIndex) - End If - If e.RowIndex >= 0 AndAlso e.RowIndex < data.Count Then - e.Value = data(e.RowIndex)(e.ColumnIndex) - End If -End Sub -Private Sub VirtualGridFiltering_Load(sender As Object, e As EventArgs) Handles Me.Load - Me.RadVirtualGrid1.ColumnCount = columnNames.Length - AddHandler Me.RadVirtualGrid1.CellValueNeeded, AddressOf radVirtualGrid1_CellValueNeeded - AddHandler Me.RadVirtualGrid1.FilterChanged, AddressOf radVirtualGrid1_FilterChanged - SelectData() -End Sub -Public Class Customer - Public Property CustomerId() As String - Get - Return m_CustomerId - End Get - Set(value As String) - m_CustomerId = value - End Set - End Property - Private m_CustomerId As String - Public Property CompanyName() As String - Get - Return m_CompanyName - End Get - Set(value As String) - m_CompanyName = value - End Set - End Property - Private m_CompanyName As String - Public Property ContactName() As String - Get - Return m_ContactName - End Get - Set(value As String) - m_ContactName = value - End Set - End Property - Private m_ContactName As String - Public Property ContactTitle() As String - Get - Return m_ContactTitle - End Get - Set(value As String) - m_ContactTitle = value - End Set - End Property - Private m_ContactTitle As String - Public Property Address() As String - Get - Return m_Address - End Get - Set(value As String) - m_Address = value - End Set - End Property - Private m_Address As String - Public Property PostalCode() As String - Get - Return m_PostalCode - End Get - Set(value As String) - m_PostalCode = value - End Set - End Property - Private m_PostalCode As String - Public Sub New(customerId As String, companyName As String, contactName As String, contactTitle As String, address As String, postalCode As String) - Me.CustomerId = customerId - Me.CompanyName = companyName - Me.ContactName = contactName - Me.ContactTitle = contactTitle - Me.Address = address - Me.PostalCode = postalCode - End Sub - Default Public ReadOnly Property Item(i As Integer) As String - Get - Select Case i - Case 0 - Return CompanyName - Case 1 - Return ContactName - Case 2 - Return ContactTitle - Case 3 - Return Address - Case 4 - Return PostalCode - Case Else - Return [String].Empty - End Select - End Get - End Property -End Class - -```` - -{{endregion}} - ->note It is necessary to specify the __FieldName__ property for the filter cells. - -# See Also -* [Setting Filters Programmatically]({%slug winforms/virtualgrid/filtering/setting-filters-programmatically%}) -* [Filter by using a CheckBox in RadVirtualGrid]({%slug filter-by-checkbox-in-virtualgrid%}) - +--- +title: Filtering Overview +page_title: Filtering Overview - RadVirtualGrid +description: This article shows how you can use the built in filtering functionality. +slug: winforms/virtualgrid/filtering/filtering +tags: virtualgrid, filtering +published: True +position: 0 +--- + +# Filtering Overview + +__RadVirtualGrid__ supports data filtering. Set the RadVirtualGrid.__AllowFiltering__ property to *true*. + +>caption Figure 1: Filtering is enabled. + +![WinForms RadVirtualGrid Filtering is enabled](images/virtualgrid-filtering001.png) + +#### Enabling the user filtering + +{{source=..\SamplesCS\VirtualGrid\Filtering\VirtualGridFiltering.cs region=AllowFiltering}} +{{source=..\SamplesVB\VirtualGrid\Filtering\VirtualGridFiltering.vb region=AllowFiltering}} + +````C# + +this.radVirtualGrid1.AllowFiltering = true; + +```` +````VB.NET +Me.RadVirtualGrid1.AllowFiltering = True + +```` + +{{endregion}} + +When filtering is enabled, each column displays a filter button beneath the corresponding header which controls the filter operator: + +![WinForms RadVirtualGrid Filter Button](images/virtualgrid-filtering002.png) + +When clicking over the filter cell, the filter text box is activated: + +![WinForms RadVirtualGrid Filter TextBox](images/virtualgrid-filtering003.png) + +It is necessary to handle the __FilterChanged__ event which is fired once the __FilterDescriptors__ collection is changed. In the event handler you should extract the filtered data from the external data source. + +>note Please refer to the [Populating with data](https://docs.telerik.com/devtools/winforms/controls/virtualgrid/working-with-data/virtualgrid-populating-with-data) help article which demonstrates how to extract the necessary data and fill the virtual grid with data. + +The following example demonstrates how to achieve filtering functionality in __RadVirtualGrid__ filled with Northwind.Customers table: + +{{source=..\SamplesCS\VirtualGrid\Filtering\VirtualGridFiltering.cs region=Filtering}} +{{source=..\SamplesVB\VirtualGrid\Filtering\VirtualGridFiltering.vb region=Filtering}} + +````C# + +private void radVirtualGrid1_FilterChanged(object sender, VirtualGridEventArgs e) +{ + SelectData(); +} + +private readonly string selectCommand = "SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, PostalCode FROM Customers"; +private string[] columnNames = new string[] { "CompanyName", "ContactName", "ContactTitle", "Address", "PostalCode" }; +List data = new List(); + +private void SelectData() +{ + string filterExpression = this.radVirtualGrid1.FilterDescriptors.Expression; + + if (!string.IsNullOrEmpty(filterExpression)) + { + filterExpression = "WHERE " + filterExpression; + } + + string commandString = String.Format("{0} {1}", selectCommand, filterExpression); + using (System.Data.OleDb.OleDbCommand command = new System.Data.OleDb.OleDbCommand(commandString)) + { + command.Connection = new System.Data.OleDb.OleDbConnection(Settings.Default.NwindConnectionString); + command.Connection.Open(); + IDataReader reader = command.ExecuteReader(); + data.Clear(); + + while (reader.Read()) + { + Customer customer = new Customer( + Convert.ToString(reader[0]), + Convert.ToString(reader[1]), + Convert.ToString(reader[2]), + Convert.ToString(reader[3]), + Convert.ToString(reader[4]), + Convert.ToString(reader[5])); + data.Add(customer); + } + + command.Connection.Close(); + } + + this.radVirtualGrid1.RowCount = data.Count; +} + +private void radVirtualGrid1_CellValueNeeded(object sender, Telerik.WinControls.UI.VirtualGridCellValueNeededEventArgs e) +{ + if (e.ColumnIndex < 0) + return; + if (e.RowIndex == RadVirtualGrid.HeaderRowIndex) + { + e.Value = columnNames[e.ColumnIndex]; + } + + if (e.RowIndex < 0) + { + e.FieldName = columnNames[e.ColumnIndex]; + } + + if (e.RowIndex >= 0 && e.RowIndex < data.Count) + { + e.Value = data[e.RowIndex][e.ColumnIndex]; + } +} + +private void VirtualGridFiltering_Load(object sender, EventArgs e) +{ + this.radVirtualGrid1.ColumnCount = columnNames.Length; + this.radVirtualGrid1.CellValueNeeded += radVirtualGrid1_CellValueNeeded; + this.radVirtualGrid1.FilterChanged += radVirtualGrid1_FilterChanged; + SelectData(); +} + +public class Customer +{ + public string CustomerId { get; set; } + + public string CompanyName { get; set; } + + public string ContactName { get; set; } + + public string ContactTitle { get; set; } + + public string Address { get; set; } + + public string PostalCode { get; set; } + + public Customer(string customerId, string companyName, string contactName, string contactTitle, string address, string postalCode) + { + this.CustomerId = customerId; + this.CompanyName = companyName; + this.ContactName = contactName; + this.ContactTitle = contactTitle; + this.Address = address; + this.PostalCode = postalCode; + } + + public string this[int i] + { + get + { + switch (i) + { + case 0: + return CompanyName; + case 1: + return ContactName; + case 2: + return ContactTitle; + case 3: + return Address; + case 4: + return PostalCode; + default: + return String.Empty; + } + } + } +} + +```` +````VB.NET +Private Sub radVirtualGrid1_FilterChanged(sender As Object, e As VirtualGridEventArgs) + SelectData() +End Sub +Private ReadOnly selectCommand As String = "SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, PostalCode FROM Customers" +Private columnNames As String() = New String() {"CompanyName", "ContactName", "ContactTitle", "Address", "PostalCode"} +Private data As New List(Of Customer)() +Private Sub SelectData() + Dim filterExpression As String = Me.RadVirtualGrid1.FilterDescriptors.Expression + If Not String.IsNullOrEmpty(filterExpression) Then + filterExpression = Convert.ToString("WHERE ") & filterExpression + End If + Dim commandString As String = [String].Format("{0} {1}", selectCommand, filterExpression) + Using command As New System.Data.OleDb.OleDbCommand(commandString) + command.Connection = New System.Data.OleDb.OleDbConnection(My.Settings.NwindConnectionString) + command.Connection.Open() + Dim reader As IDataReader = command.ExecuteReader() + data.Clear() + While reader.Read() + Dim customer As New Customer(Convert.ToString(reader(0)), Convert.ToString(reader(1)), Convert.ToString(reader(2)), _ + Convert.ToString(reader(3)), Convert.ToString(reader(4)), Convert.ToString(reader(5))) + data.Add(customer) + End While + command.Connection.Close() + End Using + Me.RadVirtualGrid1.RowCount = data.Count +End Sub +Private Sub radVirtualGrid1_CellValueNeeded(sender As Object, e As Telerik.WinControls.UI.VirtualGridCellValueNeededEventArgs) + If e.ColumnIndex < 0 Then + Return + End If + If e.RowIndex = RadVirtualGrid.HeaderRowIndex Then + e.Value = columnNames(e.ColumnIndex) + End If + If e.RowIndex < 0 Then + e.FieldName = columnNames(e.ColumnIndex) + End If + If e.RowIndex >= 0 AndAlso e.RowIndex < data.Count Then + e.Value = data(e.RowIndex)(e.ColumnIndex) + End If +End Sub +Private Sub VirtualGridFiltering_Load(sender As Object, e As EventArgs) Handles Me.Load + Me.RadVirtualGrid1.ColumnCount = columnNames.Length + AddHandler Me.RadVirtualGrid1.CellValueNeeded, AddressOf radVirtualGrid1_CellValueNeeded + AddHandler Me.RadVirtualGrid1.FilterChanged, AddressOf radVirtualGrid1_FilterChanged + SelectData() +End Sub +Public Class Customer + Public Property CustomerId() As String + Get + Return m_CustomerId + End Get + Set(value As String) + m_CustomerId = value + End Set + End Property + Private m_CustomerId As String + Public Property CompanyName() As String + Get + Return m_CompanyName + End Get + Set(value As String) + m_CompanyName = value + End Set + End Property + Private m_CompanyName As String + Public Property ContactName() As String + Get + Return m_ContactName + End Get + Set(value As String) + m_ContactName = value + End Set + End Property + Private m_ContactName As String + Public Property ContactTitle() As String + Get + Return m_ContactTitle + End Get + Set(value As String) + m_ContactTitle = value + End Set + End Property + Private m_ContactTitle As String + Public Property Address() As String + Get + Return m_Address + End Get + Set(value As String) + m_Address = value + End Set + End Property + Private m_Address As String + Public Property PostalCode() As String + Get + Return m_PostalCode + End Get + Set(value As String) + m_PostalCode = value + End Set + End Property + Private m_PostalCode As String + Public Sub New(customerId As String, companyName As String, contactName As String, contactTitle As String, address As String, postalCode As String) + Me.CustomerId = customerId + Me.CompanyName = companyName + Me.ContactName = contactName + Me.ContactTitle = contactTitle + Me.Address = address + Me.PostalCode = postalCode + End Sub + Default Public ReadOnly Property Item(i As Integer) As String + Get + Select Case i + Case 0 + Return CompanyName + Case 1 + Return ContactName + Case 2 + Return ContactTitle + Case 3 + Return Address + Case 4 + Return PostalCode + Case Else + Return [String].Empty + End Select + End Get + End Property +End Class + +```` + +{{endregion}} + +>note It is necessary to specify the __FieldName__ property for the filter cells. + +# See Also +* [Setting Filters Programmatically]({%slug winforms/virtualgrid/filtering/setting-filters-programmatically%}) +* [Filter by using a CheckBox in RadVirtualGrid]({%slug filter-by-checkbox-in-virtualgrid%}) + diff --git a/controls/virtualgrid/filtering/images/setting-filters-programmatically001.png b/controls/virtualgrid/features/filtering/images/setting-filters-programmatically001.png similarity index 100% rename from controls/virtualgrid/filtering/images/setting-filters-programmatically001.png rename to controls/virtualgrid/features/filtering/images/setting-filters-programmatically001.png diff --git a/controls/virtualgrid/filtering/images/setting-filters-programmatically002.png b/controls/virtualgrid/features/filtering/images/setting-filters-programmatically002.png similarity index 100% rename from controls/virtualgrid/filtering/images/setting-filters-programmatically002.png rename to controls/virtualgrid/features/filtering/images/setting-filters-programmatically002.png diff --git a/controls/virtualgrid/filtering/images/virtualgrid-filtering001.png b/controls/virtualgrid/features/filtering/images/virtualgrid-filtering001.png similarity index 100% rename from controls/virtualgrid/filtering/images/virtualgrid-filtering001.png rename to controls/virtualgrid/features/filtering/images/virtualgrid-filtering001.png diff --git a/controls/virtualgrid/filtering/images/virtualgrid-filtering002.png b/controls/virtualgrid/features/filtering/images/virtualgrid-filtering002.png similarity index 100% rename from controls/virtualgrid/filtering/images/virtualgrid-filtering002.png rename to controls/virtualgrid/features/filtering/images/virtualgrid-filtering002.png diff --git a/controls/virtualgrid/filtering/images/virtualgrid-filtering003.png b/controls/virtualgrid/features/filtering/images/virtualgrid-filtering003.png similarity index 100% rename from controls/virtualgrid/filtering/images/virtualgrid-filtering003.png rename to controls/virtualgrid/features/filtering/images/virtualgrid-filtering003.png diff --git a/controls/virtualgrid/filtering/setting-filters-programmatically.md b/controls/virtualgrid/features/filtering/setting-filters-programmatically.md similarity index 97% rename from controls/virtualgrid/filtering/setting-filters-programmatically.md rename to controls/virtualgrid/features/filtering/setting-filters-programmatically.md index 326890f22..6d1fe769f 100644 --- a/controls/virtualgrid/filtering/setting-filters-programmatically.md +++ b/controls/virtualgrid/features/filtering/setting-filters-programmatically.md @@ -1,98 +1,98 @@ ---- -title: Setting Filters Programmatically -page_title: Filtering Overview - RadVirtualGrid -description: This article shows you can create and add simple and composite filter descriptors in the code. -slug: winforms/virtualgrid/filtering/setting-filters-programmatically -tags: virtualgrid, filtering -published: True -position: 1 ---- - -# Setting Filters Programmatically - -__RadVirtualGrid__ includes __FilterDescriptors__ property which stores filter descriptors used for filtering operation. The most important classes are: - -* __FilterDescriptor:__ Implements filtering property (field) name, filtering operator and value. Used to define simple filtering expressions like Country = "Germany". - -* __CompositeFilterDescriptor:__ A collection of multiple filter descriptors with logical operator. Used to define complex filtering expressions like (Country = "Germany" AND (City = "Berlin" OR City = "Aachen")) . - ->caution Before proceeding with this article, please refer to the [Filtering Overview]({%slug winforms/virtualgrid/filtering/filtering%}) article which demonstrates how to achieve the filtering functionality in __RadVirtualGrid__. - -# Simple descriptors - -__FilterDescriptor__'s major properties: - -* __PropertyName:__ defines the field, which values will be filtered. - -* __Operator:__ allows you to define the type of operator. The possible values are: *Contains*, *Does not contain*, *Starts with*, *Ends with*, *Equals*, *Not equal to*, *Is null*, *Is not null*. - -* __Value:__ the value your data will be compared against. - -When you add a new descriptor to the collection, the data is automatically filtered according to it. - -![WinForms RadVirtualGrid Simple Filter Descriptors](images/setting-filters-programmatically001.png) - -#### Using simple filter descriptor - -{{source=..\SamplesCS\VirtualGrid\Filtering\VirtualGridFiltering.cs region=SimpleDescriptors}} -{{source=..\SamplesVB\VirtualGrid\Filtering\VirtualGridFiltering.vb region=SimpleDescriptors}} - -````C# - -FilterDescriptor filter = new FilterDescriptor(); -filter.PropertyName = "ContactName"; -filter.Operator = FilterOperator.StartsWith ; -filter.Value = "p"; -filter.IsFilterEditor = true; - this.radVirtualGrid1.FilterDescriptors.Add(filter); - -```` -````VB.NET -Dim filter As New FilterDescriptor() -filter.PropertyName = "ContactName" -filter.[Operator] = FilterOperator.StartsWith -filter.Value = "p" -filter.IsFilterEditor = True -Me.RadVirtualGrid1.FilterDescriptors.Add(filter) - -```` - -{{endregion}} - -# Composite descriptors - -To filter a single data field by multiple values, you have to use the __CompositeFilterDescriptor__ object. It contains a collection of filter descriptors objects and the logical operator for that filters. - - -![WinForms RadVirtualGrid Composite Filter Descriptors](images/setting-filters-programmatically002.png) - -#### Using CompositeFilterDescriptor - -{{source=..\SamplesCS\VirtualGrid\Filtering\VirtualGridFiltering.cs region=CompositeDescriptors}} -{{source=..\SamplesVB\VirtualGrid\Filtering\VirtualGridFiltering.vb region=CompositeDescriptors}} - -````C# - -CompositeFilterDescriptor compositeFilter = new CompositeFilterDescriptor(); -compositeFilter.FilterDescriptors.Add(new FilterDescriptor("ContactName", FilterOperator.StartsWith,"p")); -compositeFilter.FilterDescriptors.First().IsFilterEditor = true; -compositeFilter.FilterDescriptors.Add(new FilterDescriptor("CompanyName", FilterOperator.Contains, "w")); -compositeFilter.LogicalOperator = FilterLogicalOperator.And; -this.radVirtualGrid1.FilterDescriptors.Add(compositeFilter); - -```` -````VB.NET -Dim compositeFilter As New CompositeFilterDescriptor() -compositeFilter.FilterDescriptors.Add(New FilterDescriptor("ContactName", FilterOperator.StartsWith, "p")) -compositeFilter.FilterDescriptors.First().IsFilterEditor = True -compositeFilter.FilterDescriptors.Add(New FilterDescriptor("CompanyName", FilterOperator.Contains, "w")) -compositeFilter.LogicalOperator = FilterLogicalOperator.[And] -Me.RadVirtualGrid1.FilterDescriptors.Add(compositeFilter) - -```` - -{{endregion}} - -# See Also -* [Filtering Overview]({%slug winforms/virtualgrid/filtering/filtering%}) - +--- +title: Setting Filters Programmatically +page_title: Filtering Overview - RadVirtualGrid +description: This article shows you can create and add simple and composite filter descriptors in the code. +slug: winforms/virtualgrid/filtering/setting-filters-programmatically +tags: virtualgrid, filtering +published: True +position: 1 +--- + +# Setting Filters Programmatically + +__RadVirtualGrid__ includes __FilterDescriptors__ property which stores filter descriptors used for filtering operation. The most important classes are: + +* __FilterDescriptor:__ Implements filtering property (field) name, filtering operator and value. Used to define simple filtering expressions like Country = "Germany". + +* __CompositeFilterDescriptor:__ A collection of multiple filter descriptors with logical operator. Used to define complex filtering expressions like (Country = "Germany" AND (City = "Berlin" OR City = "Aachen")) . + +>caution Before proceeding with this article, please refer to the [Filtering Overview]({%slug winforms/virtualgrid/filtering/filtering%}) article which demonstrates how to achieve the filtering functionality in __RadVirtualGrid__. + +# Simple descriptors + +__FilterDescriptor__'s major properties: + +* __PropertyName:__ defines the field, which values will be filtered. + +* __Operator:__ allows you to define the type of operator. The possible values are: *Contains*, *Does not contain*, *Starts with*, *Ends with*, *Equals*, *Not equal to*, *Is null*, *Is not null*. + +* __Value:__ the value your data will be compared against. + +When you add a new descriptor to the collection, the data is automatically filtered according to it. + +![WinForms RadVirtualGrid Simple Filter Descriptors](images/setting-filters-programmatically001.png) + +#### Using simple filter descriptor + +{{source=..\SamplesCS\VirtualGrid\Filtering\VirtualGridFiltering.cs region=SimpleDescriptors}} +{{source=..\SamplesVB\VirtualGrid\Filtering\VirtualGridFiltering.vb region=SimpleDescriptors}} + +````C# + +FilterDescriptor filter = new FilterDescriptor(); +filter.PropertyName = "ContactName"; +filter.Operator = FilterOperator.StartsWith ; +filter.Value = "p"; +filter.IsFilterEditor = true; + this.radVirtualGrid1.FilterDescriptors.Add(filter); + +```` +````VB.NET +Dim filter As New FilterDescriptor() +filter.PropertyName = "ContactName" +filter.[Operator] = FilterOperator.StartsWith +filter.Value = "p" +filter.IsFilterEditor = True +Me.RadVirtualGrid1.FilterDescriptors.Add(filter) + +```` + +{{endregion}} + +# Composite descriptors + +To filter a single data field by multiple values, you have to use the __CompositeFilterDescriptor__ object. It contains a collection of filter descriptors objects and the logical operator for that filters. + + +![WinForms RadVirtualGrid Composite Filter Descriptors](images/setting-filters-programmatically002.png) + +#### Using CompositeFilterDescriptor + +{{source=..\SamplesCS\VirtualGrid\Filtering\VirtualGridFiltering.cs region=CompositeDescriptors}} +{{source=..\SamplesVB\VirtualGrid\Filtering\VirtualGridFiltering.vb region=CompositeDescriptors}} + +````C# + +CompositeFilterDescriptor compositeFilter = new CompositeFilterDescriptor(); +compositeFilter.FilterDescriptors.Add(new FilterDescriptor("ContactName", FilterOperator.StartsWith,"p")); +compositeFilter.FilterDescriptors.First().IsFilterEditor = true; +compositeFilter.FilterDescriptors.Add(new FilterDescriptor("CompanyName", FilterOperator.Contains, "w")); +compositeFilter.LogicalOperator = FilterLogicalOperator.And; +this.radVirtualGrid1.FilterDescriptors.Add(compositeFilter); + +```` +````VB.NET +Dim compositeFilter As New CompositeFilterDescriptor() +compositeFilter.FilterDescriptors.Add(New FilterDescriptor("ContactName", FilterOperator.StartsWith, "p")) +compositeFilter.FilterDescriptors.First().IsFilterEditor = True +compositeFilter.FilterDescriptors.Add(New FilterDescriptor("CompanyName", FilterOperator.Contains, "w")) +compositeFilter.LogicalOperator = FilterLogicalOperator.[And] +Me.RadVirtualGrid1.FilterDescriptors.Add(compositeFilter) + +```` + +{{endregion}} + +# See Also +* [Filtering Overview]({%slug winforms/virtualgrid/filtering/filtering%}) + diff --git a/controls/virtualgrid/images/virtualgrid-busy-indicators001.gif b/controls/virtualgrid/features/images/virtualgrid-busy-indicators001.gif similarity index 100% rename from controls/virtualgrid/images/virtualgrid-busy-indicators001.gif rename to controls/virtualgrid/features/images/virtualgrid-busy-indicators001.gif diff --git a/controls/virtualgrid/images/virtualgrid-busy-indicators002.gif b/controls/virtualgrid/features/images/virtualgrid-busy-indicators002.gif similarity index 100% rename from controls/virtualgrid/images/virtualgrid-busy-indicators002.gif rename to controls/virtualgrid/features/images/virtualgrid-busy-indicators002.gif diff --git a/controls/virtualgrid/handling-user-input/images/virtualgrid-input-behavior001.gif b/controls/virtualgrid/features/images/virtualgrid-input-behavior001.gif similarity index 100% rename from controls/virtualgrid/handling-user-input/images/virtualgrid-input-behavior001.gif rename to controls/virtualgrid/features/images/virtualgrid-input-behavior001.gif diff --git a/controls/virtualgrid/images/virtualgrid-scrolling001.gif b/controls/virtualgrid/features/images/virtualgrid-scrolling001.gif similarity index 100% rename from controls/virtualgrid/images/virtualgrid-scrolling001.gif rename to controls/virtualgrid/features/images/virtualgrid-scrolling001.gif diff --git a/controls/virtualgrid/images/virtualgrid-scrolling002.gif b/controls/virtualgrid/features/images/virtualgrid-scrolling002.gif similarity index 100% rename from controls/virtualgrid/images/virtualgrid-scrolling002.gif rename to controls/virtualgrid/features/images/virtualgrid-scrolling002.gif diff --git a/controls/virtualgrid/images/virtualgrid-scrolling003.gif b/controls/virtualgrid/features/images/virtualgrid-scrolling003.gif similarity index 100% rename from controls/virtualgrid/images/virtualgrid-scrolling003.gif rename to controls/virtualgrid/features/images/virtualgrid-scrolling003.gif diff --git a/controls/virtualgrid/handling-user-input/input-behavior.md b/controls/virtualgrid/features/input-behavior.md similarity index 97% rename from controls/virtualgrid/handling-user-input/input-behavior.md rename to controls/virtualgrid/features/input-behavior.md index e826978b8..a4dfd667a 100644 --- a/controls/virtualgrid/handling-user-input/input-behavior.md +++ b/controls/virtualgrid/features/input-behavior.md @@ -1,100 +1,100 @@ ---- -title: InputBehavior -page_title: InputBehavior - RadVirtualGrid -description: This article describes how one can create custom InputBehavior and intercept the default mouse and keyboard handling. -slug: winforms/virtualgrid/handling-user-input/input-behavior -tags: virtualgrid -published: True -position: 0 ---- - -# InputBehavior - -__RadVirtualGrid__ manages user mouse and keyboard input over its rows by __VirtualGridInputBehavior__. By implementing a specific custom input behavior, developers can change the default row functionality or supplement the existing one. - -You can find below a sample code snippet demonstrating how to override the default up/down navigation logic when pressing the up/down arrow keys and show a message to confirm the operation. For this purpose, we should create a derivative of __VirtualGridInputBehavior__ and override its __HandleUpKey__ and __HandleDownKey__ methods: - -![WinForms RadVirtualGrid InputBehavior](images/virtualgrid-input-behavior001.gif) - -#### Custom VirtualGridInputBehavior - -{{source=..\SamplesCS\VirtualGrid\HandlingUserInput\VirtualGridInputBehaviorForm.cs region=CustomInputBehavior}} -{{source=..\SamplesVB\VirtualGrid\HandlingUserInput\VirtualGridInputBehaviorForm.vb region=CustomInputBehavior}} - - -````C# - -public class CustomVirtualGridInputBehavior : VirtualGridInputBehavior -{ - public CustomVirtualGridInputBehavior(RadVirtualGridElement gridElement) : base(gridElement) - { - } - - protected override bool HandleUpKey(KeyEventArgs keys) - { - DialogResult dr = RadMessageBox.Show("Please confirm the move up operation!", "Confirmation", MessageBoxButtons.YesNo); - if (dr == DialogResult.Yes) - { - return base.HandleUpKey(keys); - } - return false; - } - - protected override bool HandleDownKey(KeyEventArgs keys) - { - DialogResult dr = RadMessageBox.Show("Please confirm the move down operation!", "Confirmation", MessageBoxButtons.YesNo); - if (dr == DialogResult.Yes) - { - return base.HandleDownKey(keys); - } - return false; - } -} - -```` -````VB.NET -Public Class CustomVirtualGridInputBehavior -Inherits VirtualGridInputBehavior - Public Sub New(gridElement As RadVirtualGridElement) - MyBase.New(gridElement) - End Sub - Protected Overrides Function HandleUpKey(keys As KeyEventArgs) As Boolean - Dim dr As DialogResult = RadMessageBox.Show("Please confirm the move up operation!", "Confirmation", MessageBoxButtons.YesNo) - If dr = DialogResult.Yes Then - Return MyBase.HandleUpKey(keys) - End If - Return False - End Function - Protected Overrides Function HandleDownKey(keys As KeyEventArgs) As Boolean - Dim dr As DialogResult = RadMessageBox.Show("Please confirm the move down operation!", "Confirmation", MessageBoxButtons.YesNo) - If dr = DialogResult.Yes Then - Return MyBase.HandleDownKey(keys) - End If - Return False - End Function -End Class - -```` - -{{endregion}} - -#### Apply the custom VirtualGridInputBehavior - -{{source=..\SamplesCS\VirtualGrid\HandlingUserInput\VirtualGridInputBehaviorForm.cs region=ApplyInputBehavior}} -{{source=..\SamplesVB\VirtualGrid\HandlingUserInput\VirtualGridInputBehaviorForm.vb region=ApplyInputBehavior}} - - -````C# - -this.radVirtualGrid1.VirtualGridElement.InputBehavior = new CustomVirtualGridInputBehavior(this.radVirtualGrid1.VirtualGridElement); - -```` -````VB.NET -Me.RadVirtualGrid1.VirtualGridElement.InputBehavior = New CustomVirtualGridInputBehavior(Me.RadVirtualGrid1.VirtualGridElement) - -```` - -{{endregion}} - ->note You can follow a similar approach to customize any of the methods that handle the mouse and keyboard user input. - +--- +title: InputBehavior +page_title: InputBehavior - RadVirtualGrid +description: This article describes how one can create custom InputBehavior and intercept the default mouse and keyboard handling. +slug: winforms/virtualgrid/handling-user-input/input-behavior +tags: virtualgrid +published: True +position: 11 +--- + +# InputBehavior + +__RadVirtualGrid__ manages user mouse and keyboard input over its rows by __VirtualGridInputBehavior__. By implementing a specific custom input behavior, developers can change the default row functionality or supplement the existing one. + +You can find below a sample code snippet demonstrating how to override the default up/down navigation logic when pressing the up/down arrow keys and show a message to confirm the operation. For this purpose, we should create a derivative of __VirtualGridInputBehavior__ and override its __HandleUpKey__ and __HandleDownKey__ methods: + +![WinForms RadVirtualGrid InputBehavior](images/virtualgrid-input-behavior001.gif) + +#### Custom VirtualGridInputBehavior + +{{source=..\SamplesCS\VirtualGrid\HandlingUserInput\VirtualGridInputBehaviorForm.cs region=CustomInputBehavior}} +{{source=..\SamplesVB\VirtualGrid\HandlingUserInput\VirtualGridInputBehaviorForm.vb region=CustomInputBehavior}} + + +````C# + +public class CustomVirtualGridInputBehavior : VirtualGridInputBehavior +{ + public CustomVirtualGridInputBehavior(RadVirtualGridElement gridElement) : base(gridElement) + { + } + + protected override bool HandleUpKey(KeyEventArgs keys) + { + DialogResult dr = RadMessageBox.Show("Please confirm the move up operation!", "Confirmation", MessageBoxButtons.YesNo); + if (dr == DialogResult.Yes) + { + return base.HandleUpKey(keys); + } + return false; + } + + protected override bool HandleDownKey(KeyEventArgs keys) + { + DialogResult dr = RadMessageBox.Show("Please confirm the move down operation!", "Confirmation", MessageBoxButtons.YesNo); + if (dr == DialogResult.Yes) + { + return base.HandleDownKey(keys); + } + return false; + } +} + +```` +````VB.NET +Public Class CustomVirtualGridInputBehavior +Inherits VirtualGridInputBehavior + Public Sub New(gridElement As RadVirtualGridElement) + MyBase.New(gridElement) + End Sub + Protected Overrides Function HandleUpKey(keys As KeyEventArgs) As Boolean + Dim dr As DialogResult = RadMessageBox.Show("Please confirm the move up operation!", "Confirmation", MessageBoxButtons.YesNo) + If dr = DialogResult.Yes Then + Return MyBase.HandleUpKey(keys) + End If + Return False + End Function + Protected Overrides Function HandleDownKey(keys As KeyEventArgs) As Boolean + Dim dr As DialogResult = RadMessageBox.Show("Please confirm the move down operation!", "Confirmation", MessageBoxButtons.YesNo) + If dr = DialogResult.Yes Then + Return MyBase.HandleDownKey(keys) + End If + Return False + End Function +End Class + +```` + +{{endregion}} + +#### Apply the custom VirtualGridInputBehavior + +{{source=..\SamplesCS\VirtualGrid\HandlingUserInput\VirtualGridInputBehaviorForm.cs region=ApplyInputBehavior}} +{{source=..\SamplesVB\VirtualGrid\HandlingUserInput\VirtualGridInputBehaviorForm.vb region=ApplyInputBehavior}} + + +````C# + +this.radVirtualGrid1.VirtualGridElement.InputBehavior = new CustomVirtualGridInputBehavior(this.radVirtualGrid1.VirtualGridElement); + +```` +````VB.NET +Me.RadVirtualGrid1.VirtualGridElement.InputBehavior = New CustomVirtualGridInputBehavior(Me.RadVirtualGrid1.VirtualGridElement) + +```` + +{{endregion}} + +>note You can follow a similar approach to customize any of the methods that handle the mouse and keyboard user input. + diff --git a/controls/virtualgrid/paging/images/gridview-paging-panel001.png b/controls/virtualgrid/features/paging/images/gridview-paging-panel001.png similarity index 100% rename from controls/virtualgrid/paging/images/gridview-paging-panel001.png rename to controls/virtualgrid/features/paging/images/gridview-paging-panel001.png diff --git a/controls/virtualgrid/paging/images/gridview-paging-panel002.png b/controls/virtualgrid/features/paging/images/gridview-paging-panel002.png similarity index 100% rename from controls/virtualgrid/paging/images/gridview-paging-panel002.png rename to controls/virtualgrid/features/paging/images/gridview-paging-panel002.png diff --git a/controls/virtualgrid/paging/images/gridview-paging-panel003.png b/controls/virtualgrid/features/paging/images/gridview-paging-panel003.png similarity index 100% rename from controls/virtualgrid/paging/images/gridview-paging-panel003.png rename to controls/virtualgrid/features/paging/images/gridview-paging-panel003.png diff --git a/controls/virtualgrid/paging/images/gridview-paging-panel004.png b/controls/virtualgrid/features/paging/images/gridview-paging-panel004.png similarity index 100% rename from controls/virtualgrid/paging/images/gridview-paging-panel004.png rename to controls/virtualgrid/features/paging/images/gridview-paging-panel004.png diff --git a/controls/virtualgrid/paging/images/gridview-paging-panel005.png b/controls/virtualgrid/features/paging/images/gridview-paging-panel005.png similarity index 100% rename from controls/virtualgrid/paging/images/gridview-paging-panel005.png rename to controls/virtualgrid/features/paging/images/gridview-paging-panel005.png diff --git a/controls/virtualgrid/paging/images/gridview-paging-panel006.png b/controls/virtualgrid/features/paging/images/gridview-paging-panel006.png similarity index 100% rename from controls/virtualgrid/paging/images/gridview-paging-panel006.png rename to controls/virtualgrid/features/paging/images/gridview-paging-panel006.png diff --git a/controls/virtualgrid/paging/images/gridview-paging-panel007.png b/controls/virtualgrid/features/paging/images/gridview-paging-panel007.png similarity index 100% rename from controls/virtualgrid/paging/images/gridview-paging-panel007.png rename to controls/virtualgrid/features/paging/images/gridview-paging-panel007.png diff --git a/controls/virtualgrid/paging/images/gridview-paging-panel008.png b/controls/virtualgrid/features/paging/images/gridview-paging-panel008.png similarity index 100% rename from controls/virtualgrid/paging/images/gridview-paging-panel008.png rename to controls/virtualgrid/features/paging/images/gridview-paging-panel008.png diff --git a/controls/virtualgrid/paging/images/gridview-paging-panel009.png b/controls/virtualgrid/features/paging/images/gridview-paging-panel009.png similarity index 100% rename from controls/virtualgrid/paging/images/gridview-paging-panel009.png rename to controls/virtualgrid/features/paging/images/gridview-paging-panel009.png diff --git a/controls/virtualgrid/paging/images/gridview-paging-panel010.png b/controls/virtualgrid/features/paging/images/gridview-paging-panel010.png similarity index 100% rename from controls/virtualgrid/paging/images/gridview-paging-panel010.png rename to controls/virtualgrid/features/paging/images/gridview-paging-panel010.png diff --git a/controls/virtualgrid/paging/images/virtualgrid-paging001.png b/controls/virtualgrid/features/paging/images/virtualgrid-paging001.png similarity index 100% rename from controls/virtualgrid/paging/images/virtualgrid-paging001.png rename to controls/virtualgrid/features/paging/images/virtualgrid-paging001.png diff --git a/controls/virtualgrid/paging/paging-overview.md b/controls/virtualgrid/features/paging/paging-overview.md similarity index 100% rename from controls/virtualgrid/paging/paging-overview.md rename to controls/virtualgrid/features/paging/paging-overview.md diff --git a/controls/virtualgrid/paging/paging-panel.md b/controls/virtualgrid/features/paging/paging-panel.md similarity index 100% rename from controls/virtualgrid/paging/paging-panel.md rename to controls/virtualgrid/features/paging/paging-panel.md diff --git a/controls/virtualgrid/save-and-load-layout/advanced.md b/controls/virtualgrid/features/save-and-load-layout/advanced.md similarity index 98% rename from controls/virtualgrid/save-and-load-layout/advanced.md rename to controls/virtualgrid/features/save-and-load-layout/advanced.md index 69ddd7cb6..8943cf4cf 100644 --- a/controls/virtualgrid/save-and-load-layout/advanced.md +++ b/controls/virtualgrid/features/save-and-load-layout/advanced.md @@ -1,112 +1,112 @@ ---- -title: Advanced -page_title: Advanced - RadVirtualGrid -description: This article shows how you can customize the save layout operation. -slug: winforms/virtualgrid/save-and-load-layout/advanced -tags: save-and-load-layout, advanced -published: True -position: 1 ---- - -# Advanced - -__RadVirtualGrid__`s serialization API provides a wide range of options that enable the developer to customize the serialized content in a flexible manner. Based on the principles of the standard Microsoft .NET XML serialization approach, the API can be easily used for implementing different serialization scenarios. - -This article demonstrates how to alter the default serialization procedure and explicitly define the properties to be serialized. - -Here are several properties to have in mind: - -* __RadVirtualGrid.XmlSerializationInfo:__ This property of RadGridView gets the serialization information used by the SaveLayout and LoadLayout methods. It contains all RadGridView data that should persist between application states. - -* __RadVirtualGrid.XmlSerializationInfo.DisregardOriginalSerializationVisibility:__ This property determines whether the serialization engine should take the default serialization attributes or the custom serialization metadata provided by the programmer. To define a custom collection of properties, set the property to true. - -* __RadVirtualGrid.XmlSerializationInfo.SerializationMetadata:__ This property returns a collection of PropertySerializationMetadata objects, which contains information about the type, name and serialization method of the corresponding property. You need to clear the collection in order to be sure that only the serialization instructions will be considered. - -Here is a snippet clearing the default settings: - -#### Clear Default Settings - -{{source=..\SamplesCS\VirtualGrid\SaveLoadLayout\VirtualGridSaveLoadLayout.cs region=ClearSettings}} -{{source=..\SamplesVB\VirtualGrid\SaveLoadLayout\VirtualGridSaveLoadLayout.vb region=ClearSettings}} - -````C# -private void ClearSettings(object sender, EventArgs e) -{ - this.radVirtualGrid1.XmlSerializationInfo.DisregardOriginalSerializationVisibility = true; - this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Clear(); -} - -```` -````VB.NET -Private Sub ClearSettings(sender As Object, e As EventArgs) - Me.RadVirtualGrid1.XmlSerializationInfo.DisregardOriginalSerializationVisibility = True - Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Clear() -End Sub - -```` - -{{endregion}} - ->note Clearing the default settings would require all the serialization meta data to be loaded manually. -> - -The code snippets below demonstrates how you can hide a particular information to be serialized:  - -#### Define Data - -{{source=..\SamplesCS\VirtualGrid\SaveLoadLayout\VirtualGridSaveLoadLayout.cs region=DefineData}} -{{source=..\SamplesVB\VirtualGrid\SaveLoadLayout\VirtualGridSaveLoadLayout.vb region=DefineData}} - -````C# -private void DefineData(object sender, EventArgs e) -{ - //Hide items - this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(VirtualGridViewInfo), "CustomColumns", new DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)); - this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(VirtualGridViewInfo), "ColumnDataTypes", new DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)); - this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(VirtualGridTableViewState), "ItemSizes", new DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)); - this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(VirtualGridTableViewState), "ItemCount", new DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)); - //Sort Descriptors - this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(VirtualGridViewInfo), "SortDescriptors", DesignerSerializationVisibilityAttribute.Hidden); - this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(SortDescriptor), "Direction", DesignerSerializationVisibilityAttribute.Hidden); - //Filter Descriptors - this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(VirtualGridViewInfo), "FilterDescriptors", DesignerSerializationVisibilityAttribute.Hidden); - this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(FilterDescriptor), "PropertyName", DesignerSerializationVisibilityAttribute.Hidden); - this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(FilterDescriptor), "Operator", DesignerSerializationVisibilityAttribute.Hidden); - this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(FilterDescriptor), "Value", DesignerSerializationVisibilityAttribute.Hidden); - this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(FilterDescriptor), "IsFilterEditor", DesignerSerializationVisibilityAttribute.Hidden); -} - -```` -````VB.NET -Private Sub DefineData(sender As Object, e As EventArgs) - 'Hide items - Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(VirtualGridViewInfo), "CustomColumns", New DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)) - Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(VirtualGridViewInfo), "ColumnDataTypes", New DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)) - Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(VirtualGridTableViewState), "ItemSizes", New DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)) - Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(VirtualGridTableViewState), "ItemCount", New DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)) - 'Sort Descriptors - Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(VirtualGridViewInfo), "SortDescriptors", DesignerSerializationVisibilityAttribute.Hidden) - Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(SortDescriptor), "Direction", DesignerSerializationVisibilityAttribute.Hidden) - 'Filter Descriptors - Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(VirtualGridViewInfo), "FilterDescriptors", DesignerSerializationVisibilityAttribute.Hidden) - Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(FilterDescriptor), "PropertyName", DesignerSerializationVisibilityAttribute.Hidden) - Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(FilterDescriptor), "Operator", DesignerSerializationVisibilityAttribute.Hidden) - Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(FilterDescriptor), "Value", DesignerSerializationVisibilityAttribute.Hidden) - Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(FilterDescriptor), "IsFilterEditor", DesignerSerializationVisibilityAttribute.Hidden) -End Sub - -```` - -{{endregion}} - ->note Once the layout is being loaded the __LayoutLoaded__ event is being thrown in order to notify that the load process is being finished. -> - - - - - - -# See Also -* [Overview]({%slug winforms/virtualgrid/save-and-load-layout/overview%}) - +--- +title: Advanced +page_title: Advanced - RadVirtualGrid +description: This article shows how you can customize the save layout operation. +slug: winforms/virtualgrid/save-and-load-layout/advanced +tags: save-and-load-layout, advanced +published: True +position: 1 +--- + +# Advanced + +__RadVirtualGrid__`s serialization API provides a wide range of options that enable the developer to customize the serialized content in a flexible manner. Based on the principles of the standard Microsoft .NET XML serialization approach, the API can be easily used for implementing different serialization scenarios. + +This article demonstrates how to alter the default serialization procedure and explicitly define the properties to be serialized. + +Here are several properties to have in mind: + +* __RadVirtualGrid.XmlSerializationInfo:__ This property of RadGridView gets the serialization information used by the SaveLayout and LoadLayout methods. It contains all RadGridView data that should persist between application states. + +* __RadVirtualGrid.XmlSerializationInfo.DisregardOriginalSerializationVisibility:__ This property determines whether the serialization engine should take the default serialization attributes or the custom serialization metadata provided by the programmer. To define a custom collection of properties, set the property to true. + +* __RadVirtualGrid.XmlSerializationInfo.SerializationMetadata:__ This property returns a collection of PropertySerializationMetadata objects, which contains information about the type, name and serialization method of the corresponding property. You need to clear the collection in order to be sure that only the serialization instructions will be considered. + +Here is a snippet clearing the default settings: + +#### Clear Default Settings + +{{source=..\SamplesCS\VirtualGrid\SaveLoadLayout\VirtualGridSaveLoadLayout.cs region=ClearSettings}} +{{source=..\SamplesVB\VirtualGrid\SaveLoadLayout\VirtualGridSaveLoadLayout.vb region=ClearSettings}} + +````C# +private void ClearSettings(object sender, EventArgs e) +{ + this.radVirtualGrid1.XmlSerializationInfo.DisregardOriginalSerializationVisibility = true; + this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Clear(); +} + +```` +````VB.NET +Private Sub ClearSettings(sender As Object, e As EventArgs) + Me.RadVirtualGrid1.XmlSerializationInfo.DisregardOriginalSerializationVisibility = True + Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Clear() +End Sub + +```` + +{{endregion}} + +>note Clearing the default settings would require all the serialization meta data to be loaded manually. +> + +The code snippets below demonstrates how you can hide a particular information to be serialized:  + +#### Define Data + +{{source=..\SamplesCS\VirtualGrid\SaveLoadLayout\VirtualGridSaveLoadLayout.cs region=DefineData}} +{{source=..\SamplesVB\VirtualGrid\SaveLoadLayout\VirtualGridSaveLoadLayout.vb region=DefineData}} + +````C# +private void DefineData(object sender, EventArgs e) +{ + //Hide items + this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(VirtualGridViewInfo), "CustomColumns", new DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)); + this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(VirtualGridViewInfo), "ColumnDataTypes", new DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)); + this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(VirtualGridTableViewState), "ItemSizes", new DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)); + this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(VirtualGridTableViewState), "ItemCount", new DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)); + //Sort Descriptors + this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(VirtualGridViewInfo), "SortDescriptors", DesignerSerializationVisibilityAttribute.Hidden); + this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(SortDescriptor), "Direction", DesignerSerializationVisibilityAttribute.Hidden); + //Filter Descriptors + this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(VirtualGridViewInfo), "FilterDescriptors", DesignerSerializationVisibilityAttribute.Hidden); + this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(FilterDescriptor), "PropertyName", DesignerSerializationVisibilityAttribute.Hidden); + this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(FilterDescriptor), "Operator", DesignerSerializationVisibilityAttribute.Hidden); + this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(FilterDescriptor), "Value", DesignerSerializationVisibilityAttribute.Hidden); + this.radVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(typeof(FilterDescriptor), "IsFilterEditor", DesignerSerializationVisibilityAttribute.Hidden); +} + +```` +````VB.NET +Private Sub DefineData(sender As Object, e As EventArgs) + 'Hide items + Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(VirtualGridViewInfo), "CustomColumns", New DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)) + Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(VirtualGridViewInfo), "ColumnDataTypes", New DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)) + Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(VirtualGridTableViewState), "ItemSizes", New DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)) + Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(VirtualGridTableViewState), "ItemCount", New DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)) + 'Sort Descriptors + Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(VirtualGridViewInfo), "SortDescriptors", DesignerSerializationVisibilityAttribute.Hidden) + Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(SortDescriptor), "Direction", DesignerSerializationVisibilityAttribute.Hidden) + 'Filter Descriptors + Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(VirtualGridViewInfo), "FilterDescriptors", DesignerSerializationVisibilityAttribute.Hidden) + Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(FilterDescriptor), "PropertyName", DesignerSerializationVisibilityAttribute.Hidden) + Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(FilterDescriptor), "Operator", DesignerSerializationVisibilityAttribute.Hidden) + Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(FilterDescriptor), "Value", DesignerSerializationVisibilityAttribute.Hidden) + Me.RadVirtualGrid1.XmlSerializationInfo.SerializationMetadata.Add(GetType(FilterDescriptor), "IsFilterEditor", DesignerSerializationVisibilityAttribute.Hidden) +End Sub + +```` + +{{endregion}} + +>note Once the layout is being loaded the __LayoutLoaded__ event is being thrown in order to notify that the load process is being finished. +> + + + + + + +# See Also +* [Overview]({%slug winforms/virtualgrid/save-and-load-layout/overview%}) + diff --git a/controls/virtualgrid/save-and-load-layout/overview.md b/controls/virtualgrid/features/save-and-load-layout/overview.md similarity index 96% rename from controls/virtualgrid/save-and-load-layout/overview.md rename to controls/virtualgrid/features/save-and-load-layout/overview.md index 104b197cf..e51c8c22a 100644 --- a/controls/virtualgrid/save-and-load-layout/overview.md +++ b/controls/virtualgrid/features/save-and-load-layout/overview.md @@ -1,101 +1,101 @@ ---- -title: Overview -page_title: Save and Load Layout - RadVirtualGrid -description: Save/Load layout functionality gives your applications the opportunity to preserve user grid settings such as column order and restore them later. -slug: winforms/virtualgrid/save-and-load-layout/overview -tags: save-and-load-layout -published: True -position: 0 ---- - -# WinForms VirtualGrid Overview - -Save/Load layout functionality gives your applications the opportunity to preserve user grid settings such as column order and restore them later. Those layout settings are written in a XML file. - -Here is a sample demonstrating how you can implement a *Save Layout* button event handler: - -#### Save layout - -{{source=..\SamplesCS\VirtualGrid\SaveLoadLayout\VirtualGridSaveLoadLayout.cs region=SaveLayout}} -{{source=..\SamplesVB\VirtualGrid\SaveLoadLayout\VirtualGridSaveLoadLayout.vb region=SaveLayout}} - -````C# -private void SaveButton_Click(object sender, EventArgs e) -{ - string s = "default.xml"; - SaveFileDialog dialog = new SaveFileDialog(); - dialog.Filter = "xml files (*.xml)|*.xml|All files (*.*)|*.*"; - dialog.Title = "Select a xml file"; - if (dialog.ShowDialog() == DialogResult.OK) - { - s = dialog.FileName; - } - this.radVirtualGrid1.SaveLayout(s); -} - -```` -````VB.NET -Private Sub SaveButton_Click(sender As Object, e As EventArgs) Handles RadButton1.Click - Dim s As String = "default.xml" - Dim dialog As New SaveFileDialog() - dialog.Filter = "xml files (*.xml)|*.xml|All files (*.*)|*.*" - dialog.Title = "Select a xml file" - If dialog.ShowDialog() = DialogResult.OK Then - s = dialog.FileName - End If - Me.RadVirtualGrid1.SaveLayout(s) -End Sub - -```` - -{{endregion}} - -The code snippets below demonstrates how you can implement a *Load Layout* button event handler:  - -#### Load layout - -{{source=..\SamplesCS\VirtualGrid\SaveLoadLayout\VirtualGridSaveLoadLayout.cs region=LoadLayout}} -{{source=..\SamplesVB\VirtualGrid\SaveLoadLayout\VirtualGridSaveLoadLayout.vb region=LoadLayout}} - -````C# -private void LoadButton_Click(object sender, EventArgs e) -{ - string s = "default.xml"; - OpenFileDialog dialog = new OpenFileDialog(); - dialog.Filter = "xml files (*.xml)|*.xml|All files (*.*)|*.*"; - dialog.Title = "Select a xml file"; - if (dialog.ShowDialog() == DialogResult.OK) - { - s = dialog.FileName; - } - this.radVirtualGrid1.LoadLayout(s); -} - -```` -````VB.NET -Private Sub LoadButton_Click(sender As Object, e As EventArgs) Handles RadButton2.Click - Dim s As String = "default.xml" - Dim dialog As New OpenFileDialog() - dialog.Filter = "xml files (*.xml)|*.xml|All files (*.*)|*.*" - dialog.Title = "Select a xml file" - If dialog.ShowDialog() = DialogResult.OK Then - s = dialog.FileName - End If - Me.RadVirtualGrid1.LoadLayout(s) -End Sub - -```` - -{{endregion}} - ->note Once the layout is being loaded the __LayoutLoaded__ event is being thrown in order to notify that the load process is being finished. -> - - - - - - -# See Also -* [Advanced]({%slug winforms/virtualgrid/save-and-load-layout/advanced%}) - +--- +title: Overview +page_title: Save and Load Layout - RadVirtualGrid +description: Save/Load layout functionality gives your applications the opportunity to preserve user grid settings such as column order and restore them later. +slug: winforms/virtualgrid/save-and-load-layout/overview +tags: save-and-load-layout +published: True +position: 0 +--- + +# WinForms VirtualGrid Overview + +Save/Load layout functionality gives your applications the opportunity to preserve user grid settings such as column order and restore them later. Those layout settings are written in a XML file. + +Here is a sample demonstrating how you can implement a *Save Layout* button event handler: + +#### Save layout + +{{source=..\SamplesCS\VirtualGrid\SaveLoadLayout\VirtualGridSaveLoadLayout.cs region=SaveLayout}} +{{source=..\SamplesVB\VirtualGrid\SaveLoadLayout\VirtualGridSaveLoadLayout.vb region=SaveLayout}} + +````C# +private void SaveButton_Click(object sender, EventArgs e) +{ + string s = "default.xml"; + SaveFileDialog dialog = new SaveFileDialog(); + dialog.Filter = "xml files (*.xml)|*.xml|All files (*.*)|*.*"; + dialog.Title = "Select a xml file"; + if (dialog.ShowDialog() == DialogResult.OK) + { + s = dialog.FileName; + } + this.radVirtualGrid1.SaveLayout(s); +} + +```` +````VB.NET +Private Sub SaveButton_Click(sender As Object, e As EventArgs) Handles RadButton1.Click + Dim s As String = "default.xml" + Dim dialog As New SaveFileDialog() + dialog.Filter = "xml files (*.xml)|*.xml|All files (*.*)|*.*" + dialog.Title = "Select a xml file" + If dialog.ShowDialog() = DialogResult.OK Then + s = dialog.FileName + End If + Me.RadVirtualGrid1.SaveLayout(s) +End Sub + +```` + +{{endregion}} + +The code snippets below demonstrates how you can implement a *Load Layout* button event handler:  + +#### Load layout + +{{source=..\SamplesCS\VirtualGrid\SaveLoadLayout\VirtualGridSaveLoadLayout.cs region=LoadLayout}} +{{source=..\SamplesVB\VirtualGrid\SaveLoadLayout\VirtualGridSaveLoadLayout.vb region=LoadLayout}} + +````C# +private void LoadButton_Click(object sender, EventArgs e) +{ + string s = "default.xml"; + OpenFileDialog dialog = new OpenFileDialog(); + dialog.Filter = "xml files (*.xml)|*.xml|All files (*.*)|*.*"; + dialog.Title = "Select a xml file"; + if (dialog.ShowDialog() == DialogResult.OK) + { + s = dialog.FileName; + } + this.radVirtualGrid1.LoadLayout(s); +} + +```` +````VB.NET +Private Sub LoadButton_Click(sender As Object, e As EventArgs) Handles RadButton2.Click + Dim s As String = "default.xml" + Dim dialog As New OpenFileDialog() + dialog.Filter = "xml files (*.xml)|*.xml|All files (*.*)|*.*" + dialog.Title = "Select a xml file" + If dialog.ShowDialog() = DialogResult.OK Then + s = dialog.FileName + End If + Me.RadVirtualGrid1.LoadLayout(s) +End Sub + +```` + +{{endregion}} + +>note Once the layout is being loaded the __LayoutLoaded__ event is being thrown in order to notify that the load process is being finished. +> + + + + + + +# See Also +* [Advanced]({%slug winforms/virtualgrid/save-and-load-layout/advanced%}) + diff --git a/controls/virtualgrid/scrolling.md b/controls/virtualgrid/features/scrolling.md similarity index 96% rename from controls/virtualgrid/scrolling.md rename to controls/virtualgrid/features/scrolling.md index 9e0c3ce63..9667627d0 100644 --- a/controls/virtualgrid/scrolling.md +++ b/controls/virtualgrid/features/scrolling.md @@ -1,92 +1,92 @@ ---- -title: Scrolling -page_title: Scrolling - WinForms VirtualGrid Control -description: Get familiar with the different supported scrolling modes in WinForms VirtualGrid. -slug: winforms/virtualgrid/scrolling -tags: virtualgrid, scrolling -published: True -position: 17 ---- - -# Scrolling - -__RadVirtualGrid__ allows three types of scroll modes: - -* __Smooth:__ Sets scrolling by pixel, meaning that an item can be partially visible. - -* __Discrete:__ Defines scrolling by only one item at a time. - -* __Deferred:__ Does not cause GUI updates until the user finishes the scrolling operation. - ->caption Figure 1: Smooth Scrolling - -![WinForms RadVirtualGrid Smooth Scrolling](images/virtualgrid-scrolling001.gif) - - -{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridResizingRows.cs region=SmoothScrolling}} -{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridResizingRows.vb region=SmoothScrolling}} -````C# -this.radVirtualGrid1.TableElement.RowScroller.ScrollMode = ItemScrollerScrollModes.Smooth; - -```` -````VB.NET -Me.RadVirtualGrid1.TableElement.RowScroller.ScrollMode = ItemScrollerScrollModes.Smooth - -```` - - - -{{endregion}} - ->caption Figure 2: Discrete Scrolling - -![WinForms RadVirtualGrid Discrete Scrolling](images/virtualgrid-scrolling002.gif) - -{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridResizingRows.cs region=DiscreteScrolling}} -{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridResizingRows.vb region=DiscreteScrolling}} -````C# -this.radVirtualGrid1.TableElement.RowScroller.ScrollMode = ItemScrollerScrollModes.Discrete; - -```` -````VB.NET -Me.RadVirtualGrid1.TableElement.RowScroller.ScrollMode = ItemScrollerScrollModes.Discrete - -```` - - - -{{endregion}} - ->caption Figure 3: Deferred Scrolling - -![WinForms RadVirtualGrid Deferred Scrolling](images/virtualgrid-scrolling003.gif) - -{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridResizingRows.cs region=DeferredScrolling}} -{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridResizingRows.vb region=DeferredScrolling}} -````C# -this.radVirtualGrid1.TableElement.RowScroller.ScrollMode = ItemScrollerScrollModes.Deferred; - -```` -````VB.NET -Me.RadVirtualGrid1.TableElement.RowScroller.ScrollMode = ItemScrollerScrollModes.Deferred - -```` - - - -{{endregion}} - - -The __RadVirtualGrid.UseScrollBarsInHierarchy__ property is responsible for defining whether vertical scrollbars will appear for the inner child views. By default the property is set to *false*. - - - -# See Also -* [Busy Indicators]({%slug winforms/virtualgrid/busy-indicators%}) - -* [Copy/Paste/Cut]({%slug winforms/virtualgrid/copy-paste-cut%}) - -* [Getting Started]({%slug winforms/virtualgrid/getting-started%}) - -* [Overview]({%slug winforms/virtualgrid%}) - +--- +title: Scrolling +page_title: Scrolling - WinForms VirtualGrid Control +description: Get familiar with the different supported scrolling modes in WinForms VirtualGrid. +slug: winforms/virtualgrid/scrolling +tags: virtualgrid, scrolling +published: True +position: 9 +--- + +# Scrolling + +__RadVirtualGrid__ allows three types of scroll modes: + +* __Smooth:__ Sets scrolling by pixel, meaning that an item can be partially visible. + +* __Discrete:__ Defines scrolling by only one item at a time. + +* __Deferred:__ Does not cause GUI updates until the user finishes the scrolling operation. + +>caption Figure 1: Smooth Scrolling + +![WinForms RadVirtualGrid Smooth Scrolling](images/virtualgrid-scrolling001.gif) + + +{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridResizingRows.cs region=SmoothScrolling}} +{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridResizingRows.vb region=SmoothScrolling}} +````C# +this.radVirtualGrid1.TableElement.RowScroller.ScrollMode = ItemScrollerScrollModes.Smooth; + +```` +````VB.NET +Me.RadVirtualGrid1.TableElement.RowScroller.ScrollMode = ItemScrollerScrollModes.Smooth + +```` + + + +{{endregion}} + +>caption Figure 2: Discrete Scrolling + +![WinForms RadVirtualGrid Discrete Scrolling](images/virtualgrid-scrolling002.gif) + +{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridResizingRows.cs region=DiscreteScrolling}} +{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridResizingRows.vb region=DiscreteScrolling}} +````C# +this.radVirtualGrid1.TableElement.RowScroller.ScrollMode = ItemScrollerScrollModes.Discrete; + +```` +````VB.NET +Me.RadVirtualGrid1.TableElement.RowScroller.ScrollMode = ItemScrollerScrollModes.Discrete + +```` + + + +{{endregion}} + +>caption Figure 3: Deferred Scrolling + +![WinForms RadVirtualGrid Deferred Scrolling](images/virtualgrid-scrolling003.gif) + +{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridResizingRows.cs region=DeferredScrolling}} +{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridResizingRows.vb region=DeferredScrolling}} +````C# +this.radVirtualGrid1.TableElement.RowScroller.ScrollMode = ItemScrollerScrollModes.Deferred; + +```` +````VB.NET +Me.RadVirtualGrid1.TableElement.RowScroller.ScrollMode = ItemScrollerScrollModes.Deferred + +```` + + + +{{endregion}} + + +The __RadVirtualGrid.UseScrollBarsInHierarchy__ property is responsible for defining whether vertical scrollbars will appear for the inner child views. By default the property is set to *false*. + + + +# See Also +* [Busy Indicators]({%slug winforms/virtualgrid/busy-indicators%}) + +* [Copy/Paste/Cut]({%slug winforms/virtualgrid/copy-paste-cut%}) + +* [Getting Started]({%slug winforms/virtualgrid/getting-started%}) + +* [Overview]({%slug winforms/virtualgrid%}) + diff --git a/controls/virtualgrid/selection/images/virtualgrid-multi-selection001.png b/controls/virtualgrid/features/selection/images/virtualgrid-multi-selection001.png similarity index 100% rename from controls/virtualgrid/selection/images/virtualgrid-multi-selection001.png rename to controls/virtualgrid/features/selection/images/virtualgrid-multi-selection001.png diff --git a/controls/virtualgrid/selection/images/virtualgrid-multi-selection002.png b/controls/virtualgrid/features/selection/images/virtualgrid-multi-selection002.png similarity index 100% rename from controls/virtualgrid/selection/images/virtualgrid-multi-selection002.png rename to controls/virtualgrid/features/selection/images/virtualgrid-multi-selection002.png diff --git a/controls/virtualgrid/selection/images/virtualgrid-selection001.png b/controls/virtualgrid/features/selection/images/virtualgrid-selection001.png similarity index 100% rename from controls/virtualgrid/selection/images/virtualgrid-selection001.png rename to controls/virtualgrid/features/selection/images/virtualgrid-selection001.png diff --git a/controls/virtualgrid/selection/images/virtualgrid-selection002.png b/controls/virtualgrid/features/selection/images/virtualgrid-selection002.png similarity index 100% rename from controls/virtualgrid/selection/images/virtualgrid-selection002.png rename to controls/virtualgrid/features/selection/images/virtualgrid-selection002.png diff --git a/controls/virtualgrid/selection/multi-select.md b/controls/virtualgrid/features/selection/multi-select.md similarity index 97% rename from controls/virtualgrid/selection/multi-select.md rename to controls/virtualgrid/features/selection/multi-select.md index eee9637c1..ff0780ad3 100644 --- a/controls/virtualgrid/selection/multi-select.md +++ b/controls/virtualgrid/features/selection/multi-select.md @@ -1,75 +1,75 @@ ---- -title: Multiple Selection -page_title: Multiple Selection - RadVirtualGrid -description: RadVirtualGrid allows the user to select more than one item at a time from the displayed data. -slug: winforms/virtualgrid/selection/multiple-selection -tags: virtualgrid, multiple selection -published: True -position: 1 ---- - -# Multiple Selection - -__RadVirtualGrid__ allows the user to select more than one item at a time from the displayed data. By default, this functionality is disabled and in order to turn it on, you have to set the __MultiSelect__ property to *true*. - -## Multiple Row Selection - -In order to enable multiple row selection, after setting the __MultiSelect__ property to *true*, you have to set the __SelectionMode__ to __FullRowSelect__: - -{{source=..\SamplesCS\VirtualGrid\VirtualGridSelection.cs region=multiSelect}} -{{source=..\SamplesVB\VirtualGrid\VirtualGridSelection.vb region=multiSelect}} -````C# - -radVirtualGrid1.MultiSelect = true; -radVirtualGrid1.SelectionMode = VirtualGridSelectionMode.FullRowSelect; - -```` -````VB.NET -radVirtualGrid1.MultiSelect = True -radVirtualGrid1.SelectionMode = VirtualGridSelectionMode.FullRowSelect - -```` - -{{endregion}} - -When these settings are applied, you have several options to make a multiple selection: -* Press Ctrl + A to select all rows. -* Hold the __Ctrl__ key and click the rows that you want to select. -* In order to mark a block selection, mark the first row of the desired selection, hold __Shift__ and click on the last row of the desired selection. - -![WinForms RadVirtualGrid Multiple Row Selection](images/virtualgrid-multi-selection001.png) - - -## Multiple Cell Selection - -In order to enable multiple cell selection, after setting the __MultiSelect__ property to true, you have to set the __SelectionMode__ to __CellSelect__: - -{{source=..\SamplesCS\VirtualGrid\VirtualGridSelection.cs region=multiCell}} -{{source=..\SamplesVB\VirtualGrid\VirtualGridSelection.vb region=multiCell}} -````C# - -radVirtualGrid1.MultiSelect = true; -radVirtualGrid1.SelectionMode = VirtualGridSelectionMode.CellSelect; - -```` -````VB.NET -radVirtualGrid1.MultiSelect = True -radVirtualGrid1.SelectionMode = VirtualGridSelectionMode.CellSelect - -```` - -{{endregion}} - -Once you have applied these setting, the options for selection are: - -* Press __Ctrl__ + __A__ to select all cells. -* Holding the __Ctrl__ key and click the cells that you want to select. -* In order to mark a block selection, mark the first cell of the desired selection, hold __Shift__ and click on the last cell of the desired selection. Please note that this will select all the cells in the rectangle between the first and the second selected cell. - -![WinForms RadVirtualGrid Multiple Cell Selection](images/virtualgrid-multi-selection002.png) - -# See Also -* [Selecting Cells Programmatically]({%slug winforms/virtualgrid/selection/selecting-cells-programmatically%}) - -* [Selection]({%slug winforms/virtualgrid/selection/selection%}) - +--- +title: Multiple Selection +page_title: Multiple Selection - RadVirtualGrid +description: RadVirtualGrid allows the user to select more than one item at a time from the displayed data. +slug: winforms/virtualgrid/selection/multiple-selection +tags: virtualgrid, multiple selection +published: True +position: 1 +--- + +# Multiple Selection + +__RadVirtualGrid__ allows the user to select more than one item at a time from the displayed data. By default, this functionality is disabled and in order to turn it on, you have to set the __MultiSelect__ property to *true*. + +## Multiple Row Selection + +In order to enable multiple row selection, after setting the __MultiSelect__ property to *true*, you have to set the __SelectionMode__ to __FullRowSelect__: + +{{source=..\SamplesCS\VirtualGrid\VirtualGridSelection.cs region=multiSelect}} +{{source=..\SamplesVB\VirtualGrid\VirtualGridSelection.vb region=multiSelect}} +````C# + +radVirtualGrid1.MultiSelect = true; +radVirtualGrid1.SelectionMode = VirtualGridSelectionMode.FullRowSelect; + +```` +````VB.NET +radVirtualGrid1.MultiSelect = True +radVirtualGrid1.SelectionMode = VirtualGridSelectionMode.FullRowSelect + +```` + +{{endregion}} + +When these settings are applied, you have several options to make a multiple selection: +* Press Ctrl + A to select all rows. +* Hold the __Ctrl__ key and click the rows that you want to select. +* In order to mark a block selection, mark the first row of the desired selection, hold __Shift__ and click on the last row of the desired selection. + +![WinForms RadVirtualGrid Multiple Row Selection](images/virtualgrid-multi-selection001.png) + + +## Multiple Cell Selection + +In order to enable multiple cell selection, after setting the __MultiSelect__ property to true, you have to set the __SelectionMode__ to __CellSelect__: + +{{source=..\SamplesCS\VirtualGrid\VirtualGridSelection.cs region=multiCell}} +{{source=..\SamplesVB\VirtualGrid\VirtualGridSelection.vb region=multiCell}} +````C# + +radVirtualGrid1.MultiSelect = true; +radVirtualGrid1.SelectionMode = VirtualGridSelectionMode.CellSelect; + +```` +````VB.NET +radVirtualGrid1.MultiSelect = True +radVirtualGrid1.SelectionMode = VirtualGridSelectionMode.CellSelect + +```` + +{{endregion}} + +Once you have applied these setting, the options for selection are: + +* Press __Ctrl__ + __A__ to select all cells. +* Holding the __Ctrl__ key and click the cells that you want to select. +* In order to mark a block selection, mark the first cell of the desired selection, hold __Shift__ and click on the last cell of the desired selection. Please note that this will select all the cells in the rectangle between the first and the second selected cell. + +![WinForms RadVirtualGrid Multiple Cell Selection](images/virtualgrid-multi-selection002.png) + +# See Also +* [Selecting Cells Programmatically]({%slug winforms/virtualgrid/selection/selecting-cells-programmatically%}) + +* [Selection]({%slug winforms/virtualgrid/selection/selection%}) + diff --git a/controls/virtualgrid/selection/selecting-progrmmatically.md b/controls/virtualgrid/features/selection/selecting-progrmmatically.md similarity index 96% rename from controls/virtualgrid/selection/selecting-progrmmatically.md rename to controls/virtualgrid/features/selection/selecting-progrmmatically.md index 9d5d6a3c7..21db08366 100644 --- a/controls/virtualgrid/selection/selecting-progrmmatically.md +++ b/controls/virtualgrid/features/selection/selecting-progrmmatically.md @@ -1,58 +1,58 @@ ---- -title: Selecting Cells Programmatically -page_title: Selecting Cells Programmatically - RadVirtualGrid -description: This article shows how you can manipulate the selection in the code behind. -slug: winforms/virtualgrid/selection/selecting-cells-programmatically -tags: virtualgrid, selecting, cells, programmatically -published: True -position: 2 ---- - -# Selecting Cells Programmatically - -## Single Cell Select - -You can use the following method to select a cell in the code: - -{{source=..\SamplesCS\VirtualGrid\VirtualGridSelection.cs region=changeCurentCell}} -{{source=..\SamplesVB\VirtualGrid\VirtualGridSelection.vb region=changeCurentCell}} -````C# -this.radVirtualGrid1.SelectCell(5, 2); - -```` -````VB.NET -Me.radVirtualGrid1.SelectCell(5, 2) - -```` - -{{endregion}} - - -## Multiple Cells Select - -You can select multiple cells with code as well. This can be achieved by using the __BeginSelection__ and __ExtendCurrentRegion__ methods. For example: - -{{source=..\SamplesCS\VirtualGrid\VirtualGridSelection.cs region=selectMultipleCells}} -{{source=..\SamplesVB\VirtualGrid\VirtualGridSelection.vb region=selectMultipleCells}} -````C# -radVirtualGrid1.VirtualGridElement.Selection.BeginSelection(3, 1, radVirtualGrid1.MasterViewInfo, true); -radVirtualGrid1.VirtualGridElement.Selection.ExtendCurrentRegion(6, 3); - -```` -````VB.NET -radVirtualGrid1.VirtualGridElement.Selection.BeginSelection(3, 1, radVirtualGrid1.MasterViewInfo, True) -radVirtualGrid1.VirtualGridElement.Selection.ExtendCurrentRegion(6, 3) - -```` - -{{endregion}} - - - - - -# See Also -* [Multiple Selection]({%slug winforms/virtualgrid/selection/multiple-selection%}) - -* [Selection]({%slug winforms/virtualgrid/selection/selection%}) - +--- +title: Selecting Cells Programmatically +page_title: Selecting Cells Programmatically - RadVirtualGrid +description: This article shows how you can manipulate the selection in the code behind. +slug: winforms/virtualgrid/selection/selecting-cells-programmatically +tags: virtualgrid, selecting, cells, programmatically +published: True +position: 2 +--- + +# Selecting Cells Programmatically + +## Single Cell Select + +You can use the following method to select a cell in the code: + +{{source=..\SamplesCS\VirtualGrid\VirtualGridSelection.cs region=changeCurentCell}} +{{source=..\SamplesVB\VirtualGrid\VirtualGridSelection.vb region=changeCurentCell}} +````C# +this.radVirtualGrid1.SelectCell(5, 2); + +```` +````VB.NET +Me.radVirtualGrid1.SelectCell(5, 2) + +```` + +{{endregion}} + + +## Multiple Cells Select + +You can select multiple cells with code as well. This can be achieved by using the __BeginSelection__ and __ExtendCurrentRegion__ methods. For example: + +{{source=..\SamplesCS\VirtualGrid\VirtualGridSelection.cs region=selectMultipleCells}} +{{source=..\SamplesVB\VirtualGrid\VirtualGridSelection.vb region=selectMultipleCells}} +````C# +radVirtualGrid1.VirtualGridElement.Selection.BeginSelection(3, 1, radVirtualGrid1.MasterViewInfo, true); +radVirtualGrid1.VirtualGridElement.Selection.ExtendCurrentRegion(6, 3); + +```` +````VB.NET +radVirtualGrid1.VirtualGridElement.Selection.BeginSelection(3, 1, radVirtualGrid1.MasterViewInfo, True) +radVirtualGrid1.VirtualGridElement.Selection.ExtendCurrentRegion(6, 3) + +```` + +{{endregion}} + + + + + +# See Also +* [Multiple Selection]({%slug winforms/virtualgrid/selection/multiple-selection%}) + +* [Selection]({%slug winforms/virtualgrid/selection/selection%}) + diff --git a/controls/virtualgrid/selection/selection.md b/controls/virtualgrid/features/selection/selection.md similarity index 97% rename from controls/virtualgrid/selection/selection.md rename to controls/virtualgrid/features/selection/selection.md index 16b569f0b..7bc810c7d 100644 --- a/controls/virtualgrid/selection/selection.md +++ b/controls/virtualgrid/features/selection/selection.md @@ -1,74 +1,74 @@ ---- -title: Selection -page_title: Selection - RadVirtualGrid -description: RadVirtualGrid provides you with a selection functionality, which allows the user to select one or more items (rows or cells). -slug: winforms/virtualgrid/selection/selection -tags: virtualgrid, selection -published: True -position: 0 ---- - - -# Basic Selection - -RadVirtualGrid provides you with a selection functionality, which allows the user to select one or more items (rows or cells) from the data displayed by the control. - -## Row Selection - -To select an item in __RadVirtualGrid__ click in the rectangle area of the desired row. By default the user can select only one row (the entire row is selected). - -![WinForms RadVirtualGrid Row Selection](images/virtualgrid-selection001.png) - - -## Cell Selection -You can modify __RadVirtualGrid__ to select single cell instead of entire row by setting its __SelectionMode__ property to __CellSelect__: - -{{source=..\SamplesCS\VirtualGrid\VirtualGridSelection.cs region=cellSelect}} -{{source=..\SamplesVB\VirtualGrid\VirtualGridSelection.vb region=cellSelect}} -````C# - -this.radVirtualGrid1.SelectionMode = VirtualGridSelectionMode.CellSelect; - -```` -````VB.NET -Me.radVirtualGrid1.SelectionMode = VirtualGridSelectionMode.CellSelect - -```` - -{{endregion}} - -After setting this property, to select a cell in __RadVirtualGrid__, click the desired cell. - -![WinForms RadVirtualGrid Cell Selection](images/virtualgrid-selection002.png) - -## Events - -The following events will fire in case the selection is changed: -* __SelectionChanging:__ fires before the selection is changed. -* __SelectionChanged:__ fires after the selection is changed. -* __CurrentCellChanging:__ fires before the current cell is changed. -* __CurrentCellChanged:__ fires after the current cell is changed. - -## API - -Using the __Selection__ property of the __VirtualGridElement__ you can perform various selection operations. Here are the most common methods which this property exposes: -* __ClearSelection:__ clears all selected items. -* __IsSelected:__ you can use the this method to check if particular cell is selected. -* __RowContainsSelection:__ use this method to check if a particular row contains the selected cell. -* __SelectAll:__ use this method to select all cells. - -In addition, you can use the following properties to get the selected rows or cells: - -* __CurrentRowIndex:__ gets the current row index. - -* __CurrentColumnIndex:__ gets the current selected column index. - -* __SelectedRegion:__ returns the first selected region. - -* __SelectedRegions:__ returns all selected regions. - -# See Also -* [Multiple Selection]({%slug winforms/virtualgrid/selection/multiple-selection%}) - -* [Selecting Cells Programmatically]({%slug winforms/virtualgrid/selection/selecting-cells-programmatically%}) - +--- +title: Selection +page_title: Selection - RadVirtualGrid +description: RadVirtualGrid provides you with a selection functionality, which allows the user to select one or more items (rows or cells). +slug: winforms/virtualgrid/selection/selection +tags: virtualgrid, selection +published: True +position: 0 +--- + + +# Basic Selection + +RadVirtualGrid provides you with a selection functionality, which allows the user to select one or more items (rows or cells) from the data displayed by the control. + +## Row Selection + +To select an item in __RadVirtualGrid__ click in the rectangle area of the desired row. By default the user can select only one row (the entire row is selected). + +![WinForms RadVirtualGrid Row Selection](images/virtualgrid-selection001.png) + + +## Cell Selection +You can modify __RadVirtualGrid__ to select single cell instead of entire row by setting its __SelectionMode__ property to __CellSelect__: + +{{source=..\SamplesCS\VirtualGrid\VirtualGridSelection.cs region=cellSelect}} +{{source=..\SamplesVB\VirtualGrid\VirtualGridSelection.vb region=cellSelect}} +````C# + +this.radVirtualGrid1.SelectionMode = VirtualGridSelectionMode.CellSelect; + +```` +````VB.NET +Me.radVirtualGrid1.SelectionMode = VirtualGridSelectionMode.CellSelect + +```` + +{{endregion}} + +After setting this property, to select a cell in __RadVirtualGrid__, click the desired cell. + +![WinForms RadVirtualGrid Cell Selection](images/virtualgrid-selection002.png) + +## Events + +The following events will fire in case the selection is changed: +* __SelectionChanging:__ fires before the selection is changed. +* __SelectionChanged:__ fires after the selection is changed. +* __CurrentCellChanging:__ fires before the current cell is changed. +* __CurrentCellChanged:__ fires after the current cell is changed. + +## API + +Using the __Selection__ property of the __VirtualGridElement__ you can perform various selection operations. Here are the most common methods which this property exposes: +* __ClearSelection:__ clears all selected items. +* __IsSelected:__ you can use the this method to check if particular cell is selected. +* __RowContainsSelection:__ use this method to check if a particular row contains the selected cell. +* __SelectAll:__ use this method to select all cells. + +In addition, you can use the following properties to get the selected rows or cells: + +* __CurrentRowIndex:__ gets the current row index. + +* __CurrentColumnIndex:__ gets the current selected column index. + +* __SelectedRegion:__ returns the first selected region. + +* __SelectedRegions:__ returns all selected regions. + +# See Also +* [Multiple Selection]({%slug winforms/virtualgrid/selection/multiple-selection%}) + +* [Selecting Cells Programmatically]({%slug winforms/virtualgrid/selection/selecting-cells-programmatically%}) + diff --git a/controls/virtualgrid/sorting/images/setting-sorting-programmatically001.png b/controls/virtualgrid/features/sorting/images/setting-sorting-programmatically001.png similarity index 100% rename from controls/virtualgrid/sorting/images/setting-sorting-programmatically001.png rename to controls/virtualgrid/features/sorting/images/setting-sorting-programmatically001.png diff --git a/controls/virtualgrid/sorting/images/virtualgrid-sorting001.png b/controls/virtualgrid/features/sorting/images/virtualgrid-sorting001.png similarity index 100% rename from controls/virtualgrid/sorting/images/virtualgrid-sorting001.png rename to controls/virtualgrid/features/sorting/images/virtualgrid-sorting001.png diff --git a/controls/virtualgrid/sorting/images/virtualgrid-sorting002.png b/controls/virtualgrid/features/sorting/images/virtualgrid-sorting002.png similarity index 100% rename from controls/virtualgrid/sorting/images/virtualgrid-sorting002.png rename to controls/virtualgrid/features/sorting/images/virtualgrid-sorting002.png diff --git a/controls/virtualgrid/sorting/setting-sorting-programmatically.md b/controls/virtualgrid/features/sorting/setting-sorting-programmatically.md similarity index 97% rename from controls/virtualgrid/sorting/setting-sorting-programmatically.md rename to controls/virtualgrid/features/sorting/setting-sorting-programmatically.md index 5d0b07ec4..648dc7bc3 100644 --- a/controls/virtualgrid/sorting/setting-sorting-programmatically.md +++ b/controls/virtualgrid/features/sorting/setting-sorting-programmatically.md @@ -1,55 +1,55 @@ ---- -title: Setting Sorting Programmatically -page_title: Setting Sorting Programmatically - RadVirtualGrid -description: The SortDescriptors collection allows you to use descriptors which define the sorting property and the sorting direction. -slug: winforms/virtualgrid/sorting/setting-sorting-programmatically -tags: virtualgrid, sorting -published: True -position: 1 ---- - -# Setting Sorting Programmatically - -__RadVirtualGrid__ includes __SortDescriptors__ property. This collection allows you to use descriptors which define the sorting property and the sorting direction. - ->caution Before proceeding with this article, please refer to the [Sorting Overview]({%slug winforms/virtualgrid/working-with-data/populating-with-data%}) article which demonstrates how to fill data in __RadVirtualGrid__. - -Here is how to create and add two __SortDescriptors__. The __PropertyName__ property defines the property, by which the data will be sorted, and the __SortDirection__ property allows you to define the sort direction. - -![WinForms RadVirtualGrid Setting Sorting Programmatically](images/setting-sorting-programmatically001.png) - -#### Using SortDescriptor - -{{source=..\SamplesCS\VirtualGrid\Sorting\VirtualGridSorting.cs region=RunTimeSorting}} -{{source=..\SamplesVB\VirtualGrid\Sorting\VirtualGridSorting.vb region=RunTimeSorting}} - -````C# -SortDescriptor descriptorContactTitle = new SortDescriptor(); -descriptorContactTitle.PropertyName = "ContactTitle"; -descriptorContactTitle.Direction = ListSortDirection.Ascending; -SortDescriptor descriptorContactName = new SortDescriptor(); -descriptorContactName.PropertyName = "ContactName"; -descriptorContactName.Direction = ListSortDirection.Descending; -this.radVirtualGrid1.SortDescriptors.Add(descriptorContactTitle); -this.radVirtualGrid1.SortDescriptors.Add(descriptorContactName); - -```` -````VB.NET -Dim descriptorContactTitle As New SortDescriptor() -descriptorContactTitle.PropertyName = "ContactTitle" -descriptorContactTitle.Direction = ListSortDirection.Ascending -Dim descriptorContactName As New SortDescriptor() -descriptorContactName.PropertyName = "ContactName" -descriptorContactName.Direction = ListSortDirection.Descending -Me.RadVirtualGrid1.SortDescriptors.Add(descriptorContactTitle) -Me.RadVirtualGrid1.SortDescriptors.Add(descriptorContactName) - -```` - -{{endregion}} - ->note The RadVirtualGrid.__AllowMultiColumnSorting__ property should be set to *true* in order to achieve multiple columns sorting. Otherwise, __RadVirtualGrid__ will be sorted by a single column. - -# See Also -* [Sorting Overview]({%slug winforms/virtualgrid/sorting/sorting%}) - +--- +title: Setting Sorting Programmatically +page_title: Setting Sorting Programmatically - RadVirtualGrid +description: The SortDescriptors collection allows you to use descriptors which define the sorting property and the sorting direction. +slug: winforms/virtualgrid/sorting/setting-sorting-programmatically +tags: virtualgrid, sorting +published: True +position: 1 +--- + +# Setting Sorting Programmatically + +__RadVirtualGrid__ includes __SortDescriptors__ property. This collection allows you to use descriptors which define the sorting property and the sorting direction. + +>caution Before proceeding with this article, please refer to the [Sorting Overview]({%slug winforms/virtualgrid/working-with-data/populating-with-data%}) article which demonstrates how to fill data in __RadVirtualGrid__. + +Here is how to create and add two __SortDescriptors__. The __PropertyName__ property defines the property, by which the data will be sorted, and the __SortDirection__ property allows you to define the sort direction. + +![WinForms RadVirtualGrid Setting Sorting Programmatically](images/setting-sorting-programmatically001.png) + +#### Using SortDescriptor + +{{source=..\SamplesCS\VirtualGrid\Sorting\VirtualGridSorting.cs region=RunTimeSorting}} +{{source=..\SamplesVB\VirtualGrid\Sorting\VirtualGridSorting.vb region=RunTimeSorting}} + +````C# +SortDescriptor descriptorContactTitle = new SortDescriptor(); +descriptorContactTitle.PropertyName = "ContactTitle"; +descriptorContactTitle.Direction = ListSortDirection.Ascending; +SortDescriptor descriptorContactName = new SortDescriptor(); +descriptorContactName.PropertyName = "ContactName"; +descriptorContactName.Direction = ListSortDirection.Descending; +this.radVirtualGrid1.SortDescriptors.Add(descriptorContactTitle); +this.radVirtualGrid1.SortDescriptors.Add(descriptorContactName); + +```` +````VB.NET +Dim descriptorContactTitle As New SortDescriptor() +descriptorContactTitle.PropertyName = "ContactTitle" +descriptorContactTitle.Direction = ListSortDirection.Ascending +Dim descriptorContactName As New SortDescriptor() +descriptorContactName.PropertyName = "ContactName" +descriptorContactName.Direction = ListSortDirection.Descending +Me.RadVirtualGrid1.SortDescriptors.Add(descriptorContactTitle) +Me.RadVirtualGrid1.SortDescriptors.Add(descriptorContactName) + +```` + +{{endregion}} + +>note The RadVirtualGrid.__AllowMultiColumnSorting__ property should be set to *true* in order to achieve multiple columns sorting. Otherwise, __RadVirtualGrid__ will be sorted by a single column. + +# See Also +* [Sorting Overview]({%slug winforms/virtualgrid/sorting/sorting%}) + diff --git a/controls/virtualgrid/sorting/sorting.md b/controls/virtualgrid/features/sorting/sorting.md similarity index 97% rename from controls/virtualgrid/sorting/sorting.md rename to controls/virtualgrid/features/sorting/sorting.md index 537fa9685..463211df9 100644 --- a/controls/virtualgrid/sorting/sorting.md +++ b/controls/virtualgrid/features/sorting/sorting.md @@ -1,319 +1,319 @@ ---- -title: Sorting Overview -page_title: Sorting Overview - RadVirtualGrid -description: This article shows how you can configure and use the built-in sorting functionality. -slug: winforms/virtualgrid/sorting/sorting -tags: virtualgrid, sorting -published: True -position: 0 ---- - -# Sorting Overview - -__RadVirtualGrid__ supports data sorting. Set the RadVirtualGrid.__AllowSorting__ property to *true* in order to enable the user sorting feature. To enable the multiple columns sorting, you should set the RadVirtualGrid.__AllowMultiColumnSorting__ property to *true*: - -![WinForms RadVirtualGrid AllowSorting](images/virtualgrid-sorting001.png) - -#### Enabling the user sorting - -{{source=..\SamplesCS\VirtualGrid\Sorting\VirtualGridSorting.cs region=AllowSorting}} -{{source=..\SamplesVB\VirtualGrid\Sorting\VirtualGridSorting.vb region=AllowSorting}} - -````C# -this.radVirtualGrid1.AllowSorting = true; - -```` -````VB.NET -Me.RadVirtualGrid1.AllowSorting = True - -```` - -{{endregion}} - -![WinForms RadVirtualGrid AllowMultiColumnSorting](images/virtualgrid-sorting002.png) - -#### Enabling multiple columns sorting - -{{source=..\SamplesCS\VirtualGrid\Sorting\VirtualGridSorting.cs region=MultiColumnSorting}} -{{source=..\SamplesVB\VirtualGrid\Sorting\VirtualGridSorting.vb region=MultiColumnSorting}} - -````C# -this.radVirtualGrid1.AllowMultiColumnSorting = true; - -```` -````VB.NET -Me.RadVirtualGrid1.AllowMultiColumnSorting = True - -```` - -{{endregion}} - -It is necessary to handle the __SortChanged__ event which is fired once the __SortDescriptors__ collection is changed. In the event handler you should extract the sorted data from the external data source. - ->note Please refer to the [Populating with data]({%slug winforms/virtualgrid/working-with-data/populating-with-data%}) help article which demonstrates how to extract the necessary data and fill the virtual grid with data. - - -The following example demonstrates how to achieve sorting functionality in __RadVirtualGrid__ filled with Northwind.Customers table: - -{{source=..\SamplesCS\VirtualGrid\Sorting\VirtualGridSorting.cs region=Sorting}} -{{source=..\SamplesVB\VirtualGrid\Sorting\VirtualGridSorting.vb region=Sorting}} - -````C# - -private void radVirtualGrid1_SortChanged(object sender, VirtualGridEventArgs e) -{ - SelectData(); -} - -private readonly string selectCommand = "SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, PostalCode FROM Customers"; -private string[] columnNames = new string[] { "CompanyName", "ContactName", "ContactTitle", "Address", "PostalCode" }; -List data = new List(); - -private void SelectData() -{ - string sortExpression = this.radVirtualGrid1.SortDescriptors.Expression; - if (!string.IsNullOrEmpty(sortExpression)) - { - sortExpression = "ORDER BY " + sortExpression; - } - - string commandString = String.Format("{0} {1}", selectCommand, sortExpression); - using (System.Data.OleDb.OleDbCommand command = new System.Data.OleDb.OleDbCommand(commandString)) - { - command.Connection = new System.Data.OleDb.OleDbConnection(Settings.Default.NwindConnectionString); - command.Connection.Open(); - IDataReader reader = command.ExecuteReader(); - data.Clear(); - - while (reader.Read()) - { - Customer customer = new Customer( - Convert.ToString(reader[0]), - Convert.ToString(reader[1]), - Convert.ToString(reader[2]), - Convert.ToString(reader[3]), - Convert.ToString(reader[4]), - Convert.ToString(reader[5])); - data.Add(customer); - } - - command.Connection.Close(); - } - - this.radVirtualGrid1.RowCount = data.Count; -} - -private void radVirtualGrid1_CellValueNeeded(object sender, Telerik.WinControls.UI.VirtualGridCellValueNeededEventArgs e) -{ - if (e.ColumnIndex < 0) - return; - if (e.RowIndex == RadVirtualGrid.HeaderRowIndex) - { - e.Value = columnNames[e.ColumnIndex]; - } - - if (e.RowIndex < 0) - { - e.FieldName = columnNames[e.ColumnIndex]; - } - - if (e.RowIndex >= 0 && e.RowIndex < data.Count) - { - e.Value = data[e.RowIndex][e.ColumnIndex]; - } -} - -private void VirtualGridSorting_Load(object sender, EventArgs e) -{ - this.radVirtualGrid1.ColumnCount = columnNames.Length; - this.radVirtualGrid1.CellValueNeeded += radVirtualGrid1_CellValueNeeded; - SelectData(); -} - -public class Customer -{ - public string CustomerId { get; set; } - - public string CompanyName { get; set; } - - public string ContactName { get; set; } - - public string ContactTitle { get; set; } - - public string Address { get; set; } - - public string PostalCode { get; set; } - - public Customer(string customerId, string companyName, string contactName, string contactTitle, string address, string postalCode) - { - this.CustomerId = customerId; - this.CompanyName = companyName; - this.ContactName = contactName; - this.ContactTitle = contactTitle; - this.Address = address; - this.PostalCode = postalCode; - } - - public string this[int i] - { - get - { - switch (i) - { - case 0: - return CompanyName; - case 1: - return ContactName; - case 2: - return ContactTitle; - case 3: - return Address; - case 4: - return PostalCode; - default: - return String.Empty; - } - } - } -} - -```` -````VB.NET -Private Sub radVirtualGrid1_SortChanged(sender As Object, e As VirtualGridEventArgs) - SelectData() -End Sub -Private ReadOnly selectCommand As String = "SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, PostalCode FROM Customers" -Private columnNames As String() = New String() {"CompanyName", "ContactName", "ContactTitle", "Address", "PostalCode"} -Private data As New List(Of Customer)() -Private Sub SelectData() - Dim sortExpression As String = Me.RadVirtualGrid1.SortDescriptors.Expression - If Not String.IsNullOrEmpty(sortExpression) Then - sortExpression = Convert.ToString("ORDER BY ") & sortExpression - End If - Dim commandString As String = [String].Format("{0} {1}", selectCommand, sortExpression) - Using command As New System.Data.OleDb.OleDbCommand(commandString) - command.Connection = New System.Data.OleDb.OleDbConnection(My.Settings.NwindConnectionString) - command.Connection.Open() - Dim reader As IDataReader = command.ExecuteReader() - data.Clear() - While reader.Read() - Dim customer As New Customer(Convert.ToString(reader(0)), Convert.ToString(reader(1)), Convert.ToString(reader(2)), _ - Convert.ToString(reader(3)), Convert.ToString(reader(4)), Convert.ToString(reader(5))) - data.Add(customer) - End While - command.Connection.Close() - End Using - Me.RadVirtualGrid1.RowCount = data.Count -End Sub -Private Sub radVirtualGrid1_CellValueNeeded(sender As Object, e As Telerik.WinControls.UI.VirtualGridCellValueNeededEventArgs) - If e.ColumnIndex < 0 Then - Return - End If - If e.RowIndex = RadVirtualGrid.HeaderRowIndex Then - e.Value = columnNames(e.ColumnIndex) - End If - If e.RowIndex < 0 Then - e.FieldName = columnNames(e.ColumnIndex) - End If - If e.RowIndex >= 0 AndAlso e.RowIndex < data.Count Then - e.Value = data(e.RowIndex)(e.ColumnIndex) - End If -End Sub -Private Sub VirtualGridSorting_Load(sender As Object, e As EventArgs) Handles Me.Load - Me.RadVirtualGrid1.ColumnCount = columnNames.Length - AddHandler Me.RadVirtualGrid1.CellValueNeeded, AddressOf radVirtualGrid1_CellValueNeeded - SelectData() -End Sub -Public Class Customer - Public Property CustomerId() As String - Get - Return m_CustomerId - End Get - Set(value As String) - m_CustomerId = value - End Set - End Property - Private m_CustomerId As String - Public Property CompanyName() As String - Get - Return m_CompanyName - End Get - Set(value As String) - m_CompanyName = value - End Set - End Property - Private m_CompanyName As String - Public Property ContactName() As String - Get - Return m_ContactName - End Get - Set(value As String) - m_ContactName = value - End Set - End Property - Private m_ContactName As String - Public Property ContactTitle() As String - Get - Return m_ContactTitle - End Get - Set(value As String) - m_ContactTitle = value - End Set - End Property - Private m_ContactTitle As String - Public Property Address() As String - Get - Return m_Address - End Get - Set(value As String) - m_Address = value - End Set - End Property - Private m_Address As String - Public Property PostalCode() As String - Get - Return m_PostalCode - End Get - Set(value As String) - m_PostalCode = value - End Set - End Property - Private m_PostalCode As String - Public Sub New(customerId As String, companyName As String, contactName As String, contactTitle As String, address As String, postalCode As String) - Me.CustomerId = customerId - Me.CompanyName = companyName - Me.ContactName = contactName - Me.ContactTitle = contactTitle - Me.Address = address - Me.PostalCode = postalCode - End Sub - Default Public ReadOnly Property Item(i As Integer) As String - Get - Select Case i - Case 0 - Return CompanyName - Case 1 - Return ContactName - Case 2 - Return ContactTitle - Case 3 - Return Address - Case 4 - Return PostalCode - Case Else - Return [String].Empty - End Select - End Get - End Property -End Class - -```` - -{{endregion}} - - - - -# See Also -* [Setting Sorting Programmatically]({%slug winforms/virtualgrid/sorting/setting-sorting-programmatically%}) - +--- +title: Sorting Overview +page_title: Sorting Overview - RadVirtualGrid +description: This article shows how you can configure and use the built-in sorting functionality. +slug: winforms/virtualgrid/sorting/sorting +tags: virtualgrid, sorting +published: True +position: 0 +--- + +# Sorting Overview + +__RadVirtualGrid__ supports data sorting. Set the RadVirtualGrid.__AllowSorting__ property to *true* in order to enable the user sorting feature. To enable the multiple columns sorting, you should set the RadVirtualGrid.__AllowMultiColumnSorting__ property to *true*: + +![WinForms RadVirtualGrid AllowSorting](images/virtualgrid-sorting001.png) + +#### Enabling the user sorting + +{{source=..\SamplesCS\VirtualGrid\Sorting\VirtualGridSorting.cs region=AllowSorting}} +{{source=..\SamplesVB\VirtualGrid\Sorting\VirtualGridSorting.vb region=AllowSorting}} + +````C# +this.radVirtualGrid1.AllowSorting = true; + +```` +````VB.NET +Me.RadVirtualGrid1.AllowSorting = True + +```` + +{{endregion}} + +![WinForms RadVirtualGrid AllowMultiColumnSorting](images/virtualgrid-sorting002.png) + +#### Enabling multiple columns sorting + +{{source=..\SamplesCS\VirtualGrid\Sorting\VirtualGridSorting.cs region=MultiColumnSorting}} +{{source=..\SamplesVB\VirtualGrid\Sorting\VirtualGridSorting.vb region=MultiColumnSorting}} + +````C# +this.radVirtualGrid1.AllowMultiColumnSorting = true; + +```` +````VB.NET +Me.RadVirtualGrid1.AllowMultiColumnSorting = True + +```` + +{{endregion}} + +It is necessary to handle the __SortChanged__ event which is fired once the __SortDescriptors__ collection is changed. In the event handler you should extract the sorted data from the external data source. + +>note Please refer to the [Populating with data]({%slug winforms/virtualgrid/working-with-data/populating-with-data%}) help article which demonstrates how to extract the necessary data and fill the virtual grid with data. + + +The following example demonstrates how to achieve sorting functionality in __RadVirtualGrid__ filled with Northwind.Customers table: + +{{source=..\SamplesCS\VirtualGrid\Sorting\VirtualGridSorting.cs region=Sorting}} +{{source=..\SamplesVB\VirtualGrid\Sorting\VirtualGridSorting.vb region=Sorting}} + +````C# + +private void radVirtualGrid1_SortChanged(object sender, VirtualGridEventArgs e) +{ + SelectData(); +} + +private readonly string selectCommand = "SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, PostalCode FROM Customers"; +private string[] columnNames = new string[] { "CompanyName", "ContactName", "ContactTitle", "Address", "PostalCode" }; +List data = new List(); + +private void SelectData() +{ + string sortExpression = this.radVirtualGrid1.SortDescriptors.Expression; + if (!string.IsNullOrEmpty(sortExpression)) + { + sortExpression = "ORDER BY " + sortExpression; + } + + string commandString = String.Format("{0} {1}", selectCommand, sortExpression); + using (System.Data.OleDb.OleDbCommand command = new System.Data.OleDb.OleDbCommand(commandString)) + { + command.Connection = new System.Data.OleDb.OleDbConnection(Settings.Default.NwindConnectionString); + command.Connection.Open(); + IDataReader reader = command.ExecuteReader(); + data.Clear(); + + while (reader.Read()) + { + Customer customer = new Customer( + Convert.ToString(reader[0]), + Convert.ToString(reader[1]), + Convert.ToString(reader[2]), + Convert.ToString(reader[3]), + Convert.ToString(reader[4]), + Convert.ToString(reader[5])); + data.Add(customer); + } + + command.Connection.Close(); + } + + this.radVirtualGrid1.RowCount = data.Count; +} + +private void radVirtualGrid1_CellValueNeeded(object sender, Telerik.WinControls.UI.VirtualGridCellValueNeededEventArgs e) +{ + if (e.ColumnIndex < 0) + return; + if (e.RowIndex == RadVirtualGrid.HeaderRowIndex) + { + e.Value = columnNames[e.ColumnIndex]; + } + + if (e.RowIndex < 0) + { + e.FieldName = columnNames[e.ColumnIndex]; + } + + if (e.RowIndex >= 0 && e.RowIndex < data.Count) + { + e.Value = data[e.RowIndex][e.ColumnIndex]; + } +} + +private void VirtualGridSorting_Load(object sender, EventArgs e) +{ + this.radVirtualGrid1.ColumnCount = columnNames.Length; + this.radVirtualGrid1.CellValueNeeded += radVirtualGrid1_CellValueNeeded; + SelectData(); +} + +public class Customer +{ + public string CustomerId { get; set; } + + public string CompanyName { get; set; } + + public string ContactName { get; set; } + + public string ContactTitle { get; set; } + + public string Address { get; set; } + + public string PostalCode { get; set; } + + public Customer(string customerId, string companyName, string contactName, string contactTitle, string address, string postalCode) + { + this.CustomerId = customerId; + this.CompanyName = companyName; + this.ContactName = contactName; + this.ContactTitle = contactTitle; + this.Address = address; + this.PostalCode = postalCode; + } + + public string this[int i] + { + get + { + switch (i) + { + case 0: + return CompanyName; + case 1: + return ContactName; + case 2: + return ContactTitle; + case 3: + return Address; + case 4: + return PostalCode; + default: + return String.Empty; + } + } + } +} + +```` +````VB.NET +Private Sub radVirtualGrid1_SortChanged(sender As Object, e As VirtualGridEventArgs) + SelectData() +End Sub +Private ReadOnly selectCommand As String = "SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, PostalCode FROM Customers" +Private columnNames As String() = New String() {"CompanyName", "ContactName", "ContactTitle", "Address", "PostalCode"} +Private data As New List(Of Customer)() +Private Sub SelectData() + Dim sortExpression As String = Me.RadVirtualGrid1.SortDescriptors.Expression + If Not String.IsNullOrEmpty(sortExpression) Then + sortExpression = Convert.ToString("ORDER BY ") & sortExpression + End If + Dim commandString As String = [String].Format("{0} {1}", selectCommand, sortExpression) + Using command As New System.Data.OleDb.OleDbCommand(commandString) + command.Connection = New System.Data.OleDb.OleDbConnection(My.Settings.NwindConnectionString) + command.Connection.Open() + Dim reader As IDataReader = command.ExecuteReader() + data.Clear() + While reader.Read() + Dim customer As New Customer(Convert.ToString(reader(0)), Convert.ToString(reader(1)), Convert.ToString(reader(2)), _ + Convert.ToString(reader(3)), Convert.ToString(reader(4)), Convert.ToString(reader(5))) + data.Add(customer) + End While + command.Connection.Close() + End Using + Me.RadVirtualGrid1.RowCount = data.Count +End Sub +Private Sub radVirtualGrid1_CellValueNeeded(sender As Object, e As Telerik.WinControls.UI.VirtualGridCellValueNeededEventArgs) + If e.ColumnIndex < 0 Then + Return + End If + If e.RowIndex = RadVirtualGrid.HeaderRowIndex Then + e.Value = columnNames(e.ColumnIndex) + End If + If e.RowIndex < 0 Then + e.FieldName = columnNames(e.ColumnIndex) + End If + If e.RowIndex >= 0 AndAlso e.RowIndex < data.Count Then + e.Value = data(e.RowIndex)(e.ColumnIndex) + End If +End Sub +Private Sub VirtualGridSorting_Load(sender As Object, e As EventArgs) Handles Me.Load + Me.RadVirtualGrid1.ColumnCount = columnNames.Length + AddHandler Me.RadVirtualGrid1.CellValueNeeded, AddressOf radVirtualGrid1_CellValueNeeded + SelectData() +End Sub +Public Class Customer + Public Property CustomerId() As String + Get + Return m_CustomerId + End Get + Set(value As String) + m_CustomerId = value + End Set + End Property + Private m_CustomerId As String + Public Property CompanyName() As String + Get + Return m_CompanyName + End Get + Set(value As String) + m_CompanyName = value + End Set + End Property + Private m_CompanyName As String + Public Property ContactName() As String + Get + Return m_ContactName + End Get + Set(value As String) + m_ContactName = value + End Set + End Property + Private m_ContactName As String + Public Property ContactTitle() As String + Get + Return m_ContactTitle + End Get + Set(value As String) + m_ContactTitle = value + End Set + End Property + Private m_ContactTitle As String + Public Property Address() As String + Get + Return m_Address + End Get + Set(value As String) + m_Address = value + End Set + End Property + Private m_Address As String + Public Property PostalCode() As String + Get + Return m_PostalCode + End Get + Set(value As String) + m_PostalCode = value + End Set + End Property + Private m_PostalCode As String + Public Sub New(customerId As String, companyName As String, contactName As String, contactTitle As String, address As String, postalCode As String) + Me.CustomerId = customerId + Me.CompanyName = companyName + Me.ContactName = contactName + Me.ContactTitle = contactTitle + Me.Address = address + Me.PostalCode = postalCode + End Sub + Default Public ReadOnly Property Item(i As Integer) As String + Get + Select Case i + Case 0 + Return CompanyName + Case 1 + Return ContactName + Case 2 + Return ContactTitle + Case 3 + Return Address + Case 4 + Return PostalCode + Case Else + Return [String].Empty + End Select + End Get + End Property +End Class + +```` + +{{endregion}} + + + + +# See Also +* [Setting Sorting Programmatically]({%slug winforms/virtualgrid/sorting/setting-sorting-programmatically%}) + diff --git a/controls/virtualgrid/getting-started.md b/controls/virtualgrid/getting-started.md index d5b5b4dfc..241fc7379 100644 --- a/controls/virtualgrid/getting-started.md +++ b/controls/virtualgrid/getting-started.md @@ -5,7 +5,7 @@ description: Learn how one can use WinForms VirtualGrid with a list which contai slug: winforms/virtualgrid/getting-started tags: virtualgrid, started published: True -position: 1 +position: 2 --- # Getting Started with WinForms VirtualGrid diff --git a/controls/virtualgrid/table-element-propertires.md b/controls/virtualgrid/table-element-propertires.md index 224c986d6..0142b9c77 100644 --- a/controls/virtualgrid/table-element-propertires.md +++ b/controls/virtualgrid/table-element-propertires.md @@ -5,7 +5,7 @@ description: The TableElement allows to to set a lot of useful styling and layou slug: winforms/radvirtualgrid/customizing-appearance/themes tags: virtualgrid, themes published: True -position: 13 +position: 4 --- # TableElement Properties diff --git a/controls/virtualgrid/cells/creating-custom-cells.md b/controls/virtualgrid/visual-elements/cells/creating-custom-cells.md similarity index 97% rename from controls/virtualgrid/cells/creating-custom-cells.md rename to controls/virtualgrid/visual-elements/cells/creating-custom-cells.md index 85541d223..29db6044f 100644 --- a/controls/virtualgrid/cells/creating-custom-cells.md +++ b/controls/virtualgrid/visual-elements/cells/creating-custom-cells.md @@ -1,313 +1,313 @@ ---- -title: Creating custom cells -page_title: Creating custom cells - RadVirtualGrid -description: This article describes how one can create custom checkbox cell and add it to RadVirtualGrid. -slug: winforms/virtualgrid/cells/creating-custom-cells -tags: virtualgrid, cells, custom -published: True -position: 3 ---- - -# Custom data cell - -__RadVirtualGrid__ provides a convenient way to create custom cells. __RadVirtualGrid__ supports a powerful and flexible mechanism for creating cell types with custom content elements, functionality and properties. - -|Default VirtualGridCellElement for the *Discontinued* column|Custom VirtualGridCheckBoxCellElement for the *Discontinued* column| -|----|----| -|![WinForms RadVirtualGrid Default column](images/virtualgrid-creating-custom-cells001.png)|![WinForms RadVirtualGrid Custom column](images/virtualgrid-creating-custom-cells002.png)| - -You can use the following approach to create a custom data cell with a check box in it: - -1\. Create a class for the cell which derives from __VirtualGridCellElement__. - -2\. Create the __RadCheckBoxElement__ and add it as a child of the custom cell. You can achieve this by overriding the __CreateChildElements__ method. - -3\. Override the __UpdateInfo__ method to update the check box according to the cell value. - -4\. The custom cell will have no styles, because there are no defined styles for its type in the themes. You can apply the __VirtualGridCellElement__’s styles to it by defining its __ThemeEffectiveType__. - -5\. Override the __IsCompatible__ method and return *true* only for the compatible column and rows. This will prevent the cell from being unintentionally reused by other columns. - ->note Thanks to the UI virtualization mechanism of __RadVirtualGrid__, only the currently visible cells are created and they are further reused when needed during operations like scrolling, filtering, etc. It is necessary to specify that our custom cell is applicable only to the desired column, e.g. ColumnIndex = 3. For this purpose, it is necessary to override the **IsCompatible** method and return *true* only if the cell is relevant for this column and row. This will ensure that the custom cell will be used only in this particular column and it won't be reused in other columns. However, the cell elements belonging to the rest of the columns, by default, are applicable to the custom column as well. This requires creating a default VirtualGridCellElement which IsCompatible with all the columns but our custom column with ColumnIndex = 3. - - A cell element is reused in other rows or columns if it is compatible for them. - -6\. In order to center the check box within the cell element, you should override the __ArrangeOverride__ method and arrange the __RadCheckBoxElement__ in the middle. - -7\. Subscribe to the RadCheckBoxElement.__ToggleStateChanged__ event in order to synchronize the cell's value with the check box. - -#### Custom VirtualGridCellElement - -{{source=..\SamplesCS\VirtualGrid\Cells\VirtualGridCustomCells.cs region=CustomCell}} -{{source=..\SamplesVB\VirtualGrid\Cells\VirtualGridCustomCells.vb region=CustomCell}} - - -````C# - -public class MyVirtualGridCheckBoxCellElement : VirtualGridCellElement -{ - private RadCheckBoxElement checkBox; - - protected override void CreateChildElements() - { - base.CreateChildElements(); - - this.checkBox = new RadCheckBoxElement(); - this.Children.Add(this.checkBox); - } - - protected override void UpdateInfo(VirtualGridCellValueNeededEventArgs args) - { - base.UpdateInfo(args); - - if (args.Value is bool) - { - this.checkBox.Checked = (bool)args.Value; - } - - this.Text = String.Empty; - } - - public override bool IsCompatible(int data, object context) - { - VirtualGridRowElement rowElement = context as VirtualGridRowElement; - - return data == 3 && rowElement.RowIndex >= 0; - } - - public override void Attach(int data, object context) - { - base.Attach(data, context); - - this.checkBox.ToggleStateChanged += checkBox_ToggleStateChanged; - } - - public override void Detach() - { - this.checkBox.ToggleStateChanged -= checkBox_ToggleStateChanged; - - base.Detach(); - } - - protected override SizeF ArrangeOverride(SizeF finalSize) - { - SizeF size = base.ArrangeOverride(finalSize); - - this.checkBox.Arrange(new RectangleF((finalSize.Width - this.checkBox.DesiredSize.Width) / 2f, - (finalSize.Height - this.checkBox.DesiredSize.Height) / 2f, this.checkBox.DesiredSize.Width, this.checkBox.DesiredSize.Height)); - - return size; - } - - protected override Type ThemeEffectiveType - { - get - { - return typeof(VirtualGridCellElement); - } - } - - private void checkBox_ToggleStateChanged(object sender, StateChangedEventArgs args) - { - this.TableElement.GridElement.SetCellValue(this.checkBox.Checked, this.RowIndex, this.ColumnIndex, this.ViewInfo); - } -} - -```` -````VB.NET -Public Class MyVirtualGridCheckBoxCellElement - Inherits VirtualGridCellElement - Private checkBox As RadCheckBoxElement - Protected Overrides Sub CreateChildElements() - MyBase.CreateChildElements() - Me.checkBox = New RadCheckBoxElement() - Me.Children.Add(Me.checkBox) - End Sub - Protected Overrides Sub UpdateInfo(args As VirtualGridCellValueNeededEventArgs) - MyBase.UpdateInfo(args) - If TypeOf args.Value Is Boolean Then - Me.checkBox.Checked = CBool(args.Value) - End If - Me.Text = [String].Empty - End Sub - Public Overrides Function IsCompatible(data As Integer, context As Object) As Boolean - Dim rowElement As VirtualGridRowElement = TryCast(context, VirtualGridRowElement) - Return data = 3 AndAlso rowElement.RowIndex = 0 - End Function - Public Overrides Sub Attach(data As Integer, context As Object) - MyBase.Attach(data, context) - AddHandler Me.checkBox.ToggleStateChanged, AddressOf checkBox_ToggleStateChanged - End Sub - Public Overrides Sub Detach() - RemoveHandler Me.checkBox.ToggleStateChanged, AddressOf checkBox_ToggleStateChanged - MyBase.Detach() - End Sub - Protected Overrides Function ArrangeOverride(finalSize As SizeF) As SizeF - Dim size As SizeF = MyBase.ArrangeOverride(finalSize) - Me.checkBox.Arrange(New RectangleF((finalSize.Width - Me.checkBox.DesiredSize.Width) / 2.0F, _ - (finalSize.Height - Me.checkBox.DesiredSize.Height) / 2.0F, Me.checkBox.DesiredSize.Width, Me.checkBox.DesiredSize.Height)) - Return size - End Function - Protected Overrides ReadOnly Property ThemeEffectiveType() As Type - Get - Return GetType(VirtualGridCellElement) - End Get - End Property - Private Sub checkBox_ToggleStateChanged(sender As Object, args As StateChangedEventArgs) - Me.TableElement.GridElement.SetCellValue(Me.checkBox.Checked, Me.RowIndex, Me.ColumnIndex, Me.ViewInfo) - End Sub -End Class - -```` - -{{endregion}} - -8\. Once, you are ready with the implementation for the custom data cell, you should create the default cell: - -{{source=..\SamplesCS\VirtualGrid\Cells\VirtualGridCustomCells.cs region=UsingDefaultCustomCell}} -{{source=..\SamplesVB\VirtualGrid\Cells\VirtualGridCustomCells.vb region=UsingDefaultCustomCell}} - -````C# -public class DefaultVirtualGridCellElement : VirtualGridCellElement -{ - public override bool IsCompatible(int data, object context) - { - VirtualGridRowElement rowElement = context as VirtualGridRowElement; - - return data != 3 && rowElement.RowIndex >= 0; - } - protected override Type ThemeEffectiveType - { - get - { - return typeof(VirtualGridCellElement); - } - } -} - -```` -````VB.NET -Public Class DefaultVirtualGridCellElement - Inherits VirtualGridCellElement - - Public Overrides Function IsCompatible(ByVal data As Integer, ByVal context As Object) As Boolean - Dim rowElement As VirtualGridRowElement = TryCast(context, VirtualGridRowElement) - Return data <> 3 AndAlso rowElement.RowIndex >= 0 - End Function - - Protected Overrides ReadOnly Property ThemeEffectiveType As Type - Get - Return GetType(VirtualGridCellElement) - End Get - End Property -End Class - -```` - -{{endregion}} - -9\. Subscribe to the __CreateCellElement__ event where we should replace the default __VirtualGridCellElement__ with the custom one: - -#### Apply the custom cell - -{{source=..\SamplesCS\VirtualGrid\Cells\VirtualGridCustomCells.cs region=ApplyCustomCell}} -{{source=..\SamplesVB\VirtualGrid\Cells\VirtualGridCustomCells.vb region=ApplyCustomCell}} - - -````C# -private void radVirtualGrid1_CreateCellElement(object sender, VirtualGridCreateCellEventArgs e) -{ - if (e.CellType == typeof(VirtualGridCellElement)) - { - if (e.ColumnIndex == 3 && e.RowIndex >= 0) - { - e.CellElement = new MyVirtualGridCheckBoxCellElement(); - } - else - { - e.CellElement = new DefaultVirtualGridCellElement(); - } - } -} - -```` -````VB.NET -Private Sub radVirtualGrid1_CreateCellElement(ByVal sender As Object, ByVal e As VirtualGridCreateCellEventArgs) - If e.CellType = GetType(VirtualGridCellElement) Then - If e.ColumnIndex = 3 AndAlso e.RowIndex >= 0 Then - e.CellElement = New MyVirtualGridCheckBoxCellElement() - Else - e.CellElement = New DefaultVirtualGridCellElement() - End If - End If -End Sub - - -```` - -{{endregion}} - -9\. Register the custom cell for the specified column index: - -{{source=..\SamplesCS\VirtualGrid\Cells\VirtualGridCustomCells.cs region=RegisterCustomColumn}} -{{source=..\SamplesVB\VirtualGrid\Cells\VirtualGridCustomCells.vb region=RegisterCustomColumn}} - - -````C# - -this.radVirtualGrid1.MasterViewInfo.RegisterCustomColumn(3); - -```` -````VB.NET -Me.RadVirtualGrid1.MasterViewInfo.RegisterCustomColumn(3) - -```` - -{{endregion}} - ->note Use the __UnregisterCustomColumn__ method if you need to unregister the custom cell for the specified column index. You can detect whether a custom cell is used for a certain column index by using the RadVirtualGrid.MasterViewInfo.__IsCustomColumn__ method. - -10\. The last thing we need to do, is to prevent entering edit mode for the custom cell. For this purpose, cancel the __EditorRequired__ event: - -#### Prevent entering edit mode - -{{source=..\SamplesCS\VirtualGrid\Cells\VirtualGridCustomCells.cs region=CancelEditor}} -{{source=..\SamplesVB\VirtualGrid\Cells\VirtualGridCustomCells.vb region=CancelEditor}} - - -````C# - -private void radVirtualGrid1_EditorRequired(object sender, VirtualGridEditorRequiredEventArgs e) -{ - if (e.ColumnIndex == 3) - { - e.Cancel = true; - } -} - -```` -````VB.NET -Private Sub radVirtualGrid1_EditorRequired(sender As Object, e As VirtualGridEditorRequiredEventArgs) - If e.ColumnIndex = 3 Then - e.Cancel = True - End If -End Sub - -```` - -{{endregion}} - - ->note The __RadCheckBoxElement__ can be replaced with any other __RadElement__ according to the user's requirement. - - - -# See Also -* [Formatting Data Cells]({%slug winforms/virtualgrid/cells/formatting-data-cells%}) - -* [Formatting System Cells]({%slug winforms/virtualgrid/cells/formatting-system-cells%}) - -* [ToolTips]({%slug winforms/virtualgrid/cells/tooltips%}) - -* [Filter by using a CheckBox in RadVirtualGrid]({%slug filter-by-checkbox-in-virtualgrid%}) - +--- +title: Creating custom cells +page_title: Creating custom cells - RadVirtualGrid +description: This article describes how one can create custom checkbox cell and add it to RadVirtualGrid. +slug: winforms/virtualgrid/cells/creating-custom-cells +tags: virtualgrid, cells, custom +published: True +position: 3 +--- + +# Custom data cell + +__RadVirtualGrid__ provides a convenient way to create custom cells. __RadVirtualGrid__ supports a powerful and flexible mechanism for creating cell types with custom content elements, functionality and properties. + +|Default VirtualGridCellElement for the *Discontinued* column|Custom VirtualGridCheckBoxCellElement for the *Discontinued* column| +|----|----| +|![WinForms RadVirtualGrid Default column](images/virtualgrid-creating-custom-cells001.png)|![WinForms RadVirtualGrid Custom column](images/virtualgrid-creating-custom-cells002.png)| + +You can use the following approach to create a custom data cell with a check box in it: + +1\. Create a class for the cell which derives from __VirtualGridCellElement__. + +2\. Create the __RadCheckBoxElement__ and add it as a child of the custom cell. You can achieve this by overriding the __CreateChildElements__ method. + +3\. Override the __UpdateInfo__ method to update the check box according to the cell value. + +4\. The custom cell will have no styles, because there are no defined styles for its type in the themes. You can apply the __VirtualGridCellElement__’s styles to it by defining its __ThemeEffectiveType__. + +5\. Override the __IsCompatible__ method and return *true* only for the compatible column and rows. This will prevent the cell from being unintentionally reused by other columns. + +>note Thanks to the UI virtualization mechanism of __RadVirtualGrid__, only the currently visible cells are created and they are further reused when needed during operations like scrolling, filtering, etc. It is necessary to specify that our custom cell is applicable only to the desired column, e.g. ColumnIndex = 3. For this purpose, it is necessary to override the **IsCompatible** method and return *true* only if the cell is relevant for this column and row. This will ensure that the custom cell will be used only in this particular column and it won't be reused in other columns. However, the cell elements belonging to the rest of the columns, by default, are applicable to the custom column as well. This requires creating a default VirtualGridCellElement which IsCompatible with all the columns but our custom column with ColumnIndex = 3. + + A cell element is reused in other rows or columns if it is compatible for them. + +6\. In order to center the check box within the cell element, you should override the __ArrangeOverride__ method and arrange the __RadCheckBoxElement__ in the middle. + +7\. Subscribe to the RadCheckBoxElement.__ToggleStateChanged__ event in order to synchronize the cell's value with the check box. + +#### Custom VirtualGridCellElement + +{{source=..\SamplesCS\VirtualGrid\Cells\VirtualGridCustomCells.cs region=CustomCell}} +{{source=..\SamplesVB\VirtualGrid\Cells\VirtualGridCustomCells.vb region=CustomCell}} + + +````C# + +public class MyVirtualGridCheckBoxCellElement : VirtualGridCellElement +{ + private RadCheckBoxElement checkBox; + + protected override void CreateChildElements() + { + base.CreateChildElements(); + + this.checkBox = new RadCheckBoxElement(); + this.Children.Add(this.checkBox); + } + + protected override void UpdateInfo(VirtualGridCellValueNeededEventArgs args) + { + base.UpdateInfo(args); + + if (args.Value is bool) + { + this.checkBox.Checked = (bool)args.Value; + } + + this.Text = String.Empty; + } + + public override bool IsCompatible(int data, object context) + { + VirtualGridRowElement rowElement = context as VirtualGridRowElement; + + return data == 3 && rowElement.RowIndex >= 0; + } + + public override void Attach(int data, object context) + { + base.Attach(data, context); + + this.checkBox.ToggleStateChanged += checkBox_ToggleStateChanged; + } + + public override void Detach() + { + this.checkBox.ToggleStateChanged -= checkBox_ToggleStateChanged; + + base.Detach(); + } + + protected override SizeF ArrangeOverride(SizeF finalSize) + { + SizeF size = base.ArrangeOverride(finalSize); + + this.checkBox.Arrange(new RectangleF((finalSize.Width - this.checkBox.DesiredSize.Width) / 2f, + (finalSize.Height - this.checkBox.DesiredSize.Height) / 2f, this.checkBox.DesiredSize.Width, this.checkBox.DesiredSize.Height)); + + return size; + } + + protected override Type ThemeEffectiveType + { + get + { + return typeof(VirtualGridCellElement); + } + } + + private void checkBox_ToggleStateChanged(object sender, StateChangedEventArgs args) + { + this.TableElement.GridElement.SetCellValue(this.checkBox.Checked, this.RowIndex, this.ColumnIndex, this.ViewInfo); + } +} + +```` +````VB.NET +Public Class MyVirtualGridCheckBoxCellElement + Inherits VirtualGridCellElement + Private checkBox As RadCheckBoxElement + Protected Overrides Sub CreateChildElements() + MyBase.CreateChildElements() + Me.checkBox = New RadCheckBoxElement() + Me.Children.Add(Me.checkBox) + End Sub + Protected Overrides Sub UpdateInfo(args As VirtualGridCellValueNeededEventArgs) + MyBase.UpdateInfo(args) + If TypeOf args.Value Is Boolean Then + Me.checkBox.Checked = CBool(args.Value) + End If + Me.Text = [String].Empty + End Sub + Public Overrides Function IsCompatible(data As Integer, context As Object) As Boolean + Dim rowElement As VirtualGridRowElement = TryCast(context, VirtualGridRowElement) + Return data = 3 AndAlso rowElement.RowIndex = 0 + End Function + Public Overrides Sub Attach(data As Integer, context As Object) + MyBase.Attach(data, context) + AddHandler Me.checkBox.ToggleStateChanged, AddressOf checkBox_ToggleStateChanged + End Sub + Public Overrides Sub Detach() + RemoveHandler Me.checkBox.ToggleStateChanged, AddressOf checkBox_ToggleStateChanged + MyBase.Detach() + End Sub + Protected Overrides Function ArrangeOverride(finalSize As SizeF) As SizeF + Dim size As SizeF = MyBase.ArrangeOverride(finalSize) + Me.checkBox.Arrange(New RectangleF((finalSize.Width - Me.checkBox.DesiredSize.Width) / 2.0F, _ + (finalSize.Height - Me.checkBox.DesiredSize.Height) / 2.0F, Me.checkBox.DesiredSize.Width, Me.checkBox.DesiredSize.Height)) + Return size + End Function + Protected Overrides ReadOnly Property ThemeEffectiveType() As Type + Get + Return GetType(VirtualGridCellElement) + End Get + End Property + Private Sub checkBox_ToggleStateChanged(sender As Object, args As StateChangedEventArgs) + Me.TableElement.GridElement.SetCellValue(Me.checkBox.Checked, Me.RowIndex, Me.ColumnIndex, Me.ViewInfo) + End Sub +End Class + +```` + +{{endregion}} + +8\. Once, you are ready with the implementation for the custom data cell, you should create the default cell: + +{{source=..\SamplesCS\VirtualGrid\Cells\VirtualGridCustomCells.cs region=UsingDefaultCustomCell}} +{{source=..\SamplesVB\VirtualGrid\Cells\VirtualGridCustomCells.vb region=UsingDefaultCustomCell}} + +````C# +public class DefaultVirtualGridCellElement : VirtualGridCellElement +{ + public override bool IsCompatible(int data, object context) + { + VirtualGridRowElement rowElement = context as VirtualGridRowElement; + + return data != 3 && rowElement.RowIndex >= 0; + } + protected override Type ThemeEffectiveType + { + get + { + return typeof(VirtualGridCellElement); + } + } +} + +```` +````VB.NET +Public Class DefaultVirtualGridCellElement + Inherits VirtualGridCellElement + + Public Overrides Function IsCompatible(ByVal data As Integer, ByVal context As Object) As Boolean + Dim rowElement As VirtualGridRowElement = TryCast(context, VirtualGridRowElement) + Return data <> 3 AndAlso rowElement.RowIndex >= 0 + End Function + + Protected Overrides ReadOnly Property ThemeEffectiveType As Type + Get + Return GetType(VirtualGridCellElement) + End Get + End Property +End Class + +```` + +{{endregion}} + +9\. Subscribe to the __CreateCellElement__ event where we should replace the default __VirtualGridCellElement__ with the custom one: + +#### Apply the custom cell + +{{source=..\SamplesCS\VirtualGrid\Cells\VirtualGridCustomCells.cs region=ApplyCustomCell}} +{{source=..\SamplesVB\VirtualGrid\Cells\VirtualGridCustomCells.vb region=ApplyCustomCell}} + + +````C# +private void radVirtualGrid1_CreateCellElement(object sender, VirtualGridCreateCellEventArgs e) +{ + if (e.CellType == typeof(VirtualGridCellElement)) + { + if (e.ColumnIndex == 3 && e.RowIndex >= 0) + { + e.CellElement = new MyVirtualGridCheckBoxCellElement(); + } + else + { + e.CellElement = new DefaultVirtualGridCellElement(); + } + } +} + +```` +````VB.NET +Private Sub radVirtualGrid1_CreateCellElement(ByVal sender As Object, ByVal e As VirtualGridCreateCellEventArgs) + If e.CellType = GetType(VirtualGridCellElement) Then + If e.ColumnIndex = 3 AndAlso e.RowIndex >= 0 Then + e.CellElement = New MyVirtualGridCheckBoxCellElement() + Else + e.CellElement = New DefaultVirtualGridCellElement() + End If + End If +End Sub + + +```` + +{{endregion}} + +9\. Register the custom cell for the specified column index: + +{{source=..\SamplesCS\VirtualGrid\Cells\VirtualGridCustomCells.cs region=RegisterCustomColumn}} +{{source=..\SamplesVB\VirtualGrid\Cells\VirtualGridCustomCells.vb region=RegisterCustomColumn}} + + +````C# + +this.radVirtualGrid1.MasterViewInfo.RegisterCustomColumn(3); + +```` +````VB.NET +Me.RadVirtualGrid1.MasterViewInfo.RegisterCustomColumn(3) + +```` + +{{endregion}} + +>note Use the __UnregisterCustomColumn__ method if you need to unregister the custom cell for the specified column index. You can detect whether a custom cell is used for a certain column index by using the RadVirtualGrid.MasterViewInfo.__IsCustomColumn__ method. + +10\. The last thing we need to do, is to prevent entering edit mode for the custom cell. For this purpose, cancel the __EditorRequired__ event: + +#### Prevent entering edit mode + +{{source=..\SamplesCS\VirtualGrid\Cells\VirtualGridCustomCells.cs region=CancelEditor}} +{{source=..\SamplesVB\VirtualGrid\Cells\VirtualGridCustomCells.vb region=CancelEditor}} + + +````C# + +private void radVirtualGrid1_EditorRequired(object sender, VirtualGridEditorRequiredEventArgs e) +{ + if (e.ColumnIndex == 3) + { + e.Cancel = true; + } +} + +```` +````VB.NET +Private Sub radVirtualGrid1_EditorRequired(sender As Object, e As VirtualGridEditorRequiredEventArgs) + If e.ColumnIndex = 3 Then + e.Cancel = True + End If +End Sub + +```` + +{{endregion}} + + +>note The __RadCheckBoxElement__ can be replaced with any other __RadElement__ according to the user's requirement. + + + +# See Also +* [Formatting Data Cells]({%slug winforms/virtualgrid/cells/formatting-data-cells%}) + +* [Formatting System Cells]({%slug winforms/virtualgrid/cells/formatting-system-cells%}) + +* [ToolTips]({%slug winforms/virtualgrid/cells/tooltips%}) + +* [Filter by using a CheckBox in RadVirtualGrid]({%slug filter-by-checkbox-in-virtualgrid%}) + diff --git a/controls/virtualgrid/cells/formatting-data-cells.md b/controls/virtualgrid/visual-elements/cells/formatting-data-cells.md similarity index 97% rename from controls/virtualgrid/cells/formatting-data-cells.md rename to controls/virtualgrid/visual-elements/cells/formatting-data-cells.md index 93fd35090..757dea6d9 100644 --- a/controls/virtualgrid/cells/formatting-data-cells.md +++ b/controls/virtualgrid/visual-elements/cells/formatting-data-cells.md @@ -1,74 +1,74 @@ ---- -title: Formatting Data Cells -page_title: Formatting Data Cells - RadVirtualGrid -description: This article describes how one can use the CellFormatting event to change the cells styles. -slug: winforms/virtualgrid/cells/formatting-data-cells -tags: virtualgrid, cells, formatting -published: True -position: 0 ---- - -# Formatting Data Cells - -The __CellFormatting__ event is used to add formatting to grid cells. For example, the code sample below changes the __ForeColor__, __BackColor__ and __GradientStyle__ in all data cells in the *ContactTitle* column if the cell value is *Owner*: - -![WinForms RadVirtualGrid Formatting Data Cells](images/virtualgrid-cells-formatting-data-cells001.png) - -{{source=..\SamplesCS\VirtualGrid\Cells\VirtualGridFormattingCells.cs region=FormattingCells}} -{{source=..\SamplesVB\VirtualGrid\Cells\VirtualGridFormattingCells.vb region=FormattingCells}} - -````C# - -private void radVirtualGrid1_CellFormatting(object sender, VirtualGridCellElementEventArgs e) -{ - if (e.CellElement.RowIndex > -1) - { - if (e.CellElement.ColumnIndex == 3 && e.CellElement.Value != null && e.CellElement.Value.ToString() == "Owner") - { - e.CellElement.DrawFill = true; - e.CellElement.BackColor = Color.Yellow; - e.CellElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid; - e.CellElement.ForeColor = Color.Red; - } - else - { - e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local); - e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local); - e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local); - e.CellElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local); - } - } -} - -```` -````VB.NET -Private Sub radVirtualGrid1_CellFormatting(sender As Object, e As VirtualGridCellElementEventArgs) - If e.CellElement.RowIndex > -1 Then - If e.CellElement.ColumnIndex = 3 AndAlso e.CellElement.Value IsNot Nothing _ - AndAlso e.CellElement.Value.ToString() = "Owner" Then - e.CellElement.DrawFill = True - e.CellElement.BackColor = Color.Yellow - e.CellElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid - e.CellElement.ForeColor = Color.Red - Else - e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local) - e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local) - e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local) - e.CellElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local) - End If - End If -End Sub - -```` - -{{endregion}} - ->caution Due to the UI virtualization in __RadVirtualGrid__, cell elements are created only for currently visible cells and are being reused during operations like scrolling, filtering, sorting and so on. In order to prevent applying the formatting to other columns' cell elements (because of the cell reuse) all customization should be reset for the rest of the cell elements. - -# See Also -* [Creating custom cells]({%slug winforms/virtualgrid/cells/creating-custom-cells%}) - -* [Formatting System Cells]({%slug winforms/virtualgrid/cells/formatting-system-cells%}) - -* [ToolTips]({%slug winforms/virtualgrid/cells/tooltips%}) - +--- +title: Formatting Data Cells +page_title: Formatting Data Cells - RadVirtualGrid +description: This article describes how one can use the CellFormatting event to change the cells styles. +slug: winforms/virtualgrid/cells/formatting-data-cells +tags: virtualgrid, cells, formatting +published: True +position: 0 +--- + +# Formatting Data Cells + +The __CellFormatting__ event is used to add formatting to grid cells. For example, the code sample below changes the __ForeColor__, __BackColor__ and __GradientStyle__ in all data cells in the *ContactTitle* column if the cell value is *Owner*: + +![WinForms RadVirtualGrid Formatting Data Cells](images/virtualgrid-cells-formatting-data-cells001.png) + +{{source=..\SamplesCS\VirtualGrid\Cells\VirtualGridFormattingCells.cs region=FormattingCells}} +{{source=..\SamplesVB\VirtualGrid\Cells\VirtualGridFormattingCells.vb region=FormattingCells}} + +````C# + +private void radVirtualGrid1_CellFormatting(object sender, VirtualGridCellElementEventArgs e) +{ + if (e.CellElement.RowIndex > -1) + { + if (e.CellElement.ColumnIndex == 3 && e.CellElement.Value != null && e.CellElement.Value.ToString() == "Owner") + { + e.CellElement.DrawFill = true; + e.CellElement.BackColor = Color.Yellow; + e.CellElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid; + e.CellElement.ForeColor = Color.Red; + } + else + { + e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local); + e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local); + e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local); + e.CellElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local); + } + } +} + +```` +````VB.NET +Private Sub radVirtualGrid1_CellFormatting(sender As Object, e As VirtualGridCellElementEventArgs) + If e.CellElement.RowIndex > -1 Then + If e.CellElement.ColumnIndex = 3 AndAlso e.CellElement.Value IsNot Nothing _ + AndAlso e.CellElement.Value.ToString() = "Owner" Then + e.CellElement.DrawFill = True + e.CellElement.BackColor = Color.Yellow + e.CellElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid + e.CellElement.ForeColor = Color.Red + Else + e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local) + e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local) + e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local) + e.CellElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local) + End If + End If +End Sub + +```` + +{{endregion}} + +>caution Due to the UI virtualization in __RadVirtualGrid__, cell elements are created only for currently visible cells and are being reused during operations like scrolling, filtering, sorting and so on. In order to prevent applying the formatting to other columns' cell elements (because of the cell reuse) all customization should be reset for the rest of the cell elements. + +# See Also +* [Creating custom cells]({%slug winforms/virtualgrid/cells/creating-custom-cells%}) + +* [Formatting System Cells]({%slug winforms/virtualgrid/cells/formatting-system-cells%}) + +* [ToolTips]({%slug winforms/virtualgrid/cells/tooltips%}) + diff --git a/controls/virtualgrid/cells/formatting-system-cells.md b/controls/virtualgrid/visual-elements/cells/formatting-system-cells.md similarity index 97% rename from controls/virtualgrid/cells/formatting-system-cells.md rename to controls/virtualgrid/visual-elements/cells/formatting-system-cells.md index 220df052a..a36c2f696 100644 --- a/controls/virtualgrid/cells/formatting-system-cells.md +++ b/controls/virtualgrid/visual-elements/cells/formatting-system-cells.md @@ -1,142 +1,142 @@ ---- -title: Formatting System Cells -page_title: Formatting System Cells - RadVirtualGrid -description: This article describes how one can format the header, filter and new row cells. -slug: winforms/virtualgrid/cells/formatting-system-cells -tags: virtualgrid, cells, system, formatting -published: True -position: 1 ---- - -# Formatting System Cells - -The __CellFormatting__ event is used to add formatting to grid systems cells: header cells, filter cells and new row cells. Depending on the __RowIndex__, you can distinguish the system cells: - -|RowIndex|VirtualGridRowElement| -|----|----| -|-1|VirtualGridHeaderRowElement| -|-2|VirtualGridNewRowElement| -|-3|VirtualGridFilterRowElement| - -For example, the code sample below changes the __ForeColor__, __BackColor__ and __GradientStyle__ for the *ContactTitle* header cell, *CompanyName* new row cell and *City* filter cell: - -![WinForms RadVirtualGrid Formatting System Cells](images/virtualgrid-cells-formatting-system-cells001.png) - -{{source=..\SamplesCS\VirtualGrid\Cells\VirtualGridFormattingCells.cs region=SystemCellsFormatting}} -{{source=..\SamplesVB\VirtualGrid\Cells\VirtualGridFormattingCells.vb region=SystemCellsFormatting}} - -````C# - -private void radVirtualGrid_CellFormatting(object sender, VirtualGridCellElementEventArgs e) -{ - if (e.CellElement.RowIndex == -1) //format header row - { - if (e.CellElement.ColumnIndex == 3) - { - e.CellElement.DrawFill = true; - e.CellElement.BackColor = Color.Yellow; - e.CellElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid; - e.CellElement.ForeColor = Color.Red; - } - else - { - e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local); - e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local); - e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local); - e.CellElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local); - } - } - else if (e.CellElement.RowIndex == -2)//format new row - { - if (e.CellElement.ColumnIndex == 1) - { - e.CellElement.DrawFill = true; - e.CellElement.BackColor = Color.Blue; - e.CellElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid; - e.CellElement.ForeColor = Color.Aqua; - } - else - { - e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local); - e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local); - e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local); - e.CellElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local); - } - } - else if (e.CellElement.RowIndex == -3)//format filter row - { - if (e.CellElement.ColumnIndex == 5) - { - e.CellElement.DrawFill = true; - e.CellElement.BackColor = Color.Black; - e.CellElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid; - e.CellElement.ForeColor = Color.White; - } - else - { - e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local); - e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local); - e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local); - e.CellElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local); - } - } -} - -```` -````VB.NET -Private Sub radVirtualGrid_CellFormatting(sender As Object, e As VirtualGridCellElementEventArgs) - If e.CellElement.RowIndex = -1 Then - 'format header row - If e.CellElement.ColumnIndex = 3 Then - e.CellElement.DrawFill = True - e.CellElement.BackColor = Color.Yellow - e.CellElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid - e.CellElement.ForeColor = Color.Red - Else - e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local) - e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local) - e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local) - e.CellElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local) - End If - ElseIf e.CellElement.RowIndex = -2 Then - 'format new row - If e.CellElement.ColumnIndex = 1 Then - e.CellElement.DrawFill = True - e.CellElement.BackColor = Color.Blue - e.CellElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid - e.CellElement.ForeColor = Color.Aqua - Else - e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local) - e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local) - e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local) - e.CellElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local) - End If - ElseIf e.CellElement.RowIndex = -3 Then - 'format filter row - If e.CellElement.ColumnIndex = 5 Then - e.CellElement.DrawFill = True - e.CellElement.BackColor = Color.Black - e.CellElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid - e.CellElement.ForeColor = Color.White - Else - e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local) - e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local) - e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local) - e.CellElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local) - End If - End If -End Sub - -```` - -{{endregion}} - ->caution Due to the UI virtualization in __RadVirtualGrid__, cell elements are created only for currently visible cells and are being reused during operations like scrolling, filtering, sorting and so on. In order to prevent applying the formatting to other columns' cell elements (because of the cell reuse) all customization should be reset for the rest of the cell elements. - -# See Also -* [Creating custom cells]({%slug winforms/virtualgrid/cells/creating-custom-cells%}) - -* [Formatting Data Cells]({%slug winforms/virtualgrid/cells/formatting-data-cells%}) - -* [ToolTips]({%slug winforms/virtualgrid/cells/tooltips%}) - +--- +title: Formatting System Cells +page_title: Formatting System Cells - RadVirtualGrid +description: This article describes how one can format the header, filter and new row cells. +slug: winforms/virtualgrid/cells/formatting-system-cells +tags: virtualgrid, cells, system, formatting +published: True +position: 1 +--- + +# Formatting System Cells + +The __CellFormatting__ event is used to add formatting to grid systems cells: header cells, filter cells and new row cells. Depending on the __RowIndex__, you can distinguish the system cells: + +|RowIndex|VirtualGridRowElement| +|----|----| +|-1|VirtualGridHeaderRowElement| +|-2|VirtualGridNewRowElement| +|-3|VirtualGridFilterRowElement| + +For example, the code sample below changes the __ForeColor__, __BackColor__ and __GradientStyle__ for the *ContactTitle* header cell, *CompanyName* new row cell and *City* filter cell: + +![WinForms RadVirtualGrid Formatting System Cells](images/virtualgrid-cells-formatting-system-cells001.png) + +{{source=..\SamplesCS\VirtualGrid\Cells\VirtualGridFormattingCells.cs region=SystemCellsFormatting}} +{{source=..\SamplesVB\VirtualGrid\Cells\VirtualGridFormattingCells.vb region=SystemCellsFormatting}} + +````C# + +private void radVirtualGrid_CellFormatting(object sender, VirtualGridCellElementEventArgs e) +{ + if (e.CellElement.RowIndex == -1) //format header row + { + if (e.CellElement.ColumnIndex == 3) + { + e.CellElement.DrawFill = true; + e.CellElement.BackColor = Color.Yellow; + e.CellElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid; + e.CellElement.ForeColor = Color.Red; + } + else + { + e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local); + e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local); + e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local); + e.CellElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local); + } + } + else if (e.CellElement.RowIndex == -2)//format new row + { + if (e.CellElement.ColumnIndex == 1) + { + e.CellElement.DrawFill = true; + e.CellElement.BackColor = Color.Blue; + e.CellElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid; + e.CellElement.ForeColor = Color.Aqua; + } + else + { + e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local); + e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local); + e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local); + e.CellElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local); + } + } + else if (e.CellElement.RowIndex == -3)//format filter row + { + if (e.CellElement.ColumnIndex == 5) + { + e.CellElement.DrawFill = true; + e.CellElement.BackColor = Color.Black; + e.CellElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid; + e.CellElement.ForeColor = Color.White; + } + else + { + e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local); + e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local); + e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local); + e.CellElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local); + } + } +} + +```` +````VB.NET +Private Sub radVirtualGrid_CellFormatting(sender As Object, e As VirtualGridCellElementEventArgs) + If e.CellElement.RowIndex = -1 Then + 'format header row + If e.CellElement.ColumnIndex = 3 Then + e.CellElement.DrawFill = True + e.CellElement.BackColor = Color.Yellow + e.CellElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid + e.CellElement.ForeColor = Color.Red + Else + e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local) + e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local) + e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local) + e.CellElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local) + End If + ElseIf e.CellElement.RowIndex = -2 Then + 'format new row + If e.CellElement.ColumnIndex = 1 Then + e.CellElement.DrawFill = True + e.CellElement.BackColor = Color.Blue + e.CellElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid + e.CellElement.ForeColor = Color.Aqua + Else + e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local) + e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local) + e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local) + e.CellElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local) + End If + ElseIf e.CellElement.RowIndex = -3 Then + 'format filter row + If e.CellElement.ColumnIndex = 5 Then + e.CellElement.DrawFill = True + e.CellElement.BackColor = Color.Black + e.CellElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid + e.CellElement.ForeColor = Color.White + Else + e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local) + e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local) + e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local) + e.CellElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local) + End If + End If +End Sub + +```` + +{{endregion}} + +>caution Due to the UI virtualization in __RadVirtualGrid__, cell elements are created only for currently visible cells and are being reused during operations like scrolling, filtering, sorting and so on. In order to prevent applying the formatting to other columns' cell elements (because of the cell reuse) all customization should be reset for the rest of the cell elements. + +# See Also +* [Creating custom cells]({%slug winforms/virtualgrid/cells/creating-custom-cells%}) + +* [Formatting Data Cells]({%slug winforms/virtualgrid/cells/formatting-data-cells%}) + +* [ToolTips]({%slug winforms/virtualgrid/cells/tooltips%}) + diff --git a/controls/virtualgrid/cells/images/virtualgrid-cells-formatting-data-cells001.png b/controls/virtualgrid/visual-elements/cells/images/virtualgrid-cells-formatting-data-cells001.png similarity index 100% rename from controls/virtualgrid/cells/images/virtualgrid-cells-formatting-data-cells001.png rename to controls/virtualgrid/visual-elements/cells/images/virtualgrid-cells-formatting-data-cells001.png diff --git a/controls/virtualgrid/cells/images/virtualgrid-cells-formatting-system-cells001.png b/controls/virtualgrid/visual-elements/cells/images/virtualgrid-cells-formatting-system-cells001.png similarity index 100% rename from controls/virtualgrid/cells/images/virtualgrid-cells-formatting-system-cells001.png rename to controls/virtualgrid/visual-elements/cells/images/virtualgrid-cells-formatting-system-cells001.png diff --git a/controls/virtualgrid/cells/images/virtualgrid-cells-tooltips001.png b/controls/virtualgrid/visual-elements/cells/images/virtualgrid-cells-tooltips001.png similarity index 100% rename from controls/virtualgrid/cells/images/virtualgrid-cells-tooltips001.png rename to controls/virtualgrid/visual-elements/cells/images/virtualgrid-cells-tooltips001.png diff --git a/controls/virtualgrid/cells/images/virtualgrid-cells-tooltips002.png b/controls/virtualgrid/visual-elements/cells/images/virtualgrid-cells-tooltips002.png similarity index 100% rename from controls/virtualgrid/cells/images/virtualgrid-cells-tooltips002.png rename to controls/virtualgrid/visual-elements/cells/images/virtualgrid-cells-tooltips002.png diff --git a/controls/virtualgrid/cells/images/virtualgrid-creating-custom-cells001.png b/controls/virtualgrid/visual-elements/cells/images/virtualgrid-creating-custom-cells001.png similarity index 100% rename from controls/virtualgrid/cells/images/virtualgrid-creating-custom-cells001.png rename to controls/virtualgrid/visual-elements/cells/images/virtualgrid-creating-custom-cells001.png diff --git a/controls/virtualgrid/cells/images/virtualgrid-creating-custom-cells002.png b/controls/virtualgrid/visual-elements/cells/images/virtualgrid-creating-custom-cells002.png similarity index 100% rename from controls/virtualgrid/cells/images/virtualgrid-creating-custom-cells002.png rename to controls/virtualgrid/visual-elements/cells/images/virtualgrid-creating-custom-cells002.png diff --git a/controls/virtualgrid/cells/tooltips.md b/controls/virtualgrid/visual-elements/cells/tooltips.md similarity index 97% rename from controls/virtualgrid/cells/tooltips.md rename to controls/virtualgrid/visual-elements/cells/tooltips.md index cd9122c76..34bd4fef4 100644 --- a/controls/virtualgrid/cells/tooltips.md +++ b/controls/virtualgrid/visual-elements/cells/tooltips.md @@ -1,89 +1,89 @@ ---- -title: ToolTips -page_title: ToolTips - RadVirtualGrid -description: Use the ToolTipTextNeeded or the CellFormatting events to shows tooltips for different VirtualGridElements -slug: winforms/virtualgrid/cells/tooltips -tags: virtualgrid, cells, tooltips -published: True -position: 2 ---- - -# ToolTips - -There are two ways to assign tooltips to cells in __RadVirtualGrid__, namely setting the __ToolTipText__ property of a __VirtualGridCellElement__ in the __CellFormatting__ event handler, or as in most of the RadControls by using the __ToolTipTextNeeded__ event. - - -# Setting tooltips in the ToolTipTextNeeded event - -The code snippet below demonstrates how you can use the __ToolTipTextNeeded__ event handler to set __ToolTipText__ for the given __VirtualGridCellElement__. - -![WinForms RadVirtualGrid Setting tooltips in the ToolTipTextNeeded event](images/virtualgrid-cells-tooltips002.png) -{{source=..\SamplesCS\VirtualGrid\Cells\VirtualGridFormattingCells.cs region=ToolTipTextNeeded}} -{{source=..\SamplesVB\VirtualGrid\Cells\VirtualGridFormattingCells.vb region=ToolTipTextNeeded}} - - -````C# - -private void radVirtualGrid1_ToolTipTextNeeded(object sender, ToolTipTextNeededEventArgs e) -{ - VirtualGridCellElement virtualCell = sender as VirtualGridCellElement; - if (virtualCell != null) - { - e.ToolTipText = "Tooltip: " + virtualCell.Value + ""; - } -} - -```` -````VB.NET -Private Sub radVirtualGrid1_ToolTipTextNeeded(sender As Object, e As ToolTipTextNeededEventArgs) - Dim virtualCell As VirtualGridCellElement = TryCast(sender, VirtualGridCellElement) - If virtualCell IsNot Nothing Then - e.ToolTipText = "Tooltip: " + virtualCell.Value + "" - End If -End Sub - -```` - -{{endregion}} - -# Setting tooltips in the CellFormatting event handler - -The code snippet below demonstrates how you can assign a tooltip to a cell in __RadVirtualGrid__. - -![WinForms RadVirtualGrid Setting tooltips in the CellFormatting event handler](images/virtualgrid-cells-tooltips001.png) - -{{source=..\SamplesCS\VirtualGrid\Cells\VirtualGridFormattingCells.cs region=CellsTooltips}} -{{source=..\SamplesVB\VirtualGrid\Cells\VirtualGridFormattingCells.vb region=CellsTooltips}} - - -````C# - -private void radVirtualGrid1Tooltips_CellFormatting(object sender, VirtualGridCellElementEventArgs e) -{ - if (e.CellElement.RowIndex >= 0) - { - e.CellElement.ToolTipText = e.CellElement.Value + ""; - } -} - -```` -````VB.NET -Private Sub radVirtualGrid1Tooltips_CellFormatting(sender As Object, e As VirtualGridCellElementEventArgs) - If e.CellElement.RowIndex >= 0 Then - e.CellElement.ToolTipText = e.CellElement.Value + "" - End If -End Sub - -```` - -{{endregion}} - ->note The __ToolTipTextNeeded__ event has higher priority and overrides the tooltips set in the __CellFormatting__ event handler. - -# See Also -* [Creating custom cells]({%slug winforms/virtualgrid/cells/creating-custom-cells%}) - -* [Formatting Data Cells]({%slug winforms/virtualgrid/cells/formatting-data-cells%}) - -* [Formatting System Cells]({%slug winforms/virtualgrid/cells/formatting-system-cells%}) - +--- +title: ToolTips +page_title: ToolTips - RadVirtualGrid +description: Use the ToolTipTextNeeded or the CellFormatting events to shows tooltips for different VirtualGridElements +slug: winforms/virtualgrid/cells/tooltips +tags: virtualgrid, cells, tooltips +published: True +position: 2 +--- + +# ToolTips + +There are two ways to assign tooltips to cells in __RadVirtualGrid__, namely setting the __ToolTipText__ property of a __VirtualGridCellElement__ in the __CellFormatting__ event handler, or as in most of the RadControls by using the __ToolTipTextNeeded__ event. + + +# Setting tooltips in the ToolTipTextNeeded event + +The code snippet below demonstrates how you can use the __ToolTipTextNeeded__ event handler to set __ToolTipText__ for the given __VirtualGridCellElement__. + +![WinForms RadVirtualGrid Setting tooltips in the ToolTipTextNeeded event](images/virtualgrid-cells-tooltips002.png) +{{source=..\SamplesCS\VirtualGrid\Cells\VirtualGridFormattingCells.cs region=ToolTipTextNeeded}} +{{source=..\SamplesVB\VirtualGrid\Cells\VirtualGridFormattingCells.vb region=ToolTipTextNeeded}} + + +````C# + +private void radVirtualGrid1_ToolTipTextNeeded(object sender, ToolTipTextNeededEventArgs e) +{ + VirtualGridCellElement virtualCell = sender as VirtualGridCellElement; + if (virtualCell != null) + { + e.ToolTipText = "Tooltip: " + virtualCell.Value + ""; + } +} + +```` +````VB.NET +Private Sub radVirtualGrid1_ToolTipTextNeeded(sender As Object, e As ToolTipTextNeededEventArgs) + Dim virtualCell As VirtualGridCellElement = TryCast(sender, VirtualGridCellElement) + If virtualCell IsNot Nothing Then + e.ToolTipText = "Tooltip: " + virtualCell.Value + "" + End If +End Sub + +```` + +{{endregion}} + +# Setting tooltips in the CellFormatting event handler + +The code snippet below demonstrates how you can assign a tooltip to a cell in __RadVirtualGrid__. + +![WinForms RadVirtualGrid Setting tooltips in the CellFormatting event handler](images/virtualgrid-cells-tooltips001.png) + +{{source=..\SamplesCS\VirtualGrid\Cells\VirtualGridFormattingCells.cs region=CellsTooltips}} +{{source=..\SamplesVB\VirtualGrid\Cells\VirtualGridFormattingCells.vb region=CellsTooltips}} + + +````C# + +private void radVirtualGrid1Tooltips_CellFormatting(object sender, VirtualGridCellElementEventArgs e) +{ + if (e.CellElement.RowIndex >= 0) + { + e.CellElement.ToolTipText = e.CellElement.Value + ""; + } +} + +```` +````VB.NET +Private Sub radVirtualGrid1Tooltips_CellFormatting(sender As Object, e As VirtualGridCellElementEventArgs) + If e.CellElement.RowIndex >= 0 Then + e.CellElement.ToolTipText = e.CellElement.Value + "" + End If +End Sub + +```` + +{{endregion}} + +>note The __ToolTipTextNeeded__ event has higher priority and overrides the tooltips set in the __CellFormatting__ event handler. + +# See Also +* [Creating custom cells]({%slug winforms/virtualgrid/cells/creating-custom-cells%}) + +* [Formatting Data Cells]({%slug winforms/virtualgrid/cells/formatting-data-cells%}) + +* [Formatting System Cells]({%slug winforms/virtualgrid/cells/formatting-system-cells%}) + diff --git a/controls/virtualgrid/columns/images/virtualgrid-columns-resizing-columns001.png b/controls/virtualgrid/visual-elements/columns/images/virtualgrid-columns-resizing-columns001.png similarity index 100% rename from controls/virtualgrid/columns/images/virtualgrid-columns-resizing-columns001.png rename to controls/virtualgrid/visual-elements/columns/images/virtualgrid-columns-resizing-columns001.png diff --git a/controls/virtualgrid/columns/images/virtualgrid-columns-resizing-columns002.png b/controls/virtualgrid/visual-elements/columns/images/virtualgrid-columns-resizing-columns002.png similarity index 100% rename from controls/virtualgrid/columns/images/virtualgrid-columns-resizing-columns002.png rename to controls/virtualgrid/visual-elements/columns/images/virtualgrid-columns-resizing-columns002.png diff --git a/controls/virtualgrid/columns/images/virtualgrid-columns-resizing-columns003.png b/controls/virtualgrid/visual-elements/columns/images/virtualgrid-columns-resizing-columns003.png similarity index 100% rename from controls/virtualgrid/columns/images/virtualgrid-columns-resizing-columns003.png rename to controls/virtualgrid/visual-elements/columns/images/virtualgrid-columns-resizing-columns003.png diff --git a/controls/virtualgrid/columns/images/virtualgrid-columns-resizing-columns004.gif b/controls/virtualgrid/visual-elements/columns/images/virtualgrid-columns-resizing-columns004.gif similarity index 100% rename from controls/virtualgrid/columns/images/virtualgrid-columns-resizing-columns004.gif rename to controls/virtualgrid/visual-elements/columns/images/virtualgrid-columns-resizing-columns004.gif diff --git a/controls/virtualgrid/columns/images/virtualgrid-pinned-columns001.png b/controls/virtualgrid/visual-elements/columns/images/virtualgrid-pinned-columns001.png similarity index 100% rename from controls/virtualgrid/columns/images/virtualgrid-pinned-columns001.png rename to controls/virtualgrid/visual-elements/columns/images/virtualgrid-pinned-columns001.png diff --git a/controls/virtualgrid/columns/pining-columns.md b/controls/virtualgrid/visual-elements/columns/pining-columns.md similarity index 96% rename from controls/virtualgrid/columns/pining-columns.md rename to controls/virtualgrid/visual-elements/columns/pining-columns.md index b732dc4c9..2848ae645 100644 --- a/controls/virtualgrid/columns/pining-columns.md +++ b/controls/virtualgrid/visual-elements/columns/pining-columns.md @@ -1,55 +1,55 @@ ---- -title: Pinned Columns -page_title: Pinned Columns - RadVirtualGrid -description: RadVirtualGrid columns can be pinned so that the rows appear anchored to the left or right of the grid. -slug: winforms/virtualgrid/columns/pinned-columns -tags: virtualgrid, cells, formatting -published: True -position: 0 ---- - - -# Pinned Columns - -__RadVirtualGrid__ columns can be pinned so that the rows appear anchored to the left or right of the grid. To pin a column you should use the __SetColumnPinPosition__ method where you just need to pass the column index and the desired pin position. - -{{source=..\SamplesCS\VirtualGrid\pinned-cells-rows.cs region=PinColumn}} -{{source=..\SamplesVB\VirtualGrid\pinned-cells-rows.vb region=PinColumn}} -````C# - -radVirtualGrid1.VirtualGridElement.SetColumnPinPosition(2, PinnedColumnPosition.Right); - -```` -````VB.NET -radVirtualGrid1.VirtualGridElement.SetColumnPinPosition(2, PinnedColumnPosition.Right) - -```` - -{{endregion}} - - -The result is that the column is pined to the right. - -![WinForms RadVirtualGrid Pinned Columns](images/virtualgrid-pinned-columns001.png) - -To unpin a row you just need to set its pin position to *none*. - -{{source=..\SamplesCS\VirtualGrid\pinned-cells-rows.cs region=UnpinColumn}} -{{source=..\SamplesVB\VirtualGrid\pinned-cells-rows.vb region=UnpinColumn}} -````C# - -radVirtualGrid1.VirtualGridElement.SetColumnPinPosition(2, PinnedColumnPosition.None); - -```` -````VB.NET -radVirtualGrid1.VirtualGridElement.SetColumnPinPosition(2, PinnedColumnPosition.None) - -```` - -{{endregion}} - - - -# See Also -* [Resizing Columns Programmatically]({%slug winforms/virtualgrid/columns/resizing-columns-programmatically%}) - +--- +title: Pinned Columns +page_title: Pinned Columns - RadVirtualGrid +description: RadVirtualGrid columns can be pinned so that the rows appear anchored to the left or right of the grid. +slug: winforms/virtualgrid/columns/pinned-columns +tags: virtualgrid, cells, formatting +published: True +position: 0 +--- + + +# Pinned Columns + +__RadVirtualGrid__ columns can be pinned so that the rows appear anchored to the left or right of the grid. To pin a column you should use the __SetColumnPinPosition__ method where you just need to pass the column index and the desired pin position. + +{{source=..\SamplesCS\VirtualGrid\pinned-cells-rows.cs region=PinColumn}} +{{source=..\SamplesVB\VirtualGrid\pinned-cells-rows.vb region=PinColumn}} +````C# + +radVirtualGrid1.VirtualGridElement.SetColumnPinPosition(2, PinnedColumnPosition.Right); + +```` +````VB.NET +radVirtualGrid1.VirtualGridElement.SetColumnPinPosition(2, PinnedColumnPosition.Right) + +```` + +{{endregion}} + + +The result is that the column is pined to the right. + +![WinForms RadVirtualGrid Pinned Columns](images/virtualgrid-pinned-columns001.png) + +To unpin a row you just need to set its pin position to *none*. + +{{source=..\SamplesCS\VirtualGrid\pinned-cells-rows.cs region=UnpinColumn}} +{{source=..\SamplesVB\VirtualGrid\pinned-cells-rows.vb region=UnpinColumn}} +````C# + +radVirtualGrid1.VirtualGridElement.SetColumnPinPosition(2, PinnedColumnPosition.None); + +```` +````VB.NET +radVirtualGrid1.VirtualGridElement.SetColumnPinPosition(2, PinnedColumnPosition.None) + +```` + +{{endregion}} + + + +# See Also +* [Resizing Columns Programmatically]({%slug winforms/virtualgrid/columns/resizing-columns-programmatically%}) + diff --git a/controls/virtualgrid/columns/resizing-columns-programmatically.md b/controls/virtualgrid/visual-elements/columns/resizing-columns-programmatically.md similarity index 97% rename from controls/virtualgrid/columns/resizing-columns-programmatically.md rename to controls/virtualgrid/visual-elements/columns/resizing-columns-programmatically.md index 7fd73c113..d42550a6b 100644 --- a/controls/virtualgrid/columns/resizing-columns-programmatically.md +++ b/controls/virtualgrid/visual-elements/columns/resizing-columns-programmatically.md @@ -1,173 +1,173 @@ ---- -title: Resizing Columns Programmatically -page_title: Resizing Columns Programmatically - RadVirtualGrid -description: This article shows how you can resize the columns with code and prevent columns resizing at run time. -slug: winforms/virtualgrid/columns/resizing-columns-programmatically -tags: virtualgrid, columns, resizing -published: True -position: 1 ---- - - -# Resizing Columns Programmatically - - -The columns inside the __RadVirtualGrid__ are resizable by default. The user is able to easily change the column width by positioning the mouse over the columns vertical grid line and dragging it until the desired size is achieved. - -## Disable Resizing - -To restrict the resizing of all columns by the user set the __AllowColumnResize__ property to *false*. - -{{source=..\SamplesCS\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.cs region=AllowColumnResize}} -{{source=..\SamplesVB\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.vb region=AllowColumnResize}} -````C# -this.radVirtualGrid1.AllowColumnResize = false; - -```` -````VB.NET -Me.RadVirtualGrid1.AllowColumnResize = False - -```` - - - -{{endregion}} - -## Programmatically Resizing Column - -The width of columns can be set individually, per column. Note that the visible width will always include some amount of data even when set to very small amounts. To resize the columns programmatically you can use the following API: - ->caption Fig.1 Resize a Column -![WinForms RadVirtualGrid Resize a Column](images/virtualgrid-columns-resizing-columns001.png) - -{{source=..\SamplesCS\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.cs region=ResizeSingleColumn}} -{{source=..\SamplesVB\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.vb region=ResizeSingleColumn}} -````C# - -this.radVirtualGrid1.TableElement.ColumnsViewState.SetItemSize(0, 200); - -```` -````VB.NET -Me.RadVirtualGrid1.TableElement.ColumnsViewState.SetItemSize(0, 200) - -```` - - - -{{endregion}} - -## Column Auto-Sizing - -Columns can be auto-sized to a best fit value. The available API exposes methods for best-fitting all columns or just a single one: - ->caption Figure 2: Best fit all columns. - -![WinForms RadVirtualGrid Best fit all columns](images/virtualgrid-columns-resizing-columns002.png) - -{{source=..\SamplesCS\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.cs region=BestFitAllColumns}} -{{source=..\SamplesVB\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.vb region=BestFitAllColumns}} -````C# - -this.radVirtualGrid1.BestFitColumns(); - -```` -````VB.NET -Me.RadVirtualGrid1.BestFitColumns() - -```` - -{{endregion}} - ->caption Figure 3: Best fit one column. - -![WinForms RadVirtualGrid Best fit one column](images/virtualgrid-columns-resizing-columns003.png) - -{{source=..\SamplesCS\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.cs region=BestFitColumn}} -{{source=..\SamplesVB\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.vb region=BestFitColumn}} -````C# - -this.radVirtualGrid1.VirtualGridElement.BestFitColumn(1); - -```` -````VB.NET -Me.RadVirtualGrid1.VirtualGridElement.BestFitColumn(1) - -```` -{{endregion}} - -Columns can be auto-sized to fit the available space in __RadVirtualGrid__. It is necessary to set the __AutoSizeColumnsMode__ property to *VirtualGridAutoSizeColumnsMode.Fill*: - ->caption Figure 4: AutoSizeColumnsMode.*Fill* - -![WinForms RadVirtualGrid AutoSizeColumnsMode Fill](images/virtualgrid-columns-resizing-columns004.gif) - -{{source=..\SamplesCS\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.cs region=AutoSizeColumnsMode}} -{{source=..\SamplesVB\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.vb region=AutoSizeColumnsMode}} -````C# - -this.radVirtualGrid1.AutoSizeColumnsMode = VirtualGridAutoSizeColumnsMode.Fill; - -```` -````VB.NET -Me.RadVirtualGrid1.AutoSizeColumnsMode = VirtualGridAutoSizeColumnsMode.Fill - -```` -{{endregion}} - -## Events - -The API exposes two events for notifications when a change in the height of a row is about to happen or has already happened. - -* __ColumnWidthChanging:__ Raised before the operation starts, it can be canceled. The event arguments are: - - * __Cancel:__ If set to *true* suspends the operation. - - * __NewWidth:__ Value of the new column width. - - * __OldWidth:__ Value of the old column width. - - * __ColumnIndex:__ The index of the column which is about to be resized. - - * __ViewInfo:__ Reference to the __VirtualGridViewInfo__ object. - -* __ColumnWidthChanged:__ Raised after the execution of the resizing operation. The event arguments are: - - * __ColumnIndex:__ The index of the resized column. - - * __ViewInfo:__ Reference to the __VirtualGridViewInfo__ object. - -{{source=..\SamplesCS\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.cs region=ResizingEvents}} -{{source=..\SamplesVB\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.vb region=ResizingEvents}} -````C# - -private void radVirtualGrid1_ColumnWidthChanging(object sender, VirtualGridColumnWidthChangingEventArgs e) -{ - if (e.ColumnIndex == 0) - { - e.Cancel = true; - } -} - -private void radVirtualGrid1_ColumnWidthChanged(object sender, VirtualGridColumnEventArgs e) -{ -} - -```` -````VB.NET -Private Sub radVirtualGrid1_ColumnWidthChanging(sender As Object, e As VirtualGridColumnWidthChangingEventArgs) - If e.ColumnIndex = 0 Then - e.Cancel = True - End If -End Sub -Private Sub radVirtualGrid1_ColumnWidthChanged(sender As Object, e As VirtualGridColumnEventArgs) -End Sub - -```` - - - -{{endregion}} - -# See Also -* [Pinned Columns]({%slug winforms/virtualgrid/columns/pinned-columns%}) - +--- +title: Resizing Columns Programmatically +page_title: Resizing Columns Programmatically - RadVirtualGrid +description: This article shows how you can resize the columns with code and prevent columns resizing at run time. +slug: winforms/virtualgrid/columns/resizing-columns-programmatically +tags: virtualgrid, columns, resizing +published: True +position: 1 +--- + + +# Resizing Columns Programmatically + + +The columns inside the __RadVirtualGrid__ are resizable by default. The user is able to easily change the column width by positioning the mouse over the columns vertical grid line and dragging it until the desired size is achieved. + +## Disable Resizing + +To restrict the resizing of all columns by the user set the __AllowColumnResize__ property to *false*. + +{{source=..\SamplesCS\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.cs region=AllowColumnResize}} +{{source=..\SamplesVB\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.vb region=AllowColumnResize}} +````C# +this.radVirtualGrid1.AllowColumnResize = false; + +```` +````VB.NET +Me.RadVirtualGrid1.AllowColumnResize = False + +```` + + + +{{endregion}} + +## Programmatically Resizing Column + +The width of columns can be set individually, per column. Note that the visible width will always include some amount of data even when set to very small amounts. To resize the columns programmatically you can use the following API: + +>caption Fig.1 Resize a Column +![WinForms RadVirtualGrid Resize a Column](images/virtualgrid-columns-resizing-columns001.png) + +{{source=..\SamplesCS\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.cs region=ResizeSingleColumn}} +{{source=..\SamplesVB\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.vb region=ResizeSingleColumn}} +````C# + +this.radVirtualGrid1.TableElement.ColumnsViewState.SetItemSize(0, 200); + +```` +````VB.NET +Me.RadVirtualGrid1.TableElement.ColumnsViewState.SetItemSize(0, 200) + +```` + + + +{{endregion}} + +## Column Auto-Sizing + +Columns can be auto-sized to a best fit value. The available API exposes methods for best-fitting all columns or just a single one: + +>caption Figure 2: Best fit all columns. + +![WinForms RadVirtualGrid Best fit all columns](images/virtualgrid-columns-resizing-columns002.png) + +{{source=..\SamplesCS\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.cs region=BestFitAllColumns}} +{{source=..\SamplesVB\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.vb region=BestFitAllColumns}} +````C# + +this.radVirtualGrid1.BestFitColumns(); + +```` +````VB.NET +Me.RadVirtualGrid1.BestFitColumns() + +```` + +{{endregion}} + +>caption Figure 3: Best fit one column. + +![WinForms RadVirtualGrid Best fit one column](images/virtualgrid-columns-resizing-columns003.png) + +{{source=..\SamplesCS\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.cs region=BestFitColumn}} +{{source=..\SamplesVB\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.vb region=BestFitColumn}} +````C# + +this.radVirtualGrid1.VirtualGridElement.BestFitColumn(1); + +```` +````VB.NET +Me.RadVirtualGrid1.VirtualGridElement.BestFitColumn(1) + +```` +{{endregion}} + +Columns can be auto-sized to fit the available space in __RadVirtualGrid__. It is necessary to set the __AutoSizeColumnsMode__ property to *VirtualGridAutoSizeColumnsMode.Fill*: + +>caption Figure 4: AutoSizeColumnsMode.*Fill* + +![WinForms RadVirtualGrid AutoSizeColumnsMode Fill](images/virtualgrid-columns-resizing-columns004.gif) + +{{source=..\SamplesCS\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.cs region=AutoSizeColumnsMode}} +{{source=..\SamplesVB\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.vb region=AutoSizeColumnsMode}} +````C# + +this.radVirtualGrid1.AutoSizeColumnsMode = VirtualGridAutoSizeColumnsMode.Fill; + +```` +````VB.NET +Me.RadVirtualGrid1.AutoSizeColumnsMode = VirtualGridAutoSizeColumnsMode.Fill + +```` +{{endregion}} + +## Events + +The API exposes two events for notifications when a change in the height of a row is about to happen or has already happened. + +* __ColumnWidthChanging:__ Raised before the operation starts, it can be canceled. The event arguments are: + + * __Cancel:__ If set to *true* suspends the operation. + + * __NewWidth:__ Value of the new column width. + + * __OldWidth:__ Value of the old column width. + + * __ColumnIndex:__ The index of the column which is about to be resized. + + * __ViewInfo:__ Reference to the __VirtualGridViewInfo__ object. + +* __ColumnWidthChanged:__ Raised after the execution of the resizing operation. The event arguments are: + + * __ColumnIndex:__ The index of the resized column. + + * __ViewInfo:__ Reference to the __VirtualGridViewInfo__ object. + +{{source=..\SamplesCS\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.cs region=ResizingEvents}} +{{source=..\SamplesVB\VirtualGrid\Columns\VirtualGridColumnsResizingProgrammatically.vb region=ResizingEvents}} +````C# + +private void radVirtualGrid1_ColumnWidthChanging(object sender, VirtualGridColumnWidthChangingEventArgs e) +{ + if (e.ColumnIndex == 0) + { + e.Cancel = true; + } +} + +private void radVirtualGrid1_ColumnWidthChanged(object sender, VirtualGridColumnEventArgs e) +{ +} + +```` +````VB.NET +Private Sub radVirtualGrid1_ColumnWidthChanging(sender As Object, e As VirtualGridColumnWidthChangingEventArgs) + If e.ColumnIndex = 0 Then + e.Cancel = True + End If +End Sub +Private Sub radVirtualGrid1_ColumnWidthChanged(sender As Object, e As VirtualGridColumnEventArgs) +End Sub + +```` + + + +{{endregion}} + +# See Also +* [Pinned Columns]({%slug winforms/virtualgrid/columns/pinned-columns%}) + diff --git a/controls/virtualgrid/rows/alternating-row-colors.md b/controls/virtualgrid/visual-elements/rows/alternating-row-colors.md similarity index 97% rename from controls/virtualgrid/rows/alternating-row-colors.md rename to controls/virtualgrid/visual-elements/rows/alternating-row-colors.md index a4f043507..0f83a92dd 100644 --- a/controls/virtualgrid/rows/alternating-row-colors.md +++ b/controls/virtualgrid/visual-elements/rows/alternating-row-colors.md @@ -1,44 +1,44 @@ ---- -title: Alternating Row Color -page_title: Alternating Row Color - RadVirtualGrid -description: This article show how you can enable and customize the Alternating Row Color. -slug: winforms/virtualgrid/rows/alternating-row-colors -tags: virtualgrid, rows, alternating, color -published: True -position: 2 ---- - -# Alternating Row Color - -__RadVirtualGrid__ supports an alternating row color. It can be enabled by simply setting the __EnableAlternatingRowColor__ to *true*. - ->caption Fig.1 Alternating Row color -![WinForms RadVirtualGrid Alternating Row color](images/virtualgrid-rows-alternating-row-color001.png) - -{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridRowsAlternatingRownColor.cs region=Settings}} -{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridRowsAlternatingRownColor.vb region=Settings}} - -````C# -this.radVirtualGrid1.EnableAlternatingRowColor = true; -this.radVirtualGrid1.TableElement.AlternatingRowColor = Color.LightBlue; - -```` -````VB.NET -Me.RadVirtualGrid1.EnableAlternatingRowColor = True -Me.RadVirtualGrid1.TableElement.AlternatingRowColor = Color.LightBlue - -```` - -{{endregion}} - -# See Also -* [Formatting Data Rows]({%slug winforms/virtualgrid/rows/formatting-data-rows%}) - -* [Formatting System Rows]({%slug winforms/virtualgrid/rows/formatting-system-rows%}) - -* [Pinned Rows]({%slug winforms/virtualgrid/rows/pinned-rows%}) - -* [Resizing Rows Programmatically]({%slug winforms/virtualgrid/rows/resizing-rows-programmatically%}) - -* [System Rows]({%slug winforms/virtualgrid/rows/system-rows%}) - +--- +title: Alternating Row Color +page_title: Alternating Row Color - RadVirtualGrid +description: This article show how you can enable and customize the Alternating Row Color. +slug: winforms/virtualgrid/rows/alternating-row-colors +tags: virtualgrid, rows, alternating, color +published: True +position: 2 +--- + +# Alternating Row Color + +__RadVirtualGrid__ supports an alternating row color. It can be enabled by simply setting the __EnableAlternatingRowColor__ to *true*. + +>caption Fig.1 Alternating Row color +![WinForms RadVirtualGrid Alternating Row color](images/virtualgrid-rows-alternating-row-color001.png) + +{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridRowsAlternatingRownColor.cs region=Settings}} +{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridRowsAlternatingRownColor.vb region=Settings}} + +````C# +this.radVirtualGrid1.EnableAlternatingRowColor = true; +this.radVirtualGrid1.TableElement.AlternatingRowColor = Color.LightBlue; + +```` +````VB.NET +Me.RadVirtualGrid1.EnableAlternatingRowColor = True +Me.RadVirtualGrid1.TableElement.AlternatingRowColor = Color.LightBlue + +```` + +{{endregion}} + +# See Also +* [Formatting Data Rows]({%slug winforms/virtualgrid/rows/formatting-data-rows%}) + +* [Formatting System Rows]({%slug winforms/virtualgrid/rows/formatting-system-rows%}) + +* [Pinned Rows]({%slug winforms/virtualgrid/rows/pinned-rows%}) + +* [Resizing Rows Programmatically]({%slug winforms/virtualgrid/rows/resizing-rows-programmatically%}) + +* [System Rows]({%slug winforms/virtualgrid/rows/system-rows%}) + diff --git a/controls/virtualgrid/rows/formatting-data-rows.md b/controls/virtualgrid/visual-elements/rows/formatting-data-rows.md similarity index 98% rename from controls/virtualgrid/rows/formatting-data-rows.md rename to controls/virtualgrid/visual-elements/rows/formatting-data-rows.md index b181409af..4e7b668a9 100644 --- a/controls/virtualgrid/rows/formatting-data-rows.md +++ b/controls/virtualgrid/visual-elements/rows/formatting-data-rows.md @@ -1,74 +1,74 @@ ---- -title: Formatting Data Rows -page_title: Formatting Data Rows - RadVirtualGrid -description: Use the RowFormatting event to apply custom formatting to RadVirtualGrid's data rows. -slug: winforms/virtualgrid/rows/formatting-data-rows -tags: virtualgrid, rows, formatting -published: True -position: 0 ---- - -# Formatting Data Rows - -Use the __RowFormatting__ event to apply custom formatting to RadVirtualGrid's data rows. The code snippet below demonstrates changing the __ForeColor__, __BackColor__ and __GradientStyle__ in all data rows where the cell value in the *ContactTitle* column is *Owner*: - -![WinForms RadVirtualGrid Formatting Data Rows](images/virtualgrid-cells-formatting-data-rows001.png) - -{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridFormattingRows.cs region=FormattingRows}} -{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridFormattingRows.vb region=FormattingRows}} - -````C# - -private void radVirtualGrid1_RowFormatting(object sender, VirtualGridRowElementEventArgs e) -{ - VirtualGridCellElement contactTitleCell = radVirtualGrid1.VirtualGridElement.GetCellElement(e.RowElement.RowIndex, 3, radVirtualGrid1.MasterViewInfo); - if (contactTitleCell != null && contactTitleCell.Value != null && contactTitleCell.Value.ToString() == "Owner") - { - e.RowElement.DrawFill = true; - e.RowElement.BackColor = Color.Yellow; - e.RowElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid; - e.RowElement.ForeColor = Color.Red; - } - else - { - e.RowElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local); - e.RowElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local); - e.RowElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local); - e.RowElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local); - } -} - -```` -````VB.NET -Private Sub radVirtualGrid1_RowFormatting(sender As Object, e As VirtualGridRowElementEventArgs) - Dim contactTitleCell As VirtualGridCellElement = RadVirtualGrid1.VirtualGridElement.GetCellElement(e.RowElement.RowIndex, 3, RadVirtualGrid1.MasterViewInfo) - If contactTitleCell IsNot Nothing AndAlso contactTitleCell.Value IsNot Nothing AndAlso contactTitleCell.Value.ToString() = "Owner" Then - e.RowElement.DrawFill = True - e.RowElement.BackColor = Color.Yellow - e.RowElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid - e.RowElement.ForeColor = Color.Red - Else - e.RowElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local) - e.RowElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local) - e.RowElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local) - e.RowElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local) - End If -End Sub - -```` - -{{endregion}} - ->caution Due to the UI virtualization in __RadVirtualGrid__, row elements are created only for currently visible rows and are being reused during operations like scrolling, filtering, sorting and so on. In order to prevent applying the formatting to other columns' row elements (because of the row reuse) all customization should be reset for the rest of the row elements. - -# See Also -* [Alternating Row Color]({%slug winforms/virtualgrid/rows/alternating-row-colors%}) - -* [Formatting System Rows]({%slug winforms/virtualgrid/rows/formatting-system-rows%}) - -* [Pinned Rows]({%slug winforms/virtualgrid/rows/pinned-rows%}) - -* [Resizing Rows Programmatically]({%slug winforms/virtualgrid/rows/resizing-rows-programmatically%}) - -* [System Rows]({%slug winforms/virtualgrid/rows/system-rows%}) - +--- +title: Formatting Data Rows +page_title: Formatting Data Rows - RadVirtualGrid +description: Use the RowFormatting event to apply custom formatting to RadVirtualGrid's data rows. +slug: winforms/virtualgrid/rows/formatting-data-rows +tags: virtualgrid, rows, formatting +published: True +position: 0 +--- + +# Formatting Data Rows + +Use the __RowFormatting__ event to apply custom formatting to RadVirtualGrid's data rows. The code snippet below demonstrates changing the __ForeColor__, __BackColor__ and __GradientStyle__ in all data rows where the cell value in the *ContactTitle* column is *Owner*: + +![WinForms RadVirtualGrid Formatting Data Rows](images/virtualgrid-cells-formatting-data-rows001.png) + +{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridFormattingRows.cs region=FormattingRows}} +{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridFormattingRows.vb region=FormattingRows}} + +````C# + +private void radVirtualGrid1_RowFormatting(object sender, VirtualGridRowElementEventArgs e) +{ + VirtualGridCellElement contactTitleCell = radVirtualGrid1.VirtualGridElement.GetCellElement(e.RowElement.RowIndex, 3, radVirtualGrid1.MasterViewInfo); + if (contactTitleCell != null && contactTitleCell.Value != null && contactTitleCell.Value.ToString() == "Owner") + { + e.RowElement.DrawFill = true; + e.RowElement.BackColor = Color.Yellow; + e.RowElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid; + e.RowElement.ForeColor = Color.Red; + } + else + { + e.RowElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local); + e.RowElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local); + e.RowElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local); + e.RowElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local); + } +} + +```` +````VB.NET +Private Sub radVirtualGrid1_RowFormatting(sender As Object, e As VirtualGridRowElementEventArgs) + Dim contactTitleCell As VirtualGridCellElement = RadVirtualGrid1.VirtualGridElement.GetCellElement(e.RowElement.RowIndex, 3, RadVirtualGrid1.MasterViewInfo) + If contactTitleCell IsNot Nothing AndAlso contactTitleCell.Value IsNot Nothing AndAlso contactTitleCell.Value.ToString() = "Owner" Then + e.RowElement.DrawFill = True + e.RowElement.BackColor = Color.Yellow + e.RowElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid + e.RowElement.ForeColor = Color.Red + Else + e.RowElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local) + e.RowElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local) + e.RowElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local) + e.RowElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local) + End If +End Sub + +```` + +{{endregion}} + +>caution Due to the UI virtualization in __RadVirtualGrid__, row elements are created only for currently visible rows and are being reused during operations like scrolling, filtering, sorting and so on. In order to prevent applying the formatting to other columns' row elements (because of the row reuse) all customization should be reset for the rest of the row elements. + +# See Also +* [Alternating Row Color]({%slug winforms/virtualgrid/rows/alternating-row-colors%}) + +* [Formatting System Rows]({%slug winforms/virtualgrid/rows/formatting-system-rows%}) + +* [Pinned Rows]({%slug winforms/virtualgrid/rows/pinned-rows%}) + +* [Resizing Rows Programmatically]({%slug winforms/virtualgrid/rows/resizing-rows-programmatically%}) + +* [System Rows]({%slug winforms/virtualgrid/rows/system-rows%}) + diff --git a/controls/virtualgrid/rows/formatting-system-rows.md b/controls/virtualgrid/visual-elements/rows/formatting-system-rows.md similarity index 97% rename from controls/virtualgrid/rows/formatting-system-rows.md rename to controls/virtualgrid/visual-elements/rows/formatting-system-rows.md index 53a113576..e2a2291d4 100644 --- a/controls/virtualgrid/rows/formatting-system-rows.md +++ b/controls/virtualgrid/visual-elements/rows/formatting-system-rows.md @@ -1,108 +1,108 @@ ---- -title: Formatting System Rows -page_title: Formatting System Rows - RadVirtualGrid -description: The RowFormatting event is used to add formatting to grid systems rows - header row, filter row and new row. -slug: winforms/virtualgrid/rows/formatting-system-rows -tags: virtualgrid, rows, formatting -published: True -position: 1 ---- - -# Formatting System Rows - -The __RowFormatting__ event is used to add formatting to grid systems rows: header row, filter row and new row. Depending on the __RowIndex__, you can distinguish the system rows: - -|RowIndex|VirtualGridRowElement| -|----|----| -|-1|VirtualGridHeaderRowElement| -|-2|VirtualGridNewRowElement| -|-3|VirtualGridFilterRowElement| - ->note This would not work properly if the styles of the cells are explicitly set in the theme. For example the TelerikMetro theme explicitly sets the styles of the HeaderRow cells. - - -![WinForms RadVirtualGrid Formatting System Rows](images/virtualgrid-rows-formatting-system-rows001.png) - -{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridFormattingRows.cs region=SystemRowsFormatting}} -{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridFormattingRows.vb region=SystemRowsFormatting}} - -````C# - -private void radVirtualGrid_RowFormatting(object sender, VirtualGridRowElementEventArgs e) -{ - if (e.RowElement.RowIndex == -1) //format header row - { - e.RowElement.DrawFill = true; - e.RowElement.BackColor = Color.Yellow; - e.RowElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid; - e.RowElement.ForeColor = Color.Red; - } - else if (e.RowElement.RowIndex == -2)//format new row - { - e.RowElement.DrawFill = true; - e.RowElement.BackColor = Color.Blue; - e.RowElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid; - e.RowElement.ForeColor = Color.Aqua; - } - else if (e.RowElement.RowIndex == -3)//format filter row - { - e.RowElement.DrawFill = true; - e.RowElement.BackColor = Color.Green ; - e.RowElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid; - e.RowElement.ForeColor = Color.Black ; - } - else - { - e.RowElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local); - e.RowElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local); - e.RowElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local); - e.RowElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local); - } -} - -```` -````VB.NET -Private Sub radVirtualGrid_RowFormatting(sender As Object, e As VirtualGridRowElementEventArgs) - If e.RowElement.RowIndex = -1 Then - 'format header row - e.RowElement.DrawFill = True - e.RowElement.BackColor = Color.Yellow - e.RowElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid - e.RowElement.ForeColor = Color.Red - ElseIf e.RowElement.RowIndex = -2 Then - 'format new row - e.RowElement.DrawFill = True - e.RowElement.BackColor = Color.Blue - e.RowElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid - e.RowElement.ForeColor = Color.Aqua - ElseIf e.RowElement.RowIndex = -3 Then - 'format filter row - e.RowElement.DrawFill = True - e.RowElement.BackColor = Color.Green - e.RowElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid - e.RowElement.ForeColor = Color.Black - Else - e.RowElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local) - e.RowElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local) - e.RowElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local) - e.RowElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local) - End If -End Sub - -```` - -{{endregion}} - ->caution Due to the UI virtualization in __RadVirtualGrid__, row elements are created only for currently visible rows and are being reused during operations like scrolling, filtering, sorting and so on. In order to prevent applying the formatting to other columns' row elements (because of the row reuse) all customization should be reset for the rest of the row elements. - -# See Also -* [Alternating Row Color]({%slug winforms/virtualgrid/rows/alternating-row-colors%}) - -* [Formatting Data Rows]({%slug winforms/virtualgrid/rows/formatting-data-rows%}) - -* [Pinned Rows]({%slug winforms/virtualgrid/rows/pinned-rows%}) - -* [Resizing Rows Programmatically]({%slug winforms/virtualgrid/rows/resizing-rows-programmatically%}) - -* [System Rows]({%slug winforms/virtualgrid/rows/system-rows%}) - +--- +title: Formatting System Rows +page_title: Formatting System Rows - RadVirtualGrid +description: The RowFormatting event is used to add formatting to grid systems rows - header row, filter row and new row. +slug: winforms/virtualgrid/rows/formatting-system-rows +tags: virtualgrid, rows, formatting +published: True +position: 1 +--- + +# Formatting System Rows + +The __RowFormatting__ event is used to add formatting to grid systems rows: header row, filter row and new row. Depending on the __RowIndex__, you can distinguish the system rows: + +|RowIndex|VirtualGridRowElement| +|----|----| +|-1|VirtualGridHeaderRowElement| +|-2|VirtualGridNewRowElement| +|-3|VirtualGridFilterRowElement| + +>note This would not work properly if the styles of the cells are explicitly set in the theme. For example the TelerikMetro theme explicitly sets the styles of the HeaderRow cells. + + +![WinForms RadVirtualGrid Formatting System Rows](images/virtualgrid-rows-formatting-system-rows001.png) + +{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridFormattingRows.cs region=SystemRowsFormatting}} +{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridFormattingRows.vb region=SystemRowsFormatting}} + +````C# + +private void radVirtualGrid_RowFormatting(object sender, VirtualGridRowElementEventArgs e) +{ + if (e.RowElement.RowIndex == -1) //format header row + { + e.RowElement.DrawFill = true; + e.RowElement.BackColor = Color.Yellow; + e.RowElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid; + e.RowElement.ForeColor = Color.Red; + } + else if (e.RowElement.RowIndex == -2)//format new row + { + e.RowElement.DrawFill = true; + e.RowElement.BackColor = Color.Blue; + e.RowElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid; + e.RowElement.ForeColor = Color.Aqua; + } + else if (e.RowElement.RowIndex == -3)//format filter row + { + e.RowElement.DrawFill = true; + e.RowElement.BackColor = Color.Green ; + e.RowElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid; + e.RowElement.ForeColor = Color.Black ; + } + else + { + e.RowElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local); + e.RowElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local); + e.RowElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local); + e.RowElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local); + } +} + +```` +````VB.NET +Private Sub radVirtualGrid_RowFormatting(sender As Object, e As VirtualGridRowElementEventArgs) + If e.RowElement.RowIndex = -1 Then + 'format header row + e.RowElement.DrawFill = True + e.RowElement.BackColor = Color.Yellow + e.RowElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid + e.RowElement.ForeColor = Color.Red + ElseIf e.RowElement.RowIndex = -2 Then + 'format new row + e.RowElement.DrawFill = True + e.RowElement.BackColor = Color.Blue + e.RowElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid + e.RowElement.ForeColor = Color.Aqua + ElseIf e.RowElement.RowIndex = -3 Then + 'format filter row + e.RowElement.DrawFill = True + e.RowElement.BackColor = Color.Green + e.RowElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid + e.RowElement.ForeColor = Color.Black + Else + e.RowElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local) + e.RowElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local) + e.RowElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local) + e.RowElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local) + End If +End Sub + +```` + +{{endregion}} + +>caution Due to the UI virtualization in __RadVirtualGrid__, row elements are created only for currently visible rows and are being reused during operations like scrolling, filtering, sorting and so on. In order to prevent applying the formatting to other columns' row elements (because of the row reuse) all customization should be reset for the rest of the row elements. + +# See Also +* [Alternating Row Color]({%slug winforms/virtualgrid/rows/alternating-row-colors%}) + +* [Formatting Data Rows]({%slug winforms/virtualgrid/rows/formatting-data-rows%}) + +* [Pinned Rows]({%slug winforms/virtualgrid/rows/pinned-rows%}) + +* [Resizing Rows Programmatically]({%slug winforms/virtualgrid/rows/resizing-rows-programmatically%}) + +* [System Rows]({%slug winforms/virtualgrid/rows/system-rows%}) + diff --git a/controls/virtualgrid/rows/images/virtualgrid-cells-formatting-data-rows001.png b/controls/virtualgrid/visual-elements/rows/images/virtualgrid-cells-formatting-data-rows001.png similarity index 100% rename from controls/virtualgrid/rows/images/virtualgrid-cells-formatting-data-rows001.png rename to controls/virtualgrid/visual-elements/rows/images/virtualgrid-cells-formatting-data-rows001.png diff --git a/controls/virtualgrid/rows/images/virtualgrid-rows-alternating-row-color001.png b/controls/virtualgrid/visual-elements/rows/images/virtualgrid-rows-alternating-row-color001.png similarity index 100% rename from controls/virtualgrid/rows/images/virtualgrid-rows-alternating-row-color001.png rename to controls/virtualgrid/visual-elements/rows/images/virtualgrid-rows-alternating-row-color001.png diff --git a/controls/virtualgrid/rows/images/virtualgrid-rows-formatting-system-rows001.png b/controls/virtualgrid/visual-elements/rows/images/virtualgrid-rows-formatting-system-rows001.png similarity index 100% rename from controls/virtualgrid/rows/images/virtualgrid-rows-formatting-system-rows001.png rename to controls/virtualgrid/visual-elements/rows/images/virtualgrid-rows-formatting-system-rows001.png diff --git a/controls/virtualgrid/rows/images/virtualgrid-rows-pinned-row001.gif b/controls/virtualgrid/visual-elements/rows/images/virtualgrid-rows-pinned-row001.gif similarity index 100% rename from controls/virtualgrid/rows/images/virtualgrid-rows-pinned-row001.gif rename to controls/virtualgrid/visual-elements/rows/images/virtualgrid-rows-pinned-row001.gif diff --git a/controls/virtualgrid/rows/images/virtualgrid-rows-resizing-rows002.png b/controls/virtualgrid/visual-elements/rows/images/virtualgrid-rows-resizing-rows002.png similarity index 100% rename from controls/virtualgrid/rows/images/virtualgrid-rows-resizing-rows002.png rename to controls/virtualgrid/visual-elements/rows/images/virtualgrid-rows-resizing-rows002.png diff --git a/controls/virtualgrid/rows/images/virtualgrid-rows-resizing-rows003.png b/controls/virtualgrid/visual-elements/rows/images/virtualgrid-rows-resizing-rows003.png similarity index 100% rename from controls/virtualgrid/rows/images/virtualgrid-rows-resizing-rows003.png rename to controls/virtualgrid/visual-elements/rows/images/virtualgrid-rows-resizing-rows003.png diff --git a/controls/virtualgrid/rows/images/virtualgrid-rows-resizing-rows004.png b/controls/virtualgrid/visual-elements/rows/images/virtualgrid-rows-resizing-rows004.png similarity index 100% rename from controls/virtualgrid/rows/images/virtualgrid-rows-resizing-rows004.png rename to controls/virtualgrid/visual-elements/rows/images/virtualgrid-rows-resizing-rows004.png diff --git a/controls/virtualgrid/rows/images/virtualgrid-rows-system-rows001.png b/controls/virtualgrid/visual-elements/rows/images/virtualgrid-rows-system-rows001.png similarity index 100% rename from controls/virtualgrid/rows/images/virtualgrid-rows-system-rows001.png rename to controls/virtualgrid/visual-elements/rows/images/virtualgrid-rows-system-rows001.png diff --git a/controls/virtualgrid/rows/pinned-rows.md b/controls/virtualgrid/visual-elements/rows/pinned-rows.md similarity index 96% rename from controls/virtualgrid/rows/pinned-rows.md rename to controls/virtualgrid/visual-elements/rows/pinned-rows.md index 20de6a697..a7f811619 100644 --- a/controls/virtualgrid/rows/pinned-rows.md +++ b/controls/virtualgrid/visual-elements/rows/pinned-rows.md @@ -1,63 +1,63 @@ ---- -title: Pinned Rows -page_title: Pinned Rows - RadVirtualGrid -description: RadVirtualGrid__ rows can be pinned so that the rows appear anchored to the top or bottom of the grid. -slug: winforms/virtualgrid/rows/pinned-rows -tags: virtualgrid, rows -published: True -position: 3 ---- - - -# Pinned Rows - -__RadVirtualGrid__ rows can be pinned so that the rows appear anchored to the top or bottom of the grid. To pin a row you should use the __SetRowPinPosition__ method where you just need to pass the row index and the desired pin position. - -{{source=..\SamplesCS\VirtualGrid\pinned-cells-rows.cs region=PinRow}} -{{source=..\SamplesVB\VirtualGrid\pinned-cells-rows.vb region=PinRow}} -````C# - -radVirtualGrid1.VirtualGridElement.SetRowPinPosition(2, PinnedRowPosition.Top); - -```` -````VB.NET -radVirtualGrid1.VirtualGridElement.SetRowPinPosition(2, PinnedRowPosition.Top) - -```` - -{{endregion}} - - -The result is that the row is pined bellow the filter row. - -![WinForms RadVirtualGrid Pinned Row](images/virtualgrid-rows-pinned-row001.gif) - -To unpin a row you just need to set its pin position to *none*. - -{{source=..\SamplesCS\VirtualGrid\pinned-cells-rows.cs region=UnpinRow}} -{{source=..\SamplesVB\VirtualGrid\pinned-cells-rows.vb region=UnpinRow}} -````C# - -radVirtualGrid1.VirtualGridElement.SetRowPinPosition(2, PinnedRowPosition.None); - -```` -````VB.NET -radVirtualGrid1.VirtualGridElement.SetRowPinPosition(2, PinnedRowPosition.None) - -```` - -{{endregion}} - - - -# See Also -* [Alternating Row Color]({%slug winforms/virtualgrid/rows/alternating-row-colors%}) - -* [Formatting Data Rows]({%slug winforms/virtualgrid/rows/formatting-data-rows%}) - -* [Formatting System Rows]({%slug winforms/virtualgrid/rows/formatting-system-rows%}) - -* [Resizing Rows Programmatically]({%slug winforms/virtualgrid/rows/resizing-rows-programmatically%}) - -* [System Rows]({%slug winforms/virtualgrid/rows/system-rows%}) - +--- +title: Pinned Rows +page_title: Pinned Rows - RadVirtualGrid +description: RadVirtualGrid__ rows can be pinned so that the rows appear anchored to the top or bottom of the grid. +slug: winforms/virtualgrid/rows/pinned-rows +tags: virtualgrid, rows +published: True +position: 3 +--- + + +# Pinned Rows + +__RadVirtualGrid__ rows can be pinned so that the rows appear anchored to the top or bottom of the grid. To pin a row you should use the __SetRowPinPosition__ method where you just need to pass the row index and the desired pin position. + +{{source=..\SamplesCS\VirtualGrid\pinned-cells-rows.cs region=PinRow}} +{{source=..\SamplesVB\VirtualGrid\pinned-cells-rows.vb region=PinRow}} +````C# + +radVirtualGrid1.VirtualGridElement.SetRowPinPosition(2, PinnedRowPosition.Top); + +```` +````VB.NET +radVirtualGrid1.VirtualGridElement.SetRowPinPosition(2, PinnedRowPosition.Top) + +```` + +{{endregion}} + + +The result is that the row is pined bellow the filter row. + +![WinForms RadVirtualGrid Pinned Row](images/virtualgrid-rows-pinned-row001.gif) + +To unpin a row you just need to set its pin position to *none*. + +{{source=..\SamplesCS\VirtualGrid\pinned-cells-rows.cs region=UnpinRow}} +{{source=..\SamplesVB\VirtualGrid\pinned-cells-rows.vb region=UnpinRow}} +````C# + +radVirtualGrid1.VirtualGridElement.SetRowPinPosition(2, PinnedRowPosition.None); + +```` +````VB.NET +radVirtualGrid1.VirtualGridElement.SetRowPinPosition(2, PinnedRowPosition.None) + +```` + +{{endregion}} + + + +# See Also +* [Alternating Row Color]({%slug winforms/virtualgrid/rows/alternating-row-colors%}) + +* [Formatting Data Rows]({%slug winforms/virtualgrid/rows/formatting-data-rows%}) + +* [Formatting System Rows]({%slug winforms/virtualgrid/rows/formatting-system-rows%}) + +* [Resizing Rows Programmatically]({%slug winforms/virtualgrid/rows/resizing-rows-programmatically%}) + +* [System Rows]({%slug winforms/virtualgrid/rows/system-rows%}) + diff --git a/controls/virtualgrid/rows/resizing-rows-programmatically.md b/controls/virtualgrid/visual-elements/rows/resizing-rows-programmatically.md similarity index 96% rename from controls/virtualgrid/rows/resizing-rows-programmatically.md rename to controls/virtualgrid/visual-elements/rows/resizing-rows-programmatically.md index efaa7ca08..53d909984 100644 --- a/controls/virtualgrid/rows/resizing-rows-programmatically.md +++ b/controls/virtualgrid/visual-elements/rows/resizing-rows-programmatically.md @@ -1,163 +1,163 @@ ---- -title: Resizing Rows Programmatically -page_title: Resizing Rows Programmatically- RadVirtualGrid -description: This article shows how you can resize the rows in RadVirtualGrid in the code. -slug: winforms/virtualgrid/rows/resizing-rows-programmatically -tags: virtualgrid, rows, resizing -published: True -position: 3 ---- - -# Resizing Rows Programmatically - -__RadVirtualGrid__ exposes an API allowing resizing of its rows. In order to utilize it we need to set the __AllowRowResize__ property to *true*. - -{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridResizingRows.cs region=AllowRowResize}} -{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridResizingRows.vb region=AllowRowResize}} -````C# -this.radVirtualGrid1.AllowRowResize = true; - -```` -````VB.NET -Me.RadVirtualGrid1.AllowRowResize = True - -```` - - - -{{endregion}} - -## Resizing System Rows - -The __VirtualGridViewInfo__ object exposes properties for directly accessing its system rows and setting a desired height. - ->caption Figure 1 Resizing System Rows. - -![WinForms RadVirtualGrid Resizing System Rows](images/virtualgrid-rows-resizing-rows002.png) - -{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridResizingRows.cs region=ResizingSystemRows}} -{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridResizingRows.vb region=ResizingSystemRows}} -````C# -this.radVirtualGrid1.MasterViewInfo.HeaderRowHeight = 30; -this.radVirtualGrid1.MasterViewInfo.NewRowHeight = 40; -this.radVirtualGrid1.MasterViewInfo.FilterRowHeight = 50; - -```` -````VB.NET -Me.RadVirtualGrid1.MasterViewInfo.HeaderRowHeight = 30 -Me.RadVirtualGrid1.MasterViewInfo.NewRowHeight = 40 -Me.RadVirtualGrid1.MasterViewInfo.FilterRowHeight = 50 - -```` - - - -{{endregion}} - -## Resizing Data Rows - -The data rows can also be programmatically resized. __RadVirtualGrid.VirtualGridViewInfo__ provides a property for defining a uniform height to all rows and also methods for setting or retrieving the height of a single row. - ->caption Figure 2 Resizing All Data Rows. - -![WinForms RadVirtualGrid Resizing All Data Rows](images/virtualgrid-rows-resizing-rows003.png) - -{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridResizingRows.cs region=ResizingDataRows}} -{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridResizingRows.vb region=ResizingDataRows}} -````C# -this.radVirtualGrid1.MasterViewInfo.RowHeight = 60; - -```` -````VB.NET -Me.RadVirtualGrid1.MasterViewInfo.RowHeight = 60 - -```` - - - -{{endregion}} - ->caption Figure 3 Resizing A Single Data Row. - -![WinForms RadVirtualGrid Resizing A Single Data Row](images/virtualgrid-rows-resizing-rows004.png) - -{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridResizingRows.cs region=SetRowHeight}} -{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridResizingRows.vb region=SetRowHeight}} -````C# -this.radVirtualGrid1.MasterViewInfo.SetRowHeight(0, 40); -int rowHeight = this.radVirtualGrid1.MasterViewInfo.GetRowHeight(0); - -```` -````VB.NET -Me.RadVirtualGrid1.MasterViewInfo.SetRowHeight(0, 40) -Dim rowHeight As Integer = Me.RadVirtualGrid1.MasterViewInfo.GetRowHeight(0) - -```` - - - -{{endregion}} - -## Events - -The API exposes two events for notifications when a change in the height of a row is about to happen or has already happened. - -* __RowHeightChanging__: Raised before the operation starts, it can be canceled. The event arguments are: - - * __Cancel__: If set to *true* suspends the operation. - - * __NewHeight__: Value of the new row height. - - * __OldHeight__: Value of the old row height. - - * __RowIndex__: The index of the row which is about to be resized. - - * __ViewInfo__: Reference to the __VirtualGridViewInfo__ object. - -* __RowHeightChanged__: Raised after the execution of the resizing operation. The event arguments are: - - * __RowIndex__: The index of the resized row. - - * __ViewInfo__: Reference to the __VirtualGridViewInfo__ object. - -{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridResizingRows.cs region=ResizingEvents}} -{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridResizingRows.vb region=ResizingEvents}} -````C# -private void radVirtualGrid1_RowHeightChanging(object sender, VirtualGridRowHeightChangingEventArgs e) -{ - if (e.RowIndex == 0) - { - e.Cancel = true; - } -} -private void radVirtualGrid1_RowHeightChanged(object sender, VirtualGridRowEventArgs e) -{ -} - -```` -````VB.NET -Private Sub radVirtualGrid1_RowHeightChanging(sender As Object, e As VirtualGridRowHeightChangingEventArgs) - If e.RowIndex = 0 Then - e.Cancel = True - End If -End Sub -Private Sub radVirtualGrid1_RowHeightChanged(sender As Object, e As VirtualGridRowEventArgs) -End Sub - -```` - - - -{{endregion}} - -# See Also -* [Alternating Row Color]({%slug winforms/virtualgrid/rows/alternating-row-colors%}) - -* [Formatting Data Rows]({%slug winforms/virtualgrid/rows/formatting-data-rows%}) - -* [Formatting System Rows]({%slug winforms/virtualgrid/rows/formatting-system-rows%}) - -* [Pinned Rows]({%slug winforms/virtualgrid/rows/pinned-rows%}) - -* [System Rows]({%slug winforms/virtualgrid/rows/system-rows%}) - +--- +title: Resizing Rows Programmatically +page_title: Resizing Rows Programmatically- RadVirtualGrid +description: This article shows how you can resize the rows in RadVirtualGrid in the code. +slug: winforms/virtualgrid/rows/resizing-rows-programmatically +tags: virtualgrid, rows, resizing +published: True +position: 3 +--- + +# Resizing Rows Programmatically + +__RadVirtualGrid__ exposes an API allowing resizing of its rows. In order to utilize it we need to set the __AllowRowResize__ property to *true*. + +{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridResizingRows.cs region=AllowRowResize}} +{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridResizingRows.vb region=AllowRowResize}} +````C# +this.radVirtualGrid1.AllowRowResize = true; + +```` +````VB.NET +Me.RadVirtualGrid1.AllowRowResize = True + +```` + + + +{{endregion}} + +## Resizing System Rows + +The __VirtualGridViewInfo__ object exposes properties for directly accessing its system rows and setting a desired height. + +>caption Figure 1 Resizing System Rows. + +![WinForms RadVirtualGrid Resizing System Rows](images/virtualgrid-rows-resizing-rows002.png) + +{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridResizingRows.cs region=ResizingSystemRows}} +{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridResizingRows.vb region=ResizingSystemRows}} +````C# +this.radVirtualGrid1.MasterViewInfo.HeaderRowHeight = 30; +this.radVirtualGrid1.MasterViewInfo.NewRowHeight = 40; +this.radVirtualGrid1.MasterViewInfo.FilterRowHeight = 50; + +```` +````VB.NET +Me.RadVirtualGrid1.MasterViewInfo.HeaderRowHeight = 30 +Me.RadVirtualGrid1.MasterViewInfo.NewRowHeight = 40 +Me.RadVirtualGrid1.MasterViewInfo.FilterRowHeight = 50 + +```` + + + +{{endregion}} + +## Resizing Data Rows + +The data rows can also be programmatically resized. __RadVirtualGrid.VirtualGridViewInfo__ provides a property for defining a uniform height to all rows and also methods for setting or retrieving the height of a single row. + +>caption Figure 2 Resizing All Data Rows. + +![WinForms RadVirtualGrid Resizing All Data Rows](images/virtualgrid-rows-resizing-rows003.png) + +{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridResizingRows.cs region=ResizingDataRows}} +{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridResizingRows.vb region=ResizingDataRows}} +````C# +this.radVirtualGrid1.MasterViewInfo.RowHeight = 60; + +```` +````VB.NET +Me.RadVirtualGrid1.MasterViewInfo.RowHeight = 60 + +```` + + + +{{endregion}} + +>caption Figure 3 Resizing A Single Data Row. + +![WinForms RadVirtualGrid Resizing A Single Data Row](images/virtualgrid-rows-resizing-rows004.png) + +{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridResizingRows.cs region=SetRowHeight}} +{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridResizingRows.vb region=SetRowHeight}} +````C# +this.radVirtualGrid1.MasterViewInfo.SetRowHeight(0, 40); +int rowHeight = this.radVirtualGrid1.MasterViewInfo.GetRowHeight(0); + +```` +````VB.NET +Me.RadVirtualGrid1.MasterViewInfo.SetRowHeight(0, 40) +Dim rowHeight As Integer = Me.RadVirtualGrid1.MasterViewInfo.GetRowHeight(0) + +```` + + + +{{endregion}} + +## Events + +The API exposes two events for notifications when a change in the height of a row is about to happen or has already happened. + +* __RowHeightChanging__: Raised before the operation starts, it can be canceled. The event arguments are: + + * __Cancel__: If set to *true* suspends the operation. + + * __NewHeight__: Value of the new row height. + + * __OldHeight__: Value of the old row height. + + * __RowIndex__: The index of the row which is about to be resized. + + * __ViewInfo__: Reference to the __VirtualGridViewInfo__ object. + +* __RowHeightChanged__: Raised after the execution of the resizing operation. The event arguments are: + + * __RowIndex__: The index of the resized row. + + * __ViewInfo__: Reference to the __VirtualGridViewInfo__ object. + +{{source=..\SamplesCS\VirtualGrid\Rows\VirtualGridResizingRows.cs region=ResizingEvents}} +{{source=..\SamplesVB\VirtualGrid\Rows\VirtualGridResizingRows.vb region=ResizingEvents}} +````C# +private void radVirtualGrid1_RowHeightChanging(object sender, VirtualGridRowHeightChangingEventArgs e) +{ + if (e.RowIndex == 0) + { + e.Cancel = true; + } +} +private void radVirtualGrid1_RowHeightChanged(object sender, VirtualGridRowEventArgs e) +{ +} + +```` +````VB.NET +Private Sub radVirtualGrid1_RowHeightChanging(sender As Object, e As VirtualGridRowHeightChangingEventArgs) + If e.RowIndex = 0 Then + e.Cancel = True + End If +End Sub +Private Sub radVirtualGrid1_RowHeightChanged(sender As Object, e As VirtualGridRowEventArgs) +End Sub + +```` + + + +{{endregion}} + +# See Also +* [Alternating Row Color]({%slug winforms/virtualgrid/rows/alternating-row-colors%}) + +* [Formatting Data Rows]({%slug winforms/virtualgrid/rows/formatting-data-rows%}) + +* [Formatting System Rows]({%slug winforms/virtualgrid/rows/formatting-system-rows%}) + +* [Pinned Rows]({%slug winforms/virtualgrid/rows/pinned-rows%}) + +* [System Rows]({%slug winforms/virtualgrid/rows/system-rows%}) + diff --git a/controls/virtualgrid/rows/system-rows.md b/controls/virtualgrid/visual-elements/rows/system-rows.md similarity index 100% rename from controls/virtualgrid/rows/system-rows.md rename to controls/virtualgrid/visual-elements/rows/system-rows.md diff --git a/knowledge-base/form-titlebar-align-text-winforms.md b/knowledge-base/form-titlebar-align-text-winforms.md index 4f9bb78fb..ed994672e 100644 --- a/knowledge-base/form-titlebar-align-text-winforms.md +++ b/knowledge-base/form-titlebar-align-text-winforms.md @@ -32,9 +32,10 @@ this.FormElement.TitleBar.CaptionElement.Alignment = ContentAlignment.MiddleCent To center the text in the RadTitleBar as a stand-alone control, set the `Alignment` property of the `CaptionElement` to `ContentAlignment.MiddleCenter`. This adjustment aligns the title bar text to the middle center. ````C# + this.radTitleBar1.TitleBarElement.CaptionElement.Alignment = ContentAlignment.MiddleCenter; -``` +```` By applying this code, the text in the RadTitleBar will be centered, providing a visually appealing and balanced appearance for the title bar of your WinForms application. diff --git a/urlrewriter.config b/urlrewriter.config index 50d801c1a..2adef5c74 100644 --- a/urlrewriter.config +++ b/urlrewriter.config @@ -389,4 +389,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +