158 lines
4.0 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
namespace Csla.Web
{
/// <summary>
/// Argument object used in the SelectObject event.
/// </summary>
[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;
/// <summary>
/// Get or set a reference to the business object
/// that is created and populated by the SelectObject
/// event handler in the web page.
/// </summary>
/// <value>A reference to a CSLA .NET business object.</value>
public object BusinessObject
{
get { return _businessObject; }
set { _businessObject = value; }
}
/// <summary>
/// Gets the sort expression that should be used to
/// sort the data being returned to the data source
/// control.
/// </summary>
public string SortExpression
{
get
{
return _sortExpression;
}
}
/// <summary>
/// Gets the property name for the sort if only one
/// property/column name is specified.
/// </summary>
/// <remarks>
/// If multiple properties/columns are specified
/// for the sort, you must parse the value from
/// <see cref="SortExpression"/> to find all the
/// property names and sort directions for the sort.
/// </remarks>
public string SortProperty
{
get
{
return _sortProperty;
}
}
/// <summary>
/// Gets the sort direction for the sort if only
/// one property/column name is specified.
/// </summary>
/// <remarks>
/// If multiple properties/columns are specified
/// for the sort, you must parse the value from
/// <see cref="SortExpression"/> to find all the
/// property names and sort directions for the sort.
/// </remarks>
public ListSortDirection SortDirection
{
get
{
return _sortDirection;
}
}
/// <summary>
/// Gets the index for the first row that will be
/// displayed. This should be the first row in
/// the resulting collection set into the
/// <see cref="BusinessObject"/> property.
/// </summary>
public int StartRowIndex
{
get
{
return _startRowIndex;
}
}
/// <summary>
/// Gets the maximum number of rows that
/// should be returned as a result of this
/// query. For paged collections, this is the
/// page size.
/// </summary>
public int MaximumRows
{
get
{
return _maximumRows;
}
}
/// <summary>
/// Gets a value indicating whether the
/// query should return the total row count
/// through the
/// <see cref="Csla.Core.IReportTotalRowCount"/>
/// interface.
/// </summary>
public bool RetrieveTotalRowCount
{
get
{
return _retrieveTotalRowCount;
}
}
/// <summary>
/// Creates an instance of the object, initializing
/// it with values from data binding.
/// </summary>
/// <param name="args">Values provided from data binding.</param>
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;
}
}
}
}
}