a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
151 lines
2.6 KiB
C#
151 lines
2.6 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Web;
|
|
using System.Web.DynamicData;
|
|
using System.Web.UI;
|
|
using System.Web.UI.WebControls;
|
|
|
|
namespace MonoTests.DataSource
|
|
{
|
|
[PersistChildren (false)]
|
|
[ParseChildren (true)]
|
|
public class DynamicDataSource : DataSourceControl, IDynamicDataSource
|
|
{
|
|
const string DEFAULT_VIEW_NAME = "DefaultView";
|
|
static readonly string[] emptyNames = new string[] { "DefaultView" };
|
|
|
|
DataSourceView defaultView;
|
|
ParameterCollection whereCollection;
|
|
Type dataContainerType;
|
|
|
|
public DynamicDataSource ()
|
|
: this (null)
|
|
{
|
|
}
|
|
|
|
public DynamicDataSource (string dataContainerTypeName)
|
|
{
|
|
this.DataContainerTypeName = dataContainerTypeName;
|
|
}
|
|
|
|
public DataSourceView DefaultView {
|
|
get {
|
|
if (defaultView == null)
|
|
defaultView = CreateView (DEFAULT_VIEW_NAME);
|
|
return defaultView;
|
|
}
|
|
}
|
|
|
|
public Type DataContainerType {
|
|
get {
|
|
if (dataContainerType == null)
|
|
dataContainerType = Type.GetType (DataContainerTypeName, true);
|
|
|
|
return dataContainerType;
|
|
}
|
|
}
|
|
|
|
public string DataContainerTypeName {
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public object DataContainerInstance
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
DataSourceView CreateView (string viewName)
|
|
{
|
|
Type genType = typeof (DynamicDataSourceView<>).GetGenericTypeDefinition ();
|
|
|
|
return Activator.CreateInstance (genType.MakeGenericType (new Type[] { ContextType }), this, viewName) as DataSourceView;
|
|
}
|
|
|
|
#region DataSourceControl Members
|
|
protected override DataSourceView GetView (string viewName)
|
|
{
|
|
if (String.IsNullOrEmpty (viewName))
|
|
return DefaultView;
|
|
|
|
return CreateView (viewName);
|
|
}
|
|
#endregion
|
|
|
|
#region IDynamicDataSource Members
|
|
|
|
public bool AutoGenerateWhereClause
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public Type ContextType
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public bool EnableDelete
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public bool EnableInsert
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public bool EnableUpdate
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public string EntitySetName
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public event EventHandler<DynamicValidatorEventArgs> Exception;
|
|
|
|
public string Where
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
[PersistenceMode (PersistenceMode.InnerProperty)]
|
|
public ParameterCollection WhereParameters
|
|
{
|
|
get
|
|
{
|
|
if (whereCollection == null)
|
|
whereCollection = new ParameterCollection ();
|
|
return whereCollection;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region IDataSource Members
|
|
DataSourceView IDataSource.GetView (string viewName)
|
|
{
|
|
return GetView (viewName);
|
|
}
|
|
|
|
ICollection IDataSource.GetViewNames ()
|
|
{
|
|
return emptyNames;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|