2 // System.Web.UI.WebControls.ObjectDataSource
5 // Lluis Sanchez Gual (lluis@novell.com)
7 // (C) 2005 Novell, Inc. (http://www.novell.com)
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32 using System.Collections;
33 using System.Collections.Specialized;
34 using System.ComponentModel;
36 using System.Security.Permissions;
39 namespace System.Web.UI.WebControls
42 [DefaultEventAttribute ("Selecting")]
43 [DefaultPropertyAttribute ("TypeName")]
44 [DesignerAttribute ("System.Web.UI.Design.WebControls.ObjectDataSourceDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
45 [ParseChildrenAttribute (true)]
46 [PersistChildrenAttribute (false)]
47 [AspNetHostingPermissionAttribute (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
48 [AspNetHostingPermissionAttribute (SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
49 [ToolboxBitmap ("bitmap file goes here")]
50 public class ObjectDataSource : DataSourceControl
52 ObjectDataSourceView defaultView;
54 public ObjectDataSource ()
58 public ObjectDataSource (string typeName, string selectMethod)
60 SelectMethod = selectMethod;
64 ObjectDataSourceView DefaultView {
66 if (defaultView == null)
67 defaultView = new ObjectDataSourceView (this, "DefaultView", Context);
72 public event ObjectDataSourceStatusEventHandler Deleted {
73 add { DefaultView.Deleted += value; }
74 remove { DefaultView.Deleted -= value; }
77 public event ObjectDataSourceMethodEventHandler Deleting {
78 add { DefaultView.Deleting += value; }
79 remove { DefaultView.Deleting -= value; }
82 public event ObjectDataSourceFilteringEventHandler Filtering {
83 add { DefaultView.Filtering += value; }
84 remove { DefaultView.Filtering -= value; }
87 public event ObjectDataSourceStatusEventHandler Inserted {
88 add { DefaultView.Inserted += value; }
89 remove { DefaultView.Inserted -= value; }
92 public event ObjectDataSourceMethodEventHandler Inserting {
93 add { DefaultView.Inserting += value; }
94 remove { DefaultView.Inserting -= value; }
97 public event ObjectDataSourceObjectEventHandler ObjectCreated {
98 add { DefaultView.ObjectCreated += value; }
99 remove { DefaultView.ObjectCreated -= value; }
102 public event ObjectDataSourceObjectEventHandler ObjectCreating {
103 add { DefaultView.ObjectCreating += value; }
104 remove { DefaultView.ObjectCreating -= value; }
107 public event ObjectDataSourceDisposingEventHandler ObjectDisposing {
108 add { DefaultView.ObjectDisposing += value; }
109 remove { DefaultView.ObjectDisposing -= value; }
112 /* public event ObjectDataSourceResolvingMethodEventHandler ResolvingMethod {
113 add { DefaultView.ResolvingMethod += value; }
114 remove { DefaultView.ResolvingMethod -= value; }
117 public event ObjectDataSourceStatusEventHandler Selected {
118 add { DefaultView.Selected += value; }
119 remove { DefaultView.Selected -= value; }
122 public event ObjectDataSourceSelectingEventHandler Selecting {
123 add { DefaultView.Selecting += value; }
124 remove { DefaultView.Selecting -= value; }
127 public event ObjectDataSourceStatusEventHandler Updated {
128 add { DefaultView.Updated += value; }
129 remove { DefaultView.Updated -= value; }
132 public event ObjectDataSourceMethodEventHandler Updating {
133 add { DefaultView.Updating += value; }
134 remove { DefaultView.Updating -= value; }
138 [TypeConverter ("System.Web.UI.DataSourceCacheDurationConverter, " + Consts.AssemblySystem_Web)]
140 public virtual int CacheDuration
143 throw new NotImplementedException ();
146 throw new NotImplementedException ();
150 [DefaultValue (DataSourceCacheExpiry.Absolute)]
152 public virtual DataSourceCacheExpiry CacheExpirationPolicy
155 throw new NotImplementedException ();
158 throw new NotImplementedException ();
164 public virtual string CacheKeyDependency
167 throw new NotImplementedException ();
170 throw new NotImplementedException ();
176 [WebCategoryAttribute ("Data")]
177 [DefaultValueAttribute (ConflictOptions.OverwriteChanges)]
178 public ConflictOptions ConflictDetection {
179 get { return DefaultView.ConflictDetection; }
180 set { DefaultView.ConflictDetection = value; }
183 [DefaultValue (false)]
185 public bool ConvertNullToDBNull
188 throw new NotImplementedException ();
191 throw new NotImplementedException ();
196 [WebCategoryAttribute ("Data")]
197 [DefaultValueAttribute ("")]
198 public string DataObjectTypeName {
199 get { return DefaultView.DataObjectTypeName; }
200 set { DefaultView.DataObjectTypeName = value; }
203 [WebCategoryAttribute ("Data")]
204 [DefaultValueAttribute ("")]
205 public string DeleteMethod {
206 get { return DefaultView.DeleteMethod; }
207 set { DefaultView.DeleteMethod = value; }
210 [WebCategoryAttribute ("Data")]
211 [MergablePropertyAttribute (false)]
212 [EditorAttribute ("System.Web.UI.Design.WebControls.ParameterCollectionEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
213 [DefaultValueAttribute (null)]
214 [PersistenceModeAttribute (PersistenceMode.InnerProperty)]
215 public ParameterCollection DeleteParameters {
216 get { return DefaultView.DeleteParameters; }
219 [DefaultValue (false)]
221 public virtual bool EnableCaching
224 throw new NotImplementedException ();
227 throw new NotImplementedException ();
232 [WebCategoryAttribute ("Paging")]
233 [DefaultValueAttribute (false)]
234 public bool EnablePaging {
235 get { return DefaultView.EnablePaging; }
236 set { DefaultView.EnablePaging = value; }
239 [WebCategoryAttribute ("Data")]
240 [DefaultValueAttribute ("")]
241 public string FilterExpression {
242 get { return DefaultView.FilterExpression; }
243 set { DefaultView.FilterExpression = value; }
246 [WebCategoryAttribute ("Data")]
247 [MergablePropertyAttribute (false)]
248 [EditorAttribute ("System.Web.UI.Design.WebControls.ParameterCollectionEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
249 [DefaultValueAttribute (null)]
250 [PersistenceModeAttribute (PersistenceMode.InnerProperty)]
251 public ParameterCollection FilterParameters {
252 get { return DefaultView.FilterParameters; }
255 [DefaultValueAttribute ("")]
256 [WebCategoryAttribute ("Data")]
257 public string InsertMethod {
258 get { return DefaultView.InsertMethod; }
259 set { DefaultView.InsertMethod = value; }
262 [WebCategoryAttribute ("Data")]
263 [MergablePropertyAttribute (false)]
264 [EditorAttribute ("System.Web.UI.Design.WebControls.ParameterCollectionEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
265 [DefaultValueAttribute (null)]
266 [PersistenceModeAttribute (PersistenceMode.InnerProperty)]
267 public ParameterCollection InsertParameters {
268 get { return DefaultView.InsertParameters; }
271 [WebCategoryAttribute ("Paging")]
272 [DefaultValueAttribute ("maximumRows")]
273 public string MaximumRowsParameterName {
274 get { return DefaultView.MaximumRowsParameterName; }
275 set { DefaultView.MaximumRowsParameterName = value; }
278 [WebCategoryAttribute ("Data")]
279 [DefaultValueAttribute ("{0}")]
280 public string OldValuesParameterFormatString {
281 get { return DefaultView.OldValuesParameterFormatString; }
282 set { DefaultView.OldValuesParameterFormatString = value; }
285 [WebCategoryAttribute ("Paging")]
286 [DefaultValueAttribute ("")]
287 public string SelectCountMethod {
288 get { return DefaultView.SelectCountMethod; }
289 set { DefaultView.SelectCountMethod = value; }
292 [DefaultValueAttribute ("")]
293 [WebCategoryAttribute ("Data")]
294 public string SelectMethod {
295 get { return DefaultView.SelectMethod; }
296 set { DefaultView.SelectMethod = value; }
299 [WebCategoryAttribute ("Data")]
300 [MergablePropertyAttribute (false)]
301 [EditorAttribute ("System.Web.UI.Design.WebControls.ParameterCollectionEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
302 [DefaultValueAttribute (null)]
303 [PersistenceModeAttribute (PersistenceMode.InnerProperty)]
304 public ParameterCollection SelectParameters {
305 get { return DefaultView.SelectParameters; }
308 [DefaultValueAttribute ("")]
309 [WebCategoryAttribute ("Data")]
310 public string SortParameterName {
311 get { return DefaultView.SortParameterName; }
312 set { DefaultView.SortParameterName = value; }
317 public virtual string SqlCacheDependency
320 throw new NotImplementedException ();
323 throw new NotImplementedException ();
328 [WebCategoryAttribute ("Paging")]
329 [DefaultValueAttribute ("startRowIndex")]
330 public string StartRowIndexParameterName {
331 get { return DefaultView.StartRowIndexParameterName; }
332 set { DefaultView.StartRowIndexParameterName = value; }
335 [DefaultValueAttribute ("")]
336 [WebCategoryAttribute ("Data")]
337 public string TypeName {
338 get { return DefaultView.TypeName; }
339 set { DefaultView.TypeName = value; }
342 [DefaultValueAttribute ("")]
343 [WebCategoryAttribute ("Data")]
344 public string UpdateMethod {
345 get { return DefaultView.UpdateMethod; }
346 set { DefaultView.UpdateMethod = value; }
349 [WebCategoryAttribute ("Data")]
350 [MergablePropertyAttribute (false)]
351 [EditorAttribute ("System.Web.UI.Design.WebControls.ParameterCollectionEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
352 [DefaultValueAttribute (null)]
353 [PersistenceModeAttribute (PersistenceMode.InnerProperty)]
354 public ParameterCollection UpdateParameters {
355 get { return DefaultView.UpdateParameters; }
358 protected override DataSourceView GetView (string viewName)
363 protected override ICollection GetViewNames ()
365 return new string [] { "DefaultView" };
368 public IEnumerable Select ()
370 return DefaultView.Select (DataSourceSelectArguments.Empty);
375 Hashtable empty = new Hashtable ();
376 return DefaultView.Update (empty, empty, null);
381 Hashtable empty = new Hashtable ();
382 return DefaultView.Delete (empty, null);
387 Hashtable empty = new Hashtable ();
388 return DefaultView.Insert (empty);
391 protected internal override void OnInit (EventArgs e)
393 Page.LoadComplete += OnPageLoadComplete;
396 void OnPageLoadComplete (object sender, EventArgs e)
398 DeleteParameters.UpdateValues (Context, this);
399 FilterParameters.UpdateValues (Context, this);
400 InsertParameters.UpdateValues (Context, this);
401 SelectParameters.UpdateValues (Context, this);
402 UpdateParameters.UpdateValues (Context, this);
405 protected override void LoadViewState (object savedState)
407 if (savedState == null) {
408 base.LoadViewState (null);
409 ((IStateManager)DefaultView).LoadViewState (null);
411 Pair p = (Pair) savedState;
412 base.LoadViewState (p.First);
413 ((IStateManager)DefaultView).LoadViewState (p.Second);
417 protected override object SaveViewState()
419 object baseState = base.SaveViewState ();
420 object viewState = ((IStateManager)DefaultView).SaveViewState ();
421 if (baseState != null || viewState != null) return new Pair (baseState, viewState);
425 protected override void TrackViewState()
427 ((IStateManager)DefaultView).TrackViewState ();