2 // System.Web.UI.WebControls.SqlDataSourceView
5 // Ben Maurer (bmaurer@users.sourceforge.net)
11 using System.Collections;
12 using System.Collections.Specialized;
15 using System.ComponentModel;
17 namespace System.Web.UI.WebControls {
18 public class SqlDataSourceView : DataSourceView, IStateManager {
20 public SqlDataSourceView (SqlDataSource owner, string name)
32 public override int Delete (IDictionary parameters)
34 throw new NotImplementedException ();
43 public override int Insert (IDictionary values)
45 throw new NotImplementedException ();
49 public override IEnumerable Select ()
51 throw new NotImplementedException ();
56 return Update (null, null);
60 public override int Update (IDictionary parameters, IDictionary values)
62 throw new NotImplementedException ();
65 void IStateManager.LoadViewState (object savedState)
67 LoadViewState (savedState);
70 object IStateManager.SaveViewState ()
72 return SaveViewState ();
75 void IStateManager.TrackViewState ()
80 protected virtual void LoadViewState (object savedState)
82 object [] vs = savedState as object [];
86 if (vs [0] != null) ((IStateManager) deleteParameters).LoadViewState (vs [0]);
87 if (vs [1] != null) ((IStateManager) filterParameters).LoadViewState (vs [1]);
88 if (vs [2] != null) ((IStateManager) insertParameters).LoadViewState (vs [2]);
89 if (vs [3] != null) ((IStateManager) selectParameters).LoadViewState (vs [3]);
90 if (vs [4] != null) ((IStateManager) updateParameters).LoadViewState (vs [4]);
91 if (vs [5] != null) ((IStateManager) viewState).LoadViewState (vs [5]);
94 protected virtual object SaveViewState ()
96 object [] vs = new object [6];
98 if (deleteParameters != null) vs [0] = ((IStateManager) deleteParameters).SaveViewState ();
99 if (filterParameters != null) vs [1] = ((IStateManager) filterParameters).SaveViewState ();
100 if (insertParameters != null) vs [2] = ((IStateManager) insertParameters).SaveViewState ();
101 if (selectParameters != null) vs [3] = ((IStateManager) selectParameters).SaveViewState ();
102 if (updateParameters != null) vs [4] = ((IStateManager) updateParameters).SaveViewState ();
103 if (viewState != null) vs [5] = ((IStateManager) viewState).SaveViewState ();
105 foreach (object o in vs)
106 if (o != null) return vs;
110 protected virtual void TrackViewState ()
114 if (deleteParameters != null) ((IStateManager) deleteParameters).TrackViewState ();
115 if (filterParameters != null) ((IStateManager) filterParameters).TrackViewState ();
116 if (insertParameters != null) ((IStateManager) insertParameters).TrackViewState ();
117 if (selectParameters != null) ((IStateManager) selectParameters).TrackViewState ();
118 if (updateParameters != null) ((IStateManager) updateParameters).TrackViewState ();
119 if (viewState != null) ((IStateManager) viewState).TrackViewState ();
122 protected bool IsTrackingViewState {
123 get { return tracking; }
126 bool IStateManager.IsTrackingViewState {
127 get { return IsTrackingViewState; }
130 public string DeleteCommand {
132 string val = ViewState ["DeleteCommand"] as string;
133 return val == null ? "" : val;
135 set { ViewState ["DeleteCommand"] = value; }
138 public string FilterExpression {
140 string val = ViewState ["FilterExpression"] as string;
141 return val == null ? "" : val;
143 set { ViewState ["FilterExpression"] = value; }
146 public string InsertCommand {
148 string val = ViewState ["InsertCommand"] as string;
149 return val == null ? "" : val;
151 set { ViewState ["InsertCommand"] = value; }
154 public string SelectCommand {
156 string val = ViewState ["SelectCommand"] as string;
157 return val == null ? "" : val;
159 set { ViewState ["SelectCommand"] = value; }
162 public string UpdateCommand {
164 string val = ViewState ["UpdateCommand"] as string;
165 return val == null ? "" : val;
167 set { ViewState ["UpdateCommand"] = value; }
170 public override string SortExpression {
172 string val = ViewState ["SortExpression"] as string;
173 return val == null ? "" : val;
175 set { ViewState ["SortExpression"] = value; }
178 public override bool CanDelete {
179 get { return DeleteCommand != ""; }
182 public override bool CanInsert {
183 get { return UpdateCommand != ""; }
186 public override bool CanSort {
187 get { return owner.DataSourceMode == SqlDataSourceMode.DataSet; }
190 public override bool CanUpdate {
191 get { return UpdateCommand != ""; }
194 EventHandlerList events;
195 protected EventHandlerList Events {
198 events = new EventHandlerList ();
204 void ParametersChanged (object source, EventArgs args)
206 OnDataSourceViewChanged (EventArgs.Empty);
209 ParameterCollection GetParameterCollection (ref ParameterCollection output)
214 output = new ParameterCollection ();
215 output.ParametersChanged += new EventHandler (ParametersChanged);
217 if (IsTrackingViewState)
218 ((IStateManager) output).TrackViewState ();
223 public ParameterCollection DeleteParameters {
224 get { return GetParameterCollection (ref deleteParameters); }
227 public ParameterCollection FilterParameters {
228 get { return GetParameterCollection (ref filterParameters); }
231 public ParameterCollection InsertParameters {
232 get { return GetParameterCollection (ref insertParameters); }
235 public ParameterCollection SelectParameters {
236 get { return GetParameterCollection (ref selectParameters); }
239 public ParameterCollection UpdateParameters {
240 get { return GetParameterCollection (ref updateParameters); }
244 public override string Name {
248 protected virtual string ParameterPrefix {
253 protected StateBag ViewState {
255 if (viewState != null)
258 viewState = new StateBag ();
259 if (IsTrackingViewState)
260 viewState.TrackViewState ();
266 ParameterCollection deleteParameters;
267 ParameterCollection filterParameters;
268 ParameterCollection insertParameters;
269 ParameterCollection selectParameters;
270 ParameterCollection updateParameters;
277 static readonly object EventDataSourceViewChanged = new object ();
279 protected virtual void OnDataSourceViewChanged (EventArgs e)
281 if (events == null) return;
282 EventHandler h = events [EventDataSourceViewChanged] as EventHandler;
287 public event EventHandler DataSourceViewChanged {
288 add { Events.AddHandler (EventDataSourceViewChanged, value); }
289 remove { Events.RemoveHandler (EventDataSourceViewChanged, value); }
293 static readonly object EventDeleted = new object ();
294 protected virtual void OnDeleted (SqlDataSourceStatusEventArgs e)
296 if (events == null) return;
297 SqlDataSourceStatusEventHandler h = events [EventDeleted] as SqlDataSourceStatusEventHandler;
302 public event SqlDataSourceStatusEventHandler Deleted {
303 add { Events.AddHandler (EventDeleted, value); }
304 remove { Events.RemoveHandler (EventDeleted, value); }
307 static readonly object EventDeleting = new object ();
308 protected virtual void OnDeleting (SqlDataSourceCommandEventArgs e)
310 if (events == null) return;
311 SqlDataSourceCommandEventHandler h = events [EventDeleting] as SqlDataSourceCommandEventHandler;
315 public event SqlDataSourceCommandEventHandler Deleting {
316 add { Events.AddHandler (EventDeleting, value); }
317 remove { Events.RemoveHandler (EventDeleting, value); }
322 static readonly object EventInserted = new object ();
323 protected virtual void OnInserted (SqlDataSourceStatusEventArgs e)
325 if (events == null) return;
326 SqlDataSourceStatusEventHandler h = events [EventInserted] as SqlDataSourceStatusEventHandler;
331 public event SqlDataSourceStatusEventHandler Inserted {
332 add { Events.AddHandler (EventInserted, value); }
333 remove { Events.RemoveHandler (EventInserted, value); }
336 static readonly object EventInserting = new object ();
337 protected virtual void OnInserting (SqlDataSourceCommandEventArgs e)
339 if (events == null) return;
340 SqlDataSourceCommandEventHandler h = events [EventInserting] as SqlDataSourceCommandEventHandler;
344 public event SqlDataSourceCommandEventHandler Inserting {
345 add { Events.AddHandler (EventInserting, value); }
346 remove { Events.RemoveHandler (EventInserting, value); }
351 static readonly object EventSelected = new object ();
352 protected virtual void OnSelected (SqlDataSourceStatusEventArgs e)
354 if (events == null) return;
355 SqlDataSourceStatusEventHandler h = events [EventSelected] as SqlDataSourceStatusEventHandler;
360 public event SqlDataSourceStatusEventHandler Selected {
361 add { Events.AddHandler (EventSelected, value); }
362 remove { Events.RemoveHandler (EventSelected, value); }
365 static readonly object EventSelecting = new object ();
366 protected virtual void OnSelecting (SqlDataSourceCommandEventArgs e)
368 if (events == null) return;
369 SqlDataSourceCommandEventHandler h = events [EventSelecting] as SqlDataSourceCommandEventHandler;
373 public event SqlDataSourceCommandEventHandler Selecting {
374 add { Events.AddHandler (EventSelecting, value); }
375 remove { Events.RemoveHandler (EventSelecting, value); }
380 static readonly object EventUpdated = new object ();
381 protected virtual void OnUpdated (SqlDataSourceStatusEventArgs e)
383 if (events == null) return;
384 SqlDataSourceStatusEventHandler h = events [EventUpdated] as SqlDataSourceStatusEventHandler;
389 public event SqlDataSourceStatusEventHandler Updated {
390 add { Events.AddHandler (EventUpdated, value); }
391 remove { Events.RemoveHandler (EventUpdated, value); }
394 static readonly object EventUpdating = new object ();
395 protected virtual void OnUpdating (SqlDataSourceCommandEventArgs e)
397 if (events == null) return;
398 SqlDataSourceCommandEventHandler h = events [EventUpdating] as SqlDataSourceCommandEventHandler;
402 public event SqlDataSourceCommandEventHandler Updating {
403 add { Events.AddHandler (EventUpdating, value); }
404 remove { Events.RemoveHandler (EventUpdating, value); }