00001 #if V2 00002 00003 using System; 00004 using System.ComponentModel; 00005 using System.Drawing; 00006 using System.Web.UI; 00007 using ASP = System.Web.UI.WebControls; 00008 00009 namespace Anthem 00010 { 00014 [ToolboxBitmap(typeof(ASP.DetailsView))] 00015 public class DetailsView : ASP.DetailsView, 00016 IUpdatableControl, 00017 ICallBackControl, 00018 ICallBackContainerControl 00019 { 00020 #region Unique Anthem control code 00021 00026 protected override void OnDataPropertyChanged() 00027 { 00028 base.OnDataPropertyChanged(); 00029 UpdateAfterCallBack = true; 00030 } 00031 00032 private const string parentTagName = "div"; 00037 protected override void Render(HtmlTextWriter writer) 00038 { 00039 #if !V2 00040 bool DesignMode = this.Context == null; 00041 #endif 00042 if (EnableCallBack && AddCallBacks) 00043 Anthem.Manager.AddCallBacks(this, 00044 EnabledDuringCallBack, 00045 TextDuringCallBack, 00046 PreCallBackFunction, 00047 PostCallBackFunction, 00048 CallBackCancelledFunction); 00049 00050 if (!DesignMode) 00051 { 00052 Anthem.Manager.WriteBeginControlMarker(writer, parentTagName, this); 00053 } 00054 if (Visible) 00055 { 00056 base.Render(writer); 00057 } 00058 if (!DesignMode) 00059 { 00060 Anthem.Manager.WriteEndControlMarker(writer, parentTagName, this); 00061 } 00062 } 00063 00064 #endregion 00065 00066 #region ICallBackControl implementation 00067 00072 [Category("Anthem")] 00073 [DefaultValue("")] 00074 [Description("The javascript function to call on the client if the callback is cancelled.")] 00075 public virtual string CallBackCancelledFunction 00076 { 00077 get 00078 { 00079 string text = (string)ViewState["CallBackCancelledFunction"]; 00080 if (text == null) 00081 return string.Empty; 00082 else 00083 return text; 00084 } 00085 set 00086 { 00087 ViewState["CallBackCancelledFunction"] = value; 00088 } 00089 } 00090 00098 [Category("Anthem")] 00099 [DefaultValue(true)] 00100 [Description("True if this control uses callbacks instead of postbacks to post data to the server.")] 00101 public virtual bool EnableCallBack 00102 { 00103 get 00104 { 00105 object obj = this.ViewState["EnableCallBack"]; 00106 if (obj == null) 00107 return true; 00108 else 00109 return (bool)obj; 00110 } 00111 set 00112 { 00113 ViewState["EnableCallBack"] = value; 00114 } 00115 } 00116 00125 [Category("Anthem")] 00126 [DefaultValue(true)] 00127 [Description("True if this control is enabled on the client during callbacks.")] 00128 public virtual bool EnabledDuringCallBack 00129 { 00130 get 00131 { 00132 object obj = this.ViewState["EnabledDuringCallBack"]; 00133 if (obj == null) 00134 return true; 00135 else 00136 return (bool)obj; 00137 } 00138 set 00139 { 00140 ViewState["EnabledDuringCallBack"] = value; 00141 } 00142 } 00143 00144 00162 [Category("Anthem")] 00163 [DefaultValue("")] 00164 [Description("The javascript function to call on the client after the callback response is received.")] 00165 public virtual string PostCallBackFunction 00166 { 00167 get 00168 { 00169 string text = (string)this.ViewState["PostCallBackFunction"]; 00170 if (text == null) 00171 { 00172 return string.Empty; 00173 } 00174 return text; 00175 } 00176 set 00177 { 00178 ViewState["PostCallBackFunction"] = value; 00179 } 00180 } 00181 00187 [Category("Anthem")] 00188 [DefaultValue("")] 00189 [Description("The javascript function to call on the client before the callback is made.")] 00190 public virtual string PreCallBackFunction 00191 { 00192 get 00193 { 00194 string text = (string)this.ViewState["PreCallBackFunction"]; 00195 if (text == null) 00196 { 00197 return string.Empty; 00198 } 00199 return text; 00200 } 00201 set 00202 { 00203 ViewState["PreCallBackFunction"] = value; 00204 } 00205 } 00206 00215 [Category("Anthem")] 00216 [DefaultValue("")] 00217 [Description("The text to display during the callback.")] 00218 public virtual string TextDuringCallBack 00219 { 00220 get 00221 { 00222 string text = (string)this.ViewState["TextDuringCallBack"]; 00223 if (text == null) 00224 { 00225 return string.Empty; 00226 } 00227 return text; 00228 } 00229 set 00230 { 00231 ViewState["TextDuringCallBack"] = value; 00232 } 00233 } 00234 00235 #endregion 00236 00237 #region ICallBackContainerControl implementation 00238 00250 [Category("Anthem")] 00251 [DefaultValue(true)] 00252 [Description("True if this control should convert child control postbacks into callbacks.")] 00253 public virtual bool AddCallBacks 00254 { 00255 get 00256 { 00257 object obj = this.ViewState["AddCallBacks"]; 00258 if (obj == null) 00259 return true; 00260 else 00261 return (bool)obj; 00262 } 00263 set 00264 { 00265 ViewState["AddCallBacks"] = value; 00266 } 00267 } 00268 00269 #endregion 00270 00271 #region IUpdatableControl implementation 00272 00286 [Category("Anthem")] 00287 [DefaultValue(false)] 00288 [Description("True if this control should be updated after each callback.")] 00289 public virtual bool AutoUpdateAfterCallBack 00290 { 00291 get 00292 { 00293 object obj = this.ViewState["AutoUpdateAfterCallBack"]; 00294 if (obj == null) 00295 return false; 00296 else 00297 return (bool)obj; 00298 } 00299 set 00300 { 00301 if (value) UpdateAfterCallBack = true; 00302 ViewState["AutoUpdateAfterCallBack"] = value; 00303 } 00304 } 00305 00306 private bool _updateAfterCallBack = false; 00307 00322 [Browsable(false)] 00323 [DefaultValue(false)] 00324 public virtual bool UpdateAfterCallBack 00325 { 00326 get { return _updateAfterCallBack; } 00327 set { _updateAfterCallBack = value; } 00328 } 00329 00330 #endregion 00331 00332 #region Common Anthem control code 00333 00339 protected override void OnLoad(EventArgs e) 00340 { 00341 base.OnLoad(e); 00342 Anthem.Manager.Register(this); 00343 } 00344 00345 #if V2 00349 public override void RenderControl(HtmlTextWriter writer) 00350 { 00351 base.Visible = true; 00352 base.RenderControl(writer); 00353 } 00354 #endif 00355 00363 public override bool Visible 00364 { 00365 get 00366 { 00367 #if !V2 00368 bool DesignMode = this.Context == null; 00369 #endif 00370 return Anthem.Manager.GetControlVisible(this, ViewState, DesignMode); 00371 } 00372 set { Anthem.Manager.SetControlVisible(ViewState, value); } 00373 } 00374 00375 #endregion 00376 } 00377 } 00378 00379 #endif