158 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			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;
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |