106 lines
3.2 KiB
C#
106 lines
3.2 KiB
C#
|
namespace System.Web.UI.WebControls.Expressions {
|
|||
|
using System.Collections;
|
|||
|
using System.Collections.ObjectModel;
|
|||
|
using System.Diagnostics.CodeAnalysis;
|
|||
|
using System.Web;
|
|||
|
using System.Web.UI;
|
|||
|
|
|||
|
public class DataSourceExpressionCollection : StateManagedCollection {
|
|||
|
private IQueryableDataSource _dataSource;
|
|||
|
|
|||
|
private static readonly Type[] knownTypes = new Type[] {
|
|||
|
typeof(SearchExpression),
|
|||
|
typeof(MethodExpression),
|
|||
|
typeof(OrderByExpression),
|
|||
|
typeof(RangeExpression),
|
|||
|
typeof(PropertyExpression),
|
|||
|
typeof(CustomExpression),
|
|||
|
};
|
|||
|
|
|||
|
public HttpContext Context {
|
|||
|
get;
|
|||
|
private set;
|
|||
|
}
|
|||
|
|
|||
|
public Control Owner {
|
|||
|
get;
|
|||
|
private set;
|
|||
|
}
|
|||
|
|
|||
|
public DataSourceExpression this[int index] {
|
|||
|
get {
|
|||
|
return (DataSourceExpression)((IList)this)[index];
|
|||
|
}
|
|||
|
set {
|
|||
|
((IList)this)[index] = value;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// Allows for nested expression blocks to be initilaized after the fact
|
|||
|
internal void SetContext(Control owner, HttpContext context, IQueryableDataSource dataSource) {
|
|||
|
Owner = owner;
|
|||
|
Context = context;
|
|||
|
_dataSource = dataSource;
|
|||
|
|
|||
|
foreach (DataSourceExpression expression in this) {
|
|||
|
expression.SetContext(owner, context, _dataSource);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void Add(DataSourceExpression expression) {
|
|||
|
((IList)this).Add(expression);
|
|||
|
}
|
|||
|
|
|||
|
protected override object CreateKnownType(int index) {
|
|||
|
switch (index) {
|
|||
|
case 0:
|
|||
|
return new SearchExpression();
|
|||
|
case 1:
|
|||
|
return new MethodExpression();
|
|||
|
case 2:
|
|||
|
return new OrderByExpression();
|
|||
|
case 3:
|
|||
|
return new RangeExpression();
|
|||
|
case 4:
|
|||
|
return new PropertyExpression();
|
|||
|
case 5:
|
|||
|
return new CustomExpression();
|
|||
|
default:
|
|||
|
throw new ArgumentOutOfRangeException("index");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void CopyTo(DataSourceExpression[] expressionArray, int index) {
|
|||
|
base.CopyTo(expressionArray, index);
|
|||
|
}
|
|||
|
|
|||
|
public void Contains(DataSourceExpression expression) {
|
|||
|
((IList)this).Contains(expression);
|
|||
|
}
|
|||
|
|
|||
|
protected override Type[] GetKnownTypes() {
|
|||
|
return knownTypes;
|
|||
|
}
|
|||
|
|
|||
|
public int IndexOf(DataSourceExpression expression) {
|
|||
|
return ((IList)this).IndexOf(expression);
|
|||
|
}
|
|||
|
|
|||
|
public void Insert(int index, DataSourceExpression expression) {
|
|||
|
((IList)this).Insert(index, expression);
|
|||
|
}
|
|||
|
|
|||
|
public void Remove(DataSourceExpression expression) {
|
|||
|
((IList)this).Remove(expression);
|
|||
|
}
|
|||
|
|
|||
|
public void RemoveAt(int index) {
|
|||
|
((IList)this).RemoveAt(index);
|
|||
|
}
|
|||
|
|
|||
|
protected override void SetDirtyObject(object o) {
|
|||
|
((DataSourceExpression)o).SetDirty();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|