149 lines
5.0 KiB
VB.net
149 lines
5.0 KiB
VB.net
' Developer Express Code Central Example:
|
|
' How to prevent sorting by columns in a ListView
|
|
'
|
|
' This example provides a workaround solution to the
|
|
' http://www.devexpress.com/scid=S131144 suggestion. Below is the list of
|
|
' implemented features:
|
|
' 1. AllowSortAttribute - this is a regular attribute class
|
|
' that can be used in your code to mark either a business class or its property,
|
|
' to specify whether you want to allow columns to be sorted in the whole class, or
|
|
' for only a specific column:
|
|
'
|
|
' [AttributeUsage(AttributeTargets.Interface |
|
|
' AttributeTargets.Class | AttributeTargets.Field |
|
|
' AttributeTargets.Property)]
|
|
' public class AllowSortAttribute : Attribute
|
|
' {
|
|
' public AllowSortAttribute(bool allowSort) {...}
|
|
' public AllowSortAttribute()
|
|
' : this(true) { }
|
|
' ...
|
|
'
|
|
'
|
|
' See these examples below:
|
|
' a) This code prevents
|
|
' sorting by all columns in the
|
|
' ListView:
|
|
'
|
|
' [DefaultClassOptions]
|
|
' [AllowSort(false)]
|
|
' public class DemoIssue :
|
|
' BaseObject {
|
|
' ...
|
|
'
|
|
'
|
|
' b) This code prevents sorting by the Description column
|
|
' in the ListView:
|
|
'
|
|
' private string _Description;
|
|
' [AllowSort(false)]
|
|
' public
|
|
' string Description {
|
|
' get { return _Description; }
|
|
' set {
|
|
' SetPropertyValue("Description", ref _Description, value); }
|
|
' }
|
|
'
|
|
' When this
|
|
' attribute is applied to a class, its value is used to calculate the default
|
|
' value of the DefaultListViewAllowSortAttribute attribute on the BOModel | Class
|
|
' node level in the application model.
|
|
' When this attribute is applied to a
|
|
' property, its value is used to calculate the default value of the AllowSort
|
|
' attribute on the BOModel | Class | Member node level in the application
|
|
' model.
|
|
'
|
|
' 2. DefaultListViewAllowSortAttribute - this is an attribute declared
|
|
' on the BOModel | Class node level in the application model. You can use it to
|
|
' control the default sorting behavior for all ListViews of a business class. The
|
|
' value of this attribute is used to calculate the value of the attribute on the
|
|
' Views | ListView node level.
|
|
'
|
|
' 3. AllowSort - this is an attribute declared on
|
|
' the BOModel | Member, Views | ListView and ListView | Columns | ColumnInfo nodes
|
|
' level in the application model. You can use this attribute to flexibly control
|
|
' the sorting behavior of columns.
|
|
'
|
|
' 4. Sorting management, with the help of the
|
|
' AllowSort attribute, is supported in both Windows Forms and ASP.NET applications
|
|
' for the GridListEditor and ASPxGridListEditor correspondingly.
|
|
'
|
|
' See
|
|
' Also:
|
|
' http://www.devexpress.com/scid=E1253
|
|
' http://www.devexpress.com/scid=E1276
|
|
' Sorting
|
|
' (ms-help://DevExpress.WindowsForms/CustomDocument3499.htm)
|
|
' Sorting
|
|
' (ms-help://DevExpress.AspNet/CustomDocument3714.htm)
|
|
'
|
|
' You can find sample updates and versions for different programming languages here:
|
|
' http://www.devexpress.com/example=E1254
|
|
|
|
Imports Microsoft.VisualBasic
|
|
Imports System
|
|
Imports System.Collections.Generic
|
|
Imports System.Text
|
|
Imports DevExpress.Persistent.Base
|
|
Imports DevExpress.Xpo
|
|
Imports DevExpress.Persistent.BaseImpl
|
|
Imports DevExpress.ExpressApp
|
|
Imports DevExpress.Xpo.DB
|
|
Imports DevExpress.Xpo.Metadata
|
|
Imports DevExpress.Data
|
|
Imports DevExpress.ExpressApp.DC
|
|
Imports DevExpress.ExpressApp.Model
|
|
|
|
|
|
<AttributeUsage(AttributeTargets.Interface Or AttributeTargets.Class Or AttributeTargets.Field Or AttributeTargets.Property)> _
|
|
Public Class AllowSortAttribute
|
|
Inherits Attribute
|
|
Public Const DefaultListViewAllowSortAttributeName As String = "DefaultListViewAllowSort"
|
|
Public Const AllowSortAttributeName As String = "AllowSort"
|
|
Public Shared [Default] As New AllowSortAttribute(True)
|
|
Private allowSortCore As Boolean = True
|
|
Public Sub New()
|
|
Me.New(True)
|
|
End Sub
|
|
Public Sub New(ByVal allowSort As Boolean)
|
|
Me.allowSortCore = allowSort
|
|
End Sub
|
|
Public Property AllowSort() As Boolean
|
|
Get
|
|
Return allowSortCore
|
|
End Get
|
|
Set(ByVal value As Boolean)
|
|
allowSortCore = value
|
|
End Set
|
|
End Property
|
|
End Class
|
|
|
|
|
|
Public MustInherit Class AllowSortListViewController
|
|
Inherits ViewController(Of ListView)
|
|
Protected MustOverride Sub UpdateAllowSort()
|
|
Private Sub ListView_InfoChanged(ByVal sender As Object, ByVal e As EventArgs)
|
|
UpdateAllowSort()
|
|
End Sub
|
|
Protected Function GetAllowSortListView() As Boolean
|
|
If View.Model IsNot Nothing Then
|
|
Return (CType(View.Model, IModelListViewAllowSort)).AllowSort
|
|
End If
|
|
Return False
|
|
End Function
|
|
Protected Function GetAllowSortColumn(ByVal column As IModelColumn) As Boolean
|
|
If column IsNot Nothing AndAlso GetAllowSortListView() Then
|
|
Return (CType(column, IModelColumnAllowSort)).AllowSort
|
|
End If
|
|
Return False
|
|
End Function
|
|
Protected Overloads Overrides Sub OnActivated()
|
|
MyBase.OnActivated()
|
|
AddHandler View.ModelChanged, AddressOf ListView_InfoChanged
|
|
End Sub
|
|
Protected Overloads Overrides Sub OnDeactivated()
|
|
RemoveHandler View.ModelChanged, AddressOf ListView_InfoChanged
|
|
MyBase.OnDeactivated()
|
|
End Sub
|
|
End Class
|