You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
@ -0,0 +1,156 @@
|
||||
namespace System.Web.UI.WebControls {
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using System.Web.Resources;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Globalization;
|
||||
using System.Web.UI.WebControls.Expressions;
|
||||
|
||||
[
|
||||
ParseChildren(true),
|
||||
PersistChildren(false)
|
||||
]
|
||||
public abstract class QueryableDataSource : DataSourceControl, IQueryableDataSource {
|
||||
private const string DefaultViewName = "DefaultView";
|
||||
private ReadOnlyCollection<string> _viewNames;
|
||||
private QueryableDataSourceView _view;
|
||||
private readonly new IPage _page;
|
||||
|
||||
internal QueryableDataSource(IPage page) {
|
||||
_page = page;
|
||||
}
|
||||
|
||||
internal QueryableDataSource(QueryableDataSourceView view) {
|
||||
_view = view;
|
||||
}
|
||||
|
||||
protected QueryableDataSource() {
|
||||
|
||||
}
|
||||
|
||||
[SuppressMessage("Microsoft.Naming", "CA1721:PropertyNamesShouldNotMatchGetMethods", Justification="View is used by derived types")]
|
||||
private QueryableDataSourceView View {
|
||||
get {
|
||||
if (_view == null) {
|
||||
_view = CreateQueryableView();
|
||||
}
|
||||
return _view;
|
||||
}
|
||||
}
|
||||
|
||||
internal IPage IPage {
|
||||
get {
|
||||
if (_page != null) {
|
||||
return _page;
|
||||
}
|
||||
else {
|
||||
Page page = Page;
|
||||
if (page == null) {
|
||||
throw new InvalidOperationException(AtlasWeb.Common_PageCannotBeNull);
|
||||
}
|
||||
return new PageWrapper(page);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract QueryableDataSourceView CreateQueryableView();
|
||||
|
||||
protected override ICollection GetViewNames() {
|
||||
if (_viewNames == null) {
|
||||
_viewNames = new ReadOnlyCollection<string>(new[] { DefaultViewName });
|
||||
}
|
||||
return _viewNames;
|
||||
}
|
||||
|
||||
protected override DataSourceView GetView(string viewName) {
|
||||
if (viewName == null) {
|
||||
throw new ArgumentNullException("viewName");
|
||||
}
|
||||
// viewName comes from the DataMember property on the databound control and is an empty string
|
||||
// by default. An empty string should be treated as if it were the default view name.
|
||||
if ((viewName.Length != 0) &&
|
||||
!String.Equals(viewName, DefaultViewName, StringComparison.OrdinalIgnoreCase)) {
|
||||
throw new ArgumentException(String.Format(CultureInfo.InvariantCulture,
|
||||
AtlasWeb.LinqDataSource_InvalidViewName, ID, DefaultViewName), "viewName");
|
||||
}
|
||||
return View;
|
||||
}
|
||||
|
||||
[SuppressMessage("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers", MessageId = "0#")]
|
||||
protected internal override void OnInit(EventArgs e) {
|
||||
base.OnInit(e);
|
||||
IPage.LoadComplete += new EventHandler(OnPageLoadComplete);
|
||||
}
|
||||
|
||||
// Used for unit testing only
|
||||
internal void SetView(QueryableDataSourceView view) {
|
||||
_view = view;
|
||||
}
|
||||
|
||||
protected virtual void UpdateParameterVales() {
|
||||
View.WhereParameters.UpdateValues(Context, this);
|
||||
View.OrderGroupsByParameters.UpdateValues(Context, this);
|
||||
View.GroupByParameters.UpdateValues(Context, this);
|
||||
View.OrderByParameters.UpdateValues(Context, this);
|
||||
View.SelectNewParameters.UpdateValues(Context, this);
|
||||
}
|
||||
|
||||
private void OnPageLoadComplete(object sender, EventArgs e) {
|
||||
UpdateParameterVales();
|
||||
}
|
||||
|
||||
protected override object SaveViewState() {
|
||||
Pair myState = new Pair();
|
||||
myState.First = base.SaveViewState();
|
||||
if (_view != null) {
|
||||
myState.Second = ((IStateManager)_view).SaveViewState();
|
||||
}
|
||||
if ((myState.First == null) &&
|
||||
(myState.Second == null)) {
|
||||
return null;
|
||||
}
|
||||
return myState;
|
||||
}
|
||||
|
||||
protected override void TrackViewState() {
|
||||
base.TrackViewState();
|
||||
if (_view != null) {
|
||||
((IStateManager)_view).TrackViewState();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void LoadViewState(object savedState) {
|
||||
if (savedState == null) {
|
||||
base.LoadViewState(null);
|
||||
}
|
||||
else {
|
||||
Pair myState = (Pair)savedState;
|
||||
base.LoadViewState(myState.First);
|
||||
if (myState.Second != null) {
|
||||
((IStateManager)View).LoadViewState(myState.Second);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#region IQueryableDataSource Members
|
||||
|
||||
public void RaiseViewChanged() {
|
||||
View.RaiseViewChanged();
|
||||
}
|
||||
|
||||
public event EventHandler<QueryCreatedEventArgs> QueryCreated {
|
||||
add {
|
||||
View.QueryCreated += value;
|
||||
}
|
||||
remove {
|
||||
View.QueryCreated -= value;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user