using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; namespace Csla.Web { /// /// Argument object used in the SelectObject event. /// [Serializable] public class SelectObjectArgs : EventArgs { private object _businessObject; private string _sortExpression; private string _sortProperty; private ListSortDirection _sortDirection; private int _startRowIndex; private int _maximumRows; private bool _retrieveTotalRowCount; /// /// Get or set a reference to the business object /// that is created and populated by the SelectObject /// event handler in the web page. /// /// A reference to a CSLA .NET business object. public object BusinessObject { get { return _businessObject; } set { _businessObject = value; } } /// /// Gets the sort expression that should be used to /// sort the data being returned to the data source /// control. /// public string SortExpression { get { return _sortExpression; } } /// /// Gets the property name for the sort if only one /// property/column name is specified. /// /// /// If multiple properties/columns are specified /// for the sort, you must parse the value from /// to find all the /// property names and sort directions for the sort. /// public string SortProperty { get { return _sortProperty; } } /// /// Gets the sort direction for the sort if only /// one property/column name is specified. /// /// /// If multiple properties/columns are specified /// for the sort, you must parse the value from /// to find all the /// property names and sort directions for the sort. /// public ListSortDirection SortDirection { get { return _sortDirection; } } /// /// Gets the index for the first row that will be /// displayed. This should be the first row in /// the resulting collection set into the /// property. /// public int StartRowIndex { get { return _startRowIndex; } } /// /// Gets the maximum number of rows that /// should be returned as a result of this /// query. For paged collections, this is the /// page size. /// public int MaximumRows { get { return _maximumRows; } } /// /// Gets a value indicating whether the /// query should return the total row count /// through the /// /// interface. /// public bool RetrieveTotalRowCount { get { return _retrieveTotalRowCount; } } /// /// Creates an instance of the object, initializing /// it with values from data binding. /// /// Values provided from data binding. public SelectObjectArgs(System.Web.UI.DataSourceSelectArguments args) { _startRowIndex = args.StartRowIndex; _maximumRows = args.MaximumRows; _retrieveTotalRowCount = args.RetrieveTotalRowCount; _sortExpression = args.SortExpression; if (!(string.IsNullOrEmpty(_sortExpression))) { if (_sortExpression.Length >= 5 && _sortExpression.Substring(_sortExpression.Length - 5) == " DESC") { _sortProperty = _sortExpression.Substring(0, _sortExpression.Length - 5); _sortDirection = ListSortDirection.Descending; } else { _sortProperty = args.SortExpression; _sortDirection = ListSortDirection.Ascending; } } } } }