Quantcast
Channel: DevExpress Support Center (Examples)
Viewing all articles
Browse latest Browse all 7205

How to access the grid control when a List View's MasterDetailMode attribute is set to ListViewAndDetailView

$
0
0

You might write the following code within your ViewController:

[C#]
(GridControl)View.Control
[VB.NET]
CType(View.Control, GridControl)

and it might work in certain cases when your List View showed only one grid control, i.e. the MasterDetailMode = ListViewOnly. This code is not reliable and may fail if a List View was displayed alongside a Detail View or in other scenarios.
This example shows how to fix this problem and write the correct code for both cases:

[VB.NET]
using System;using DevExpress.XtraGrid;using DevExpress.XtraLayout;using DevExpress.ExpressApp;using DevExpress.XtraGrid.Views.Grid;using DevExpress.ExpressApp.Win.Layout;using DevExpress.ExpressApp.Win.Editors;namespace YourSolutionName.Module.Win {publicclass GridListViewController : ViewController {public GridListViewController() { TargetViewType = ViewType.ListView; }protected override void OnViewControlsCreated() { base.OnViewControlsCreated(); ListView lv = ((ListView)View); //This code works for both the ListViewOnly and ListViewAndDetailView option. GridListEditor listEditor = lv.Editor as GridListEditor;if (listEditor != null) { GridControl grid = listEditor.Grid; GridView gv = listEditor.GridView; //Do something great here. } //The code below works only for the ListViewAndDetailView option. DetailView dv = lv.EditView;if (dv != null) { WinLayoutManager layoutManager = dv.LayoutManager as WinLayoutManager;if (layoutManager != null) { LayoutControl layout = layoutManager.Container; //Do something great here. } } } } }Imports Microsoft.VisualBasicImports SystemImports DevExpress.XtraGridImports DevExpress.XtraLayoutImports DevExpress.ExpressAppImports DevExpress.XtraGrid.Views.GridImports DevExpress.ExpressApp.Win.LayoutImports DevExpress.ExpressApp.Win.EditorsNamespace YourSolutionName.Module.WinPublicClass GridListViewControllerInherits ViewControllerPublicSubNew() TargetViewType = ViewType.ListViewEndSubProtectedOverridesOverloadsSub OnViewControlsCreated()MyBase.OnViewControlsCreated()Dim lv As ListView = (CType(View, ListView))'This code works for both the ListViewOnly and ListViewAndDetailView options.Dim listEditor As GridListEditor = TryCast(lv.Editor, GridListEditor)If listEditor IsNot NothingThenDim grid As GridControl = listEditor.GridDim gv As GridView = listEditor.GridView'Do something great here.EndIf'The code below works only for the ListViewAndDetailView option.Dim dv As DetailView = lv.EditViewIf dv IsNot NothingThenDim layoutManager As WinLayoutManager = TryCast(dv.LayoutManager, WinLayoutManager)If layoutManager IsNot NothingThenDim layout As LayoutControl = layoutManager.Container'Do something great here.EndIfEndIfEndSubEndClassEndNamespace

The best practice is always to access the List View's control via the corresponding ListEditor properties. The same thing is for Detail View - you should access the Detail View's control via the corresponding LayoutManager properties.

See Also:
Access Grid Control Properties
View Items Layout Customization
How to access a tab control in a Detail View layout
FAQ: How to traverse and customize XAF View items and their underlying controls


Viewing all articles
Browse latest Browse all 7205

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>