[Expand]General Information
[Expand]WinForms Controls
[Expand]ASP.NET Controls and MVC Extensions
[Expand]ASP.NET Bootstrap Controls
[Expand]ASP.NET Core Bootstrap Controls
[Expand]WPF Controls
[Expand]Xamarin Controls
[Expand]Windows 10 App Controls
[Expand]Office File API
[Expand]Reporting
[Expand]Report and Dashboard Server
[Expand]Dashboard
[Collapse]eXpressApp Framework
 [Expand]Fundamentals
 [Expand]Getting Started
 [Expand]Concepts
 [Expand]Design-Time Features
 [Expand]Deployment
 [Expand]Task-Based Help
  Frequently Asked Questions (FAQ)
 [Collapse]API Reference
  [Expand]DevExpress.EasyTest.Framework
  [Expand]DevExpress.ExpressApp
  [Expand]DevExpress.ExpressApp.Actions
  [Expand]DevExpress.ExpressApp.AuditTrail
  [Expand]DevExpress.ExpressApp.Chart
  [Expand]DevExpress.ExpressApp.Chart.Web
  [Expand]DevExpress.ExpressApp.Chart.Win
  [Expand]DevExpress.ExpressApp.CloneObject
  [Expand]DevExpress.ExpressApp.ConditionalAppearance
  [Expand]DevExpress.ExpressApp.Dashboards
  [Expand]DevExpress.ExpressApp.Dashboards.Web
  [Expand]DevExpress.ExpressApp.Dashboards.Win
  [Expand]DevExpress.ExpressApp.Data
  [Expand]DevExpress.ExpressApp.DC
  [Expand]DevExpress.ExpressApp.DC.ClassGeneration
  [Expand]DevExpress.ExpressApp.Editors
  [Expand]DevExpress.ExpressApp.EF
  [Expand]DevExpress.ExpressApp.EF.Utils
  [Expand]DevExpress.ExpressApp.FileAttachments.Web
  [Expand]DevExpress.ExpressApp.FileAttachments.Win
  [Expand]DevExpress.ExpressApp.Filtering
  [Expand]DevExpress.ExpressApp.HtmlPropertyEditor.Web
  [Expand]DevExpress.ExpressApp.HtmlPropertyEditor.Win
  [Expand]DevExpress.ExpressApp.Kpi
  [Expand]DevExpress.ExpressApp.Layout
  [Expand]DevExpress.ExpressApp.Maps.Mobile
  [Expand]DevExpress.ExpressApp.Maps.Mobile.Editors
  [Expand]DevExpress.ExpressApp.Maps.Web
  [Expand]DevExpress.ExpressApp.Maps.Web.Helpers
  [Expand]DevExpress.ExpressApp.MiddleTier
  [Expand]DevExpress.ExpressApp.Mobile
  [Expand]DevExpress.ExpressApp.Mobile.Editors
  [Expand]DevExpress.ExpressApp.Mobile.MobileModel
  [Expand]DevExpress.ExpressApp.Mobile.SystemModule
  [Expand]DevExpress.ExpressApp.Mobile.Templates
  [Expand]DevExpress.ExpressApp.Model
  [Expand]DevExpress.ExpressApp.Model.Core
  [Expand]DevExpress.ExpressApp.Model.NodeGenerators
  [Expand]DevExpress.ExpressApp.ModelEditor
  [Expand]DevExpress.ExpressApp.Notifications
  [Expand]DevExpress.ExpressApp.Notifications.Web
  [Expand]DevExpress.ExpressApp.Notifications.Win
  [Expand]DevExpress.ExpressApp.Office.Win
  [Expand]DevExpress.ExpressApp.PivotChart
  [Expand]DevExpress.ExpressApp.PivotChart.Web
  [Expand]DevExpress.ExpressApp.PivotChart.Win
  [Expand]DevExpress.ExpressApp.PivotGrid
  [Expand]DevExpress.ExpressApp.PivotGrid.Web
  [Expand]DevExpress.ExpressApp.PivotGrid.Win
  [Expand]DevExpress.ExpressApp.Reports
  [Expand]DevExpress.ExpressApp.Reports.Web
  [Expand]DevExpress.ExpressApp.Reports.Win
  [Expand]DevExpress.ExpressApp.ReportsV2
  [Expand]DevExpress.ExpressApp.ReportsV2.Mobile
  [Expand]DevExpress.ExpressApp.ReportsV2.Web
  [Expand]DevExpress.ExpressApp.ReportsV2.Win
  [Expand]DevExpress.ExpressApp.Scheduler
  [Expand]DevExpress.ExpressApp.Scheduler.Web
  [Expand]DevExpress.ExpressApp.Scheduler.Win
  [Expand]DevExpress.ExpressApp.ScriptRecorder
  [Expand]DevExpress.ExpressApp.ScriptRecorder.Web
  [Expand]DevExpress.ExpressApp.ScriptRecorder.Win
  [Expand]DevExpress.ExpressApp.Security
  [Expand]DevExpress.ExpressApp.Security.Adapters
  [Expand]DevExpress.ExpressApp.Security.ClientServer.Wcf
  [Expand]DevExpress.ExpressApp.Security.EF.Adapters
  [Expand]DevExpress.ExpressApp.Security.Strategy
  [Expand]DevExpress.ExpressApp.Security.Xpo.Adapters
  [Expand]DevExpress.ExpressApp.StateMachine
  [Collapse]DevExpress.ExpressApp.SystemModule
   [Expand]AboutInfo Class
   [Expand]ActionControlsSiteController Class
   [Expand]CustomBuildCriteriaEventArgs Class
   [Expand]CustomExportAnalysisEventArgs Class
   [Expand]CustomExportEventArgs Class
   [Expand]CustomGetDefaultFileNameEventArgs Class
   [Expand]CustomGetFiltersEventArgs Class
   [Expand]CustomGetFullTextSearchPropertiesEventArgs Class
   [Expand]CustomizeShowViewParametersEventArgs Class
   [Expand]CustomizeWindowCaptionEventArgs Class
   [Expand]CustomizeWindowStatusMessagesEventArgs Class
   [Expand]CustomShowNavigationItemEventArgs Class
   [Expand]DeleteObjectsViewController Class
   [Expand]DialogController Class
   [Expand]DialogControllerAcceptingEventArgs Class
   [Expand]ExportAnalysisController Class
   [Expand]ExportController Class
   [Expand]FilterController Class
    FullTextSearchTargetPropertiesMode Enumeration
   [Expand]IDataAwareExportable Interface
   [Expand]IDataAwareExportableCsv Interface
   [Expand]IDataAwareExportableXls Interface
   [Expand]IDataAwareExportableXlsx Interface
   [Expand]IExportable Interface
   [Expand]IExportableAnalysisEditor Interface
   [Expand]IModelActionContainer Interface
   [Expand]IModelActionDesignContainerMapping Interface
   [Expand]IModelActionLink Interface
   [Expand]IModelActionToContainerMapping Interface
   [Expand]IModelApplicationCreatableItems Interface
   [Expand]IModelApplicationNavigationItems Interface
   [Expand]IModelClassNavigation Interface
   [Expand]IModelClassNewItemRow Interface
   [Expand]IModelClassShowAutoFilterRow Interface
   [Expand]IModelClassShowFindPanel Interface
   [Expand]IModelCreatableItem Interface
   [Expand]IModelCreatableItems Interface
   [Expand]IModelDetailViewDefaultFocusedItem Interface
   [Expand]IModelHiddenActions Interface
   [Expand]IModelListViewFilter Interface
   [Expand]IModelListViewFilterItem Interface
   [Expand]IModelListViewFilters Interface
   [Expand]IModelListViewNewItemRow Interface
   [Expand]IModelListViewPreviewColumn Interface
   [Expand]IModelListViewShowAutoFilterRow Interface
   [Expand]IModelListViewShowFindPanel Interface
   [Expand]IModelNavigationItem Interface
   [Expand]IModelNavigationItems Interface
   [Expand]IModelOptionsDashboard Interface
   [Expand]IModelOptionsDashboards Interface
   [Expand]IModelPropertyEditorLinkView Interface
   [Expand]IModelRootNavigationItems Interface
   [Expand]IModelViewHiddenActions Interface
   [Collapse]LinkUnlinkController Class
     LinkUnlinkController Members
     LinkUnlinkController Constructor
    [Collapse]LinkUnlinkController Properties
      AutoCommit Property
      ExcludeLinkedObjects Property
      LinkAction Property
      RequireLookupListView Property
      RequirePersistentType Property
      UnlinkAction Property
    [Expand]LinkUnlinkController Events
   [Expand]ListViewFilterAttribute Class
   [Expand]ListViewProcessCurrentObjectController Class
   [Expand]LogoffController Class
   [Expand]ModelActionContainersGenerator Class
   [Expand]ModelCreatableItemsGenerator Class
   [Expand]ModelListViewFiltersGenerator Class
    ModificationsCheckingMode Enumeration
   [Expand]ModificationsController Class
    ModificationsHandlingMode Enumeration
   [Expand]NavigationItemCreatedEventArgs Class
   [Expand]NavigationItemNodeGenerator Class
    NewObjectActionItemListMode Enumeration
   [Expand]NewObjectViewController Class
   [Expand]ObjectCreatingEventArgs Class
   [Expand]PrintableChangedEventArgs Class
   [Expand]RecordsNavigationController Class
   [Expand]RefreshController Class
   [Expand]ShowNavigationItemController Class
   [Expand]SystemModule Class
   [Expand]WindowTemplateController Class
  [Expand]DevExpress.ExpressApp.Templates
  [Expand]DevExpress.ExpressApp.Templates.ActionContainers
  [Expand]DevExpress.ExpressApp.TreeListEditors
  [Expand]DevExpress.ExpressApp.TreeListEditors.Web
  [Expand]DevExpress.ExpressApp.TreeListEditors.Win
  [Expand]DevExpress.ExpressApp.Updating
  [Expand]DevExpress.ExpressApp.Utils
  [Expand]DevExpress.ExpressApp.Validation
  [Expand]DevExpress.ExpressApp.Validation.Web
  [Expand]DevExpress.ExpressApp.Validation.Win
  [Expand]DevExpress.ExpressApp.ViewVariantsModule
  [Expand]DevExpress.ExpressApp.Web
  [Expand]DevExpress.ExpressApp.Web.Controls
  [Expand]DevExpress.ExpressApp.Web.Editors
  [Expand]DevExpress.ExpressApp.Web.Editors.ASPx
  [Expand]DevExpress.ExpressApp.Web.SystemModule
  [Expand]DevExpress.ExpressApp.Web.Templates
  [Expand]DevExpress.ExpressApp.Web.Utils
  [Expand]DevExpress.ExpressApp.Win
  [Expand]DevExpress.ExpressApp.Win.Core
  [Expand]DevExpress.ExpressApp.Win.Editors
  [Expand]DevExpress.ExpressApp.Win.Model
  [Expand]DevExpress.ExpressApp.Win.SystemModule
  [Expand]DevExpress.ExpressApp.Win.Templates
  [Expand]DevExpress.ExpressApp.Win.Templates.Navigation
  [Expand]DevExpress.ExpressApp.Win.Utils
  [Expand]DevExpress.ExpressApp.Workflow
  [Expand]DevExpress.ExpressApp.Workflow.Win
  [Expand]DevExpress.ExpressApp.Xpo
  [Expand]DevExpress.ExpressApp.Xpo.Utils
  [Expand]DevExpress.Persistent.Base
  [Expand]DevExpress.Persistent.Base.General
  [Expand]DevExpress.Persistent.Base.ReportsV2
  [Expand]DevExpress.Persistent.Base.Security
  [Expand]DevExpress.Persistent.BaseImpl
  [Expand]DevExpress.Persistent.BaseImpl.EF
  [Expand]DevExpress.Persistent.BaseImpl.EF.PermissionPolicy
  [Expand]DevExpress.Persistent.BaseImpl.PermissionPolicy
  [Expand]DevExpress.Persistent.Validation
[Expand]eXpress Persistent Objects
[Expand]CodeRush
[Expand]CodeRush Classic
[Expand]Cross-Platform Core Libraries
[Expand]Tools and Utilities
 End-User Documentation
View this topic on docs.devexpress.com (Learn more)

LinkUnlinkController.LinkAction Property

Provides access to the LinkUnlinkController's Link Action.

Namespace:DevExpress.ExpressApp.SystemModule
Assembly:DevExpress.ExpressApp.v19.1.dll

Expanded Syntax

Property value

Type: PopupWindowShowAction
A PopupWindowShowAction object representing the Link Action.

Expanded Remarks

The Link Action is intended to add required existing objects to a collection property displayed by a nested List View:

In a Windows Forms application:

In an ASP.NET application:

To show all existing objects of the current collection property's object type, a List View is created and shown in a pop-up Window. This List View is generated using information from the Application Model. The node which is used as the information source is determined by the LinkView property of the Views | <DetailView> | Items | <PropertyEditor> node defining the current collection property:

By default, the LinkView property is set to the value of the DefaultLookupListView property of the BOModel | <Class> node, defining the collection property's object type. If the LinkView property is not specified, the ListView node used to display the collection property will be used.

To create a custom List View, handle the CustomCreateLinkView event.

You can filter the created List View by setting a criteria for the objects to be displayed. For this purpose, use the DataSourceCriteriaAttribute for the collection property. In addition, you can provide a custom collection source for the created List View. For this purpose, use the DataSourcePropertyAttribute. For details, refer to the How to: Filter a Link Dialog's List View topic.

The created List View is shown in a pop-up Window. In a Windows Forms application, the LookupForm Template is used for this Window. In an ASP.NET Web application, the Dialog.aspx page is used as a Template. To customize the pop-up Window's Template, handle the PopupWindowShowAction.CustomizePopupWindowParams event that occurs after assigning the Template to the Window. Use the handler's CustomizeTemplateEventArgs.Template parameter to access the Template. The LinkUnlinkController handles this event to add the Search functionality to the Template, if required. By default, this functionality is activated when a created List View's collection source contains more than 25 objects. This count represents the minimum number of objects required to activate the Search functionality. It is specified by the IModelOptions.LookupSmallCollectionItemCount property of the Application Model's Options node.

There are other modes for showing the List View and the Search functionality in the Link Action's pop-up Window. To select the required mode, use the LookupEditorModeAttribute for the collection property. Alternatively, you can use the Model Editor. The value of the LookupEditorMode attribute's mode parameter is set for the IModelCommonMemberViewItem.LookupEditorMode property of the BOModel | <Class> | OwnMembers | <Member> node, corresponding to the current collection property. For details, refer to the How to: Add a Search Action to Lookup Property Editors and Link Pop-up Windows topic.

If you do not want to support the Search functionality, or need to modify it for a particular Link Action's pop-up Widnow, inherit from the LinkUnlinkController and override the CustomizeLinkTemplate method.

Note

The LookupEditorMode, DataSourceCriteria and DataSourceProperty features are supported when the Link Action's List View is created using information from a LookupListView node. This node is specified by the LinkView property of the DetailView | Items | PropertyEditor node, corresponding to the current collection property.

To add an Action to the Link Action's pop-up Window, first determine what Action Containers can be included in the Window's Template. For information on this, refer to the Add Actions to a Popup Window topic.

You can provide a custom list of the objects to be linked by the Link Action. For this purpose, handle the QueryLinkObjects event.

When implementing a custom Controller to modify the behavior of the LinkUnlinkController or its Link Action, you may have to determine whether the current List View is the one of the Link Action's pop-up Windows. For this purpose, use one of the following criteria:

  • Use the List View's ID:

  • Use the Template context of the List View's Window:

By default, the Link Action is active under the following conditions:

  • If the current List View's collection source is of the PropertyCollectionSource type, which is satisfied for List Views displaying collection properties.
  • The current List View is not read-only.
  • The applied Security System does not prohibit the current View's access.
  • The collection property represents the Many-to-Many relationship's part; or it represents the One-to-Many relationship's Many part, being non-aggregated.

To ascertain why the Link Action is currently deactivated or disabled, use the DiagnosticInfo Action. If you need to change the Action's "active" or "enabled" state in code, use its ActionBase.Active or ActionBase.Enabled property, respectively.

Information on the Link Action is available in the Application Model's IModelActionDesign node. To access it, use the Model Editor.

Expanded See Also

Is this topic helpful?​​​​​​​