SqlDataSourceView.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411
  1. //
  2. // System.Web.UI.WebControls.SqlDataSourceView
  3. //
  4. // Authors:
  5. // Ben Maurer ([email protected])
  6. //
  7. // (C) 2003 Ben Maurer
  8. //
  9. #if NET_1_2
  10. using System.Collections;
  11. using System.Collections.Specialized;
  12. using System.Text;
  13. using System.Data;
  14. using System.ComponentModel;
  15. namespace System.Web.UI.WebControls {
  16. public class SqlDataSourceView : DataSourceView, IStateManager {
  17. public SqlDataSourceView (SqlDataSource owner, string name)
  18. {
  19. this.owner = owner;
  20. this.name = name;
  21. }
  22. public int Delete ()
  23. {
  24. return Delete (null);
  25. }
  26. [MonoTODO]
  27. public override int Delete (IDictionary parameters)
  28. {
  29. throw new NotImplementedException ();
  30. }
  31. public int Insert ()
  32. {
  33. return Insert (null);
  34. }
  35. [MonoTODO]
  36. public override int Insert (IDictionary values)
  37. {
  38. throw new NotImplementedException ();
  39. }
  40. [MonoTODO]
  41. public override IEnumerable Select ()
  42. {
  43. throw new NotImplementedException ();
  44. }
  45. public int Update ()
  46. {
  47. return Update (null, null);
  48. }
  49. [MonoTODO]
  50. public override int Update (IDictionary parameters, IDictionary values)
  51. {
  52. throw new NotImplementedException ();
  53. }
  54. void IStateManager.LoadViewState (object savedState)
  55. {
  56. LoadViewState (savedState);
  57. }
  58. object IStateManager.SaveViewState ()
  59. {
  60. return SaveViewState ();
  61. }
  62. void IStateManager.TrackViewState ()
  63. {
  64. TrackViewState ();
  65. }
  66. protected virtual void LoadViewState (object savedState)
  67. {
  68. object [] vs = savedState as object [];
  69. if (vs == null)
  70. return;
  71. if (vs [0] != null) ((IStateManager) deleteParameters).LoadViewState (vs [0]);
  72. if (vs [1] != null) ((IStateManager) filterParameters).LoadViewState (vs [1]);
  73. if (vs [2] != null) ((IStateManager) insertParameters).LoadViewState (vs [2]);
  74. if (vs [3] != null) ((IStateManager) selectParameters).LoadViewState (vs [3]);
  75. if (vs [4] != null) ((IStateManager) updateParameters).LoadViewState (vs [4]);
  76. if (vs [5] != null) ((IStateManager) viewState).LoadViewState (vs [5]);
  77. }
  78. protected virtual object SaveViewState ()
  79. {
  80. object [] vs = new object [6];
  81. if (deleteParameters != null) vs [0] = ((IStateManager) deleteParameters).SaveViewState ();
  82. if (filterParameters != null) vs [1] = ((IStateManager) filterParameters).SaveViewState ();
  83. if (insertParameters != null) vs [2] = ((IStateManager) insertParameters).SaveViewState ();
  84. if (selectParameters != null) vs [3] = ((IStateManager) selectParameters).SaveViewState ();
  85. if (updateParameters != null) vs [4] = ((IStateManager) updateParameters).SaveViewState ();
  86. if (viewState != null) vs [5] = ((IStateManager) viewState).SaveViewState ();
  87. foreach (object o in vs)
  88. if (o != null) return vs;
  89. return null;
  90. }
  91. protected virtual void TrackViewState ()
  92. {
  93. tracking = true;
  94. if (deleteParameters != null) ((IStateManager) deleteParameters).TrackViewState ();
  95. if (filterParameters != null) ((IStateManager) filterParameters).TrackViewState ();
  96. if (insertParameters != null) ((IStateManager) insertParameters).TrackViewState ();
  97. if (selectParameters != null) ((IStateManager) selectParameters).TrackViewState ();
  98. if (updateParameters != null) ((IStateManager) updateParameters).TrackViewState ();
  99. if (viewState != null) ((IStateManager) viewState).TrackViewState ();
  100. }
  101. protected bool IsTrackingViewState {
  102. get { return tracking; }
  103. }
  104. bool IStateManager.IsTrackingViewState {
  105. get { return IsTrackingViewState; }
  106. }
  107. public string DeleteCommand {
  108. get {
  109. string val = ViewState ["DeleteCommand"] as string;
  110. return val == null ? "" : val;
  111. }
  112. set { ViewState ["DeleteCommand"] = value; }
  113. }
  114. public string FilterExpression {
  115. get {
  116. string val = ViewState ["FilterExpression"] as string;
  117. return val == null ? "" : val;
  118. }
  119. set { ViewState ["FilterExpression"] = value; }
  120. }
  121. public string InsertCommand {
  122. get {
  123. string val = ViewState ["InsertCommand"] as string;
  124. return val == null ? "" : val;
  125. }
  126. set { ViewState ["InsertCommand"] = value; }
  127. }
  128. public string SelectCommand {
  129. get {
  130. string val = ViewState ["SelectCommand"] as string;
  131. return val == null ? "" : val;
  132. }
  133. set { ViewState ["SelectCommand"] = value; }
  134. }
  135. public string UpdateCommand {
  136. get {
  137. string val = ViewState ["UpdateCommand"] as string;
  138. return val == null ? "" : val;
  139. }
  140. set { ViewState ["UpdateCommand"] = value; }
  141. }
  142. public override string SortExpression {
  143. get {
  144. string val = ViewState ["SortExpression"] as string;
  145. return val == null ? "" : val;
  146. }
  147. set { ViewState ["SortExpression"] = value; }
  148. }
  149. public override bool CanDelete {
  150. get { return DeleteCommand != ""; }
  151. }
  152. public override bool CanInsert {
  153. get { return UpdateCommand != ""; }
  154. }
  155. public override bool CanSort {
  156. get { return owner.DataSourceMode == SqlDataSourceMode.DataSet; }
  157. }
  158. public override bool CanUpdate {
  159. get { return UpdateCommand != ""; }
  160. }
  161. EventHandlerList events;
  162. protected EventHandlerList Events {
  163. get {
  164. if (events == null)
  165. events = new EventHandlerList ();
  166. return events;
  167. }
  168. }
  169. void ParametersChanged (object source, EventArgs args)
  170. {
  171. OnDataSourceViewChanged (EventArgs.Empty);
  172. }
  173. ParameterCollection GetParameterCollection (ref ParameterCollection output)
  174. {
  175. if (output != null)
  176. return output;
  177. output = new ParameterCollection ();
  178. output.ParametersChanged += new EventHandler (ParametersChanged);
  179. if (IsTrackingViewState)
  180. ((IStateManager) output).TrackViewState ();
  181. return output;
  182. }
  183. public ParameterCollection DeleteParameters {
  184. get { return GetParameterCollection (ref deleteParameters); }
  185. }
  186. public ParameterCollection FilterParameters {
  187. get { return GetParameterCollection (ref filterParameters); }
  188. }
  189. public ParameterCollection InsertParameters {
  190. get { return GetParameterCollection (ref insertParameters); }
  191. }
  192. public ParameterCollection SelectParameters {
  193. get { return GetParameterCollection (ref selectParameters); }
  194. }
  195. public ParameterCollection UpdateParameters {
  196. get { return GetParameterCollection (ref updateParameters); }
  197. }
  198. public override string Name {
  199. get { return name; }
  200. }
  201. protected virtual string ParameterPrefix {
  202. get { return "@"; }
  203. }
  204. StateBag viewState;
  205. protected StateBag ViewState {
  206. get {
  207. if (viewState != null)
  208. return viewState;
  209. viewState = new StateBag ();
  210. if (IsTrackingViewState)
  211. viewState.TrackViewState ();
  212. return viewState;
  213. }
  214. }
  215. ParameterCollection deleteParameters;
  216. ParameterCollection filterParameters;
  217. ParameterCollection insertParameters;
  218. ParameterCollection selectParameters;
  219. ParameterCollection updateParameters;
  220. bool tracking;
  221. string name;
  222. SqlDataSource owner;
  223. static readonly object EventDataSourceViewChanged = new object ();
  224. protected virtual void OnDataSourceViewChanged (EventArgs e)
  225. {
  226. if (events == null) return;
  227. EventHandler h = events [EventDataSourceViewChanged] as EventHandler;
  228. if (h != null)
  229. h (this, e);
  230. }
  231. public event EventHandler DataSourceViewChanged {
  232. add { Events.AddHandler (EventDataSourceViewChanged, value); }
  233. remove { Events.RemoveHandler (EventDataSourceViewChanged, value); }
  234. }
  235. #region OnDelete
  236. static readonly object EventDeleted = new object ();
  237. protected virtual void OnDeleted (SqlDataSourceStatusEventArgs e)
  238. {
  239. if (events == null) return;
  240. SqlDataSourceStatusEventHandler h = events [EventDeleted] as SqlDataSourceStatusEventHandler;
  241. if (h != null)
  242. h (this, e);
  243. }
  244. public event SqlDataSourceStatusEventHandler Deleted {
  245. add { Events.AddHandler (EventDeleted, value); }
  246. remove { Events.RemoveHandler (EventDeleted, value); }
  247. }
  248. static readonly object EventDeleting = new object ();
  249. protected virtual void OnDeleting (SqlDataSourceCommandEventArgs e)
  250. {
  251. if (events == null) return;
  252. SqlDataSourceCommandEventHandler h = events [EventDeleting] as SqlDataSourceCommandEventHandler;
  253. if (h != null)
  254. h (this, e);
  255. }
  256. public event SqlDataSourceCommandEventHandler Deleting {
  257. add { Events.AddHandler (EventDeleting, value); }
  258. remove { Events.RemoveHandler (EventDeleting, value); }
  259. }
  260. #endregion
  261. #region OnInsert
  262. static readonly object EventInserted = new object ();
  263. protected virtual void OnInserted (SqlDataSourceStatusEventArgs e)
  264. {
  265. if (events == null) return;
  266. SqlDataSourceStatusEventHandler h = events [EventInserted] as SqlDataSourceStatusEventHandler;
  267. if (h != null)
  268. h (this, e);
  269. }
  270. public event SqlDataSourceStatusEventHandler Inserted {
  271. add { Events.AddHandler (EventInserted, value); }
  272. remove { Events.RemoveHandler (EventInserted, value); }
  273. }
  274. static readonly object EventInserting = new object ();
  275. protected virtual void OnInserting (SqlDataSourceCommandEventArgs e)
  276. {
  277. if (events == null) return;
  278. SqlDataSourceCommandEventHandler h = events [EventInserting] as SqlDataSourceCommandEventHandler;
  279. if (h != null)
  280. h (this, e);
  281. }
  282. public event SqlDataSourceCommandEventHandler Inserting {
  283. add { Events.AddHandler (EventInserting, value); }
  284. remove { Events.RemoveHandler (EventInserting, value); }
  285. }
  286. #endregion
  287. #region OnSelect
  288. static readonly object EventSelected = new object ();
  289. protected virtual void OnSelected (SqlDataSourceStatusEventArgs e)
  290. {
  291. if (events == null) return;
  292. SqlDataSourceStatusEventHandler h = events [EventSelected] as SqlDataSourceStatusEventHandler;
  293. if (h != null)
  294. h (this, e);
  295. }
  296. public event SqlDataSourceStatusEventHandler Selected {
  297. add { Events.AddHandler (EventSelected, value); }
  298. remove { Events.RemoveHandler (EventSelected, value); }
  299. }
  300. static readonly object EventSelecting = new object ();
  301. protected virtual void OnSelecting (SqlDataSourceCommandEventArgs e)
  302. {
  303. if (events == null) return;
  304. SqlDataSourceCommandEventHandler h = events [EventSelecting] as SqlDataSourceCommandEventHandler;
  305. if (h != null)
  306. h (this, e);
  307. }
  308. public event SqlDataSourceCommandEventHandler Selecting {
  309. add { Events.AddHandler (EventSelecting, value); }
  310. remove { Events.RemoveHandler (EventSelecting, value); }
  311. }
  312. #endregion
  313. #region OnUpdate
  314. static readonly object EventUpdated = new object ();
  315. protected virtual void OnUpdated (SqlDataSourceStatusEventArgs e)
  316. {
  317. if (events == null) return;
  318. SqlDataSourceStatusEventHandler h = events [EventUpdated] as SqlDataSourceStatusEventHandler;
  319. if (h != null)
  320. h (this, e);
  321. }
  322. public event SqlDataSourceStatusEventHandler Updated {
  323. add { Events.AddHandler (EventUpdated, value); }
  324. remove { Events.RemoveHandler (EventUpdated, value); }
  325. }
  326. static readonly object EventUpdating = new object ();
  327. protected virtual void OnUpdating (SqlDataSourceCommandEventArgs e)
  328. {
  329. if (events == null) return;
  330. SqlDataSourceCommandEventHandler h = events [EventUpdating] as SqlDataSourceCommandEventHandler;
  331. if (h != null)
  332. h (this, e);
  333. }
  334. public event SqlDataSourceCommandEventHandler Updating {
  335. add { Events.AddHandler (EventUpdating, value); }
  336. remove { Events.RemoveHandler (EventUpdating, value); }
  337. }
  338. #endregion
  339. }
  340. }
  341. #endif