Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / xsp / System / Web / UI / WebControls / ImageField.cs / 1 / ImageField.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.WebControls { using System; using System.Collections; using System.Collections.Specialized; using System.ComponentModel; using System.Drawing.Design; using System.Globalization; using System.IO; using System.Security.Permissions; using System.Web.Util; ////// [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public class ImageField : DataControlField { ///Creates a field bounded to a data field in a ///. /// public static readonly string ThisExpression = "!"; private PropertyDescriptor _imageFieldDesc; private PropertyDescriptor _altTextFieldDesc; string _dataField; ///Specifies a string that represents "this". This field is read-only. ////// public ImageField() { } [ Localizable(true), WebCategory("Appearance"), DefaultValue(""), WebSysDescription(SR.ImageField_AlternateText) ] public virtual string AlternateText { get { object o = ViewState["AlternateText"]; if (o != null) { return (string)o; } return String.Empty; } set { if (!String.Equals(value, ViewState["AlternateText"])) { ViewState["AlternateText"] = value; OnFieldChanged(); } } } ///Initializes a new instance of a ///class. /// [ WebCategory("Behavior"), DefaultValue(true), WebSysDescription(SR.ImageField_ConvertEmptyStringToNull) ] public virtual bool ConvertEmptyStringToNull { get { object o = ViewState["ConvertEmptyStringToNull"]; if (o != null) { return (bool)o; } return true; } set { ViewState["ConvertEmptyStringToNull"] = value; } } [ WebCategory("Data"), DefaultValue(""), TypeConverter("System.Web.UI.Design.DataSourceViewSchemaConverter, " + AssemblyRef.SystemDesign), WebSysDescription(SR.ImageField_DataAlternateTextField) ] public virtual string DataAlternateTextField { get { object o = ViewState["DataAlternateTextField"]; if (o != null) { return (string)o; } return String.Empty; } set { if (!String.Equals(value, ViewState["DataAlternateTextField"])) { ViewState["DataAlternateTextField"] = value; OnFieldChanged(); } } } ///Gets or sets the property that determines whether the field treats empty string as /// null when the field values are extracted. ////// [ WebCategory("Data"), DefaultValue(""), WebSysDescription(SR.ImageField_DataAlternateTextFormatString) ] public virtual string DataAlternateTextFormatString { get { object o = ViewState["DataAlternateTextFormatString"]; if (o != null) return (string)o; return String.Empty; } set { if (!String.Equals(value, ViewState["DataAlternateTextFormatString"])) { ViewState["DataAlternateTextFormatString"] = value; OnFieldChanged(); } } } ///Gets or sets the display format of alternate text in this /// field. ////// [ WebCategory("Data"), DefaultValue(""), TypeConverter("System.Web.UI.Design.DataSourceViewSchemaConverter, " + AssemblyRef.SystemDesign), WebSysDescription(SR.ImageField_ImageUrlField) ] public virtual string DataImageUrlField { get { if (_dataField == null) { object o = ViewState["DataImageUrlField"]; if (o != null) _dataField = (string)o; else _dataField = String.Empty; } return _dataField; } set { if (!String.Equals(value, ViewState["DataImageUrlField"])) { ViewState["DataImageUrlField"] = value; _dataField = value; OnFieldChanged(); } } } [ WebCategory("Data"), DefaultValue(""), WebSysDescription(SR.ImageField_ImageUrlFormatString) ] public virtual string DataImageUrlFormatString { get { object o = ViewState["DataImageUrlFormatString"]; if (o != null) { return (string)o; } return String.Empty; } set { if (!String.Equals(value, ViewState["DataImageUrlFormatString"])) { ViewState["DataImageUrlFormatString"] = value; OnFieldChanged(); } } } ///Gets or sets the field name from the data model bound to this field. ////// [ Localizable(true), WebCategory("Behavior"), DefaultValue(""), WebSysDescription(SR.BoundField_NullDisplayText) ] public virtual string NullDisplayText { get { object o = ViewState["NullDisplayText"]; if (o != null) { return (string)o; } return String.Empty; } set { if (!String.Equals(value, ViewState["NullDisplayText"])) { ViewState["NullDisplayText"] = value; OnFieldChanged(); } } } [ WebCategory("Behavior"), DefaultValue(""), Editor("System.Web.UI.Design.ImageUrlEditor, " + AssemblyRef.SystemDesign, typeof(UITypeEditor)), UrlProperty(), WebSysDescription(SR.ImageField_NullImageUrl) ] public virtual string NullImageUrl { get { object o = ViewState["NullImageUrl"]; if (o != null) { return (string)o; } return String.Empty; } set { if (!String.Equals(value, ViewState["NullImageUrl"])) { ViewState["NullImageUrl"] = value; OnFieldChanged(); } } } ///Gets or sets the property that determines what text is displayed if the value /// of the field is null. ////// [ WebCategory("Behavior"), DefaultValue(false), WebSysDescription(SR.ImageField_ReadOnly) ] public virtual bool ReadOnly { get { object o = ViewState["ReadOnly"]; if (o != null) return (bool)o; return false; } set { object oldValue = ViewState["ReadOnly"]; if (oldValue == null || (bool)oldValue != value) { ViewState["ReadOnly"] = value; OnFieldChanged(); } } } protected override void CopyProperties(DataControlField newField) { ((ImageField)newField).AlternateText = AlternateText; ((ImageField)newField).ConvertEmptyStringToNull = ConvertEmptyStringToNull; ((ImageField)newField).DataAlternateTextField = DataAlternateTextField; ((ImageField)newField).DataAlternateTextFormatString = DataAlternateTextFormatString; ((ImageField)newField).DataImageUrlField = DataImageUrlField; ((ImageField)newField).DataImageUrlFormatString = DataImageUrlFormatString; ((ImageField)newField).NullDisplayText = NullDisplayText; ((ImageField)newField).NullImageUrl = NullImageUrl; ((ImageField)newField).ReadOnly = ReadOnly; base.CopyProperties(newField); } protected override DataControlField CreateField() { return new ImageField(); } ///Gets or sets the property that prevents modification to data /// in this field. ////// Extracts the value(s) from the given cell and puts the value(s) into a dictionary. Indicate includeReadOnly /// to have readonly fields' values inserted into the dictionary. /// public override void ExtractValuesFromCell(IOrderedDictionary dictionary, DataControlFieldCell cell, DataControlRowState rowState, bool includeReadOnly) { Control childControl = null; string dataField = DataImageUrlField; object value = null; bool includeNullValue = false; if (((rowState & DataControlRowState.Insert) != 0) && !InsertVisible) { return; } if (cell.Controls.Count == 0) { // this should happen only in design mode Debug.Assert(DesignMode, "Unless you're in designmode, there should be a control in the cell."); return; } childControl = cell.Controls[0]; Image image = childControl as Image; if (image != null) { if (includeReadOnly) { includeNullValue = true; if (image.Visible) { value = image.ImageUrl; } } } else { TextBox editBox = childControl as TextBox; if (editBox != null) { value = editBox.Text; includeNullValue = true; // just in case someone wrote a derived textbox that returns null for Text. } } if (value != null || includeNullValue) { if (ConvertEmptyStringToNull && value is string && ((string)value).Length == 0) { value = null; } if (dictionary.Contains(dataField)) { dictionary[dataField] = value; } else { dictionary.Add(dataField, value); } } } ////// Returns the formatted value of the image url /// protected virtual string FormatImageUrlValue(object dataValue) { string formattedValue = String.Empty; string formatting = DataImageUrlFormatString; if (!DataBinder.IsNull(dataValue)) { string dataValueString = dataValue.ToString(); if (dataValueString.Length > 0) { if (formatting.Length == 0) { formattedValue = dataValueString; } else { formattedValue = String.Format(CultureInfo.CurrentCulture, formatting, dataValue); } } } else { return null; } return formattedValue; } ////// Returns the alternate text to be used for accessibility /// protected virtual string GetFormattedAlternateText(Control controlContainer) { string altTextField = DataAlternateTextField; string altTextFormatString = DataAlternateTextFormatString; string formattedAlternateText; if (altTextField.Length > 0) { object value = GetValue(controlContainer, altTextField, ref _altTextFieldDesc); string strValue = String.Empty; if (!DataBinder.IsNull(value)) { strValue = value.ToString(); } if (altTextFormatString.Length > 0) { formattedAlternateText = String.Format(CultureInfo.CurrentCulture, altTextFormatString, value); } else { formattedAlternateText = strValue; } } else { formattedAlternateText = AlternateText; } return formattedAlternateText; } ////// Returns a value to be used for design-time rendering /// protected virtual string GetDesignTimeValue() { return SR.GetString(SR.Sample_Databound_Text); } ////// Retrieves the value of the field to be databound to the ImageField. /// protected virtual object GetValue(Control controlContainer, string fieldName, ref PropertyDescriptor cachedDescriptor) { Debug.Assert(DataImageUrlField.Length != 0, "Shouldn't be DataBinding without an DataImageUrlField"); object data = null; object dataItem = null; if (controlContainer == null) { throw new HttpException(SR.GetString(SR.DataControlField_NoContainer)); } // Get the DataItem from the container dataItem = DataBinder.GetDataItem(controlContainer); if (dataItem == null && !DesignMode) { throw new HttpException(SR.GetString(SR.DataItem_Not_Found)); } // Get value of field in data item if (cachedDescriptor == null) { if (!fieldName.Equals(ThisExpression)) { cachedDescriptor = TypeDescriptor.GetProperties(dataItem).Find(fieldName, true); if ((cachedDescriptor == null) && !DesignMode) { throw new HttpException(SR.GetString(SR.Field_Not_Found, fieldName)); } } } if (cachedDescriptor != null && dataItem != null) { data = cachedDescriptor.GetValue(dataItem); } else { if (!DesignMode) { data = dataItem; } } return data; } ////// Initializes the field and resets member variables. /// public override bool Initialize(bool enableSorting, Control control) { base.Initialize(enableSorting, control); _imageFieldDesc = null; _altTextFieldDesc = null; return false; } ////// public override void InitializeCell(DataControlFieldCell cell, DataControlCellType cellType, DataControlRowState rowState, int rowIndex) { base.InitializeCell(cell, cellType, rowState, rowIndex); switch (cellType) { case DataControlCellType.DataCell: InitializeDataCell(cell, rowState); break; } } protected virtual void InitializeDataCell(DataControlFieldCell cell, DataControlRowState rowState) { Control boundControl = null; if (((rowState & DataControlRowState.Edit) != 0 && ReadOnly == false) || (rowState & DataControlRowState.Insert) != 0) { TextBox editor = new TextBox(); cell.Controls.Add(editor); if (DataImageUrlField.Length != 0 && (rowState & DataControlRowState.Edit) != 0) { boundControl = editor; } } else if (DataImageUrlField.Length != 0) { boundControl = cell; Image image = new Image(); Label label = new Label(); cell.Controls.Add(image); cell.Controls.Add(label); } if (boundControl != null && Visible) { boundControl.DataBinding += new EventHandler(this.OnDataBindField); } } ///Initializes a cell in the DataControlField. ////// Handles databinding the field and its controls. /// protected virtual void OnDataBindField(object sender, EventArgs e) { Control boundControl = (Control)sender; Control controlContainer = boundControl.NamingContainer; string urlValue = null; string nullImageUrl = NullImageUrl; string altText = GetFormattedAlternateText(controlContainer); if (DesignMode && (boundControl is TableCell)) { if (boundControl.Controls.Count == 0 || !(boundControl.Controls[0] is Image)) { throw new HttpException(SR.GetString(SR.ImageField_WrongControlType, DataImageUrlField)); } ((Image)boundControl.Controls[0]).Visible = false; ((TableCell)boundControl).Text = GetDesignTimeValue(); return; } object data = GetValue(controlContainer, DataImageUrlField, ref _imageFieldDesc); urlValue = FormatImageUrlValue(data); if (boundControl is TableCell) { // read-only TableCell cell = (TableCell)boundControl; if (cell.Controls.Count < 2 || !(cell.Controls[0] is Image) || !(cell.Controls[1] is Label)) { throw new HttpException(SR.GetString(SR.ImageField_WrongControlType, DataImageUrlField)); } Image image = (Image)cell.Controls[0]; Label label = (Label)cell.Controls[1]; label.Visible = false; if (urlValue == null || (ConvertEmptyStringToNull && urlValue.Length == 0)) { if (nullImageUrl.Length > 0) { urlValue = nullImageUrl; } else { image.Visible = false; label.Text = NullDisplayText; label.Visible = true; } } if (!CrossSiteScriptingValidation.IsDangerousUrl(urlValue)) { image.ImageUrl = urlValue; } image.AlternateText = altText; } else { // edit/insert if (!(boundControl is TextBox)) { throw new HttpException(SR.GetString(SR.ImageField_WrongControlType, DataImageUrlField)); } ((TextBox)boundControl).Text = data.ToString(); ((TextBox)boundControl).ToolTip = altText; if (data != null) { // size down the textbox for certain types if (data.GetType().IsPrimitive) { ((TextBox)boundControl).Columns = 5; } } } } ////// public override void ValidateSupportsCallback() { } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //Override with an empty body if the field's controls all support callback. /// Otherwise, override and throw a useful error message about why the field can't support callbacks. ///// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.WebControls { using System; using System.Collections; using System.Collections.Specialized; using System.ComponentModel; using System.Drawing.Design; using System.Globalization; using System.IO; using System.Security.Permissions; using System.Web.Util; ////// [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public class ImageField : DataControlField { ///Creates a field bounded to a data field in a ///. /// public static readonly string ThisExpression = "!"; private PropertyDescriptor _imageFieldDesc; private PropertyDescriptor _altTextFieldDesc; string _dataField; ///Specifies a string that represents "this". This field is read-only. ////// public ImageField() { } [ Localizable(true), WebCategory("Appearance"), DefaultValue(""), WebSysDescription(SR.ImageField_AlternateText) ] public virtual string AlternateText { get { object o = ViewState["AlternateText"]; if (o != null) { return (string)o; } return String.Empty; } set { if (!String.Equals(value, ViewState["AlternateText"])) { ViewState["AlternateText"] = value; OnFieldChanged(); } } } ///Initializes a new instance of a ///class. /// [ WebCategory("Behavior"), DefaultValue(true), WebSysDescription(SR.ImageField_ConvertEmptyStringToNull) ] public virtual bool ConvertEmptyStringToNull { get { object o = ViewState["ConvertEmptyStringToNull"]; if (o != null) { return (bool)o; } return true; } set { ViewState["ConvertEmptyStringToNull"] = value; } } [ WebCategory("Data"), DefaultValue(""), TypeConverter("System.Web.UI.Design.DataSourceViewSchemaConverter, " + AssemblyRef.SystemDesign), WebSysDescription(SR.ImageField_DataAlternateTextField) ] public virtual string DataAlternateTextField { get { object o = ViewState["DataAlternateTextField"]; if (o != null) { return (string)o; } return String.Empty; } set { if (!String.Equals(value, ViewState["DataAlternateTextField"])) { ViewState["DataAlternateTextField"] = value; OnFieldChanged(); } } } ///Gets or sets the property that determines whether the field treats empty string as /// null when the field values are extracted. ////// [ WebCategory("Data"), DefaultValue(""), WebSysDescription(SR.ImageField_DataAlternateTextFormatString) ] public virtual string DataAlternateTextFormatString { get { object o = ViewState["DataAlternateTextFormatString"]; if (o != null) return (string)o; return String.Empty; } set { if (!String.Equals(value, ViewState["DataAlternateTextFormatString"])) { ViewState["DataAlternateTextFormatString"] = value; OnFieldChanged(); } } } ///Gets or sets the display format of alternate text in this /// field. ////// [ WebCategory("Data"), DefaultValue(""), TypeConverter("System.Web.UI.Design.DataSourceViewSchemaConverter, " + AssemblyRef.SystemDesign), WebSysDescription(SR.ImageField_ImageUrlField) ] public virtual string DataImageUrlField { get { if (_dataField == null) { object o = ViewState["DataImageUrlField"]; if (o != null) _dataField = (string)o; else _dataField = String.Empty; } return _dataField; } set { if (!String.Equals(value, ViewState["DataImageUrlField"])) { ViewState["DataImageUrlField"] = value; _dataField = value; OnFieldChanged(); } } } [ WebCategory("Data"), DefaultValue(""), WebSysDescription(SR.ImageField_ImageUrlFormatString) ] public virtual string DataImageUrlFormatString { get { object o = ViewState["DataImageUrlFormatString"]; if (o != null) { return (string)o; } return String.Empty; } set { if (!String.Equals(value, ViewState["DataImageUrlFormatString"])) { ViewState["DataImageUrlFormatString"] = value; OnFieldChanged(); } } } ///Gets or sets the field name from the data model bound to this field. ////// [ Localizable(true), WebCategory("Behavior"), DefaultValue(""), WebSysDescription(SR.BoundField_NullDisplayText) ] public virtual string NullDisplayText { get { object o = ViewState["NullDisplayText"]; if (o != null) { return (string)o; } return String.Empty; } set { if (!String.Equals(value, ViewState["NullDisplayText"])) { ViewState["NullDisplayText"] = value; OnFieldChanged(); } } } [ WebCategory("Behavior"), DefaultValue(""), Editor("System.Web.UI.Design.ImageUrlEditor, " + AssemblyRef.SystemDesign, typeof(UITypeEditor)), UrlProperty(), WebSysDescription(SR.ImageField_NullImageUrl) ] public virtual string NullImageUrl { get { object o = ViewState["NullImageUrl"]; if (o != null) { return (string)o; } return String.Empty; } set { if (!String.Equals(value, ViewState["NullImageUrl"])) { ViewState["NullImageUrl"] = value; OnFieldChanged(); } } } ///Gets or sets the property that determines what text is displayed if the value /// of the field is null. ////// [ WebCategory("Behavior"), DefaultValue(false), WebSysDescription(SR.ImageField_ReadOnly) ] public virtual bool ReadOnly { get { object o = ViewState["ReadOnly"]; if (o != null) return (bool)o; return false; } set { object oldValue = ViewState["ReadOnly"]; if (oldValue == null || (bool)oldValue != value) { ViewState["ReadOnly"] = value; OnFieldChanged(); } } } protected override void CopyProperties(DataControlField newField) { ((ImageField)newField).AlternateText = AlternateText; ((ImageField)newField).ConvertEmptyStringToNull = ConvertEmptyStringToNull; ((ImageField)newField).DataAlternateTextField = DataAlternateTextField; ((ImageField)newField).DataAlternateTextFormatString = DataAlternateTextFormatString; ((ImageField)newField).DataImageUrlField = DataImageUrlField; ((ImageField)newField).DataImageUrlFormatString = DataImageUrlFormatString; ((ImageField)newField).NullDisplayText = NullDisplayText; ((ImageField)newField).NullImageUrl = NullImageUrl; ((ImageField)newField).ReadOnly = ReadOnly; base.CopyProperties(newField); } protected override DataControlField CreateField() { return new ImageField(); } ///Gets or sets the property that prevents modification to data /// in this field. ////// Extracts the value(s) from the given cell and puts the value(s) into a dictionary. Indicate includeReadOnly /// to have readonly fields' values inserted into the dictionary. /// public override void ExtractValuesFromCell(IOrderedDictionary dictionary, DataControlFieldCell cell, DataControlRowState rowState, bool includeReadOnly) { Control childControl = null; string dataField = DataImageUrlField; object value = null; bool includeNullValue = false; if (((rowState & DataControlRowState.Insert) != 0) && !InsertVisible) { return; } if (cell.Controls.Count == 0) { // this should happen only in design mode Debug.Assert(DesignMode, "Unless you're in designmode, there should be a control in the cell."); return; } childControl = cell.Controls[0]; Image image = childControl as Image; if (image != null) { if (includeReadOnly) { includeNullValue = true; if (image.Visible) { value = image.ImageUrl; } } } else { TextBox editBox = childControl as TextBox; if (editBox != null) { value = editBox.Text; includeNullValue = true; // just in case someone wrote a derived textbox that returns null for Text. } } if (value != null || includeNullValue) { if (ConvertEmptyStringToNull && value is string && ((string)value).Length == 0) { value = null; } if (dictionary.Contains(dataField)) { dictionary[dataField] = value; } else { dictionary.Add(dataField, value); } } } ////// Returns the formatted value of the image url /// protected virtual string FormatImageUrlValue(object dataValue) { string formattedValue = String.Empty; string formatting = DataImageUrlFormatString; if (!DataBinder.IsNull(dataValue)) { string dataValueString = dataValue.ToString(); if (dataValueString.Length > 0) { if (formatting.Length == 0) { formattedValue = dataValueString; } else { formattedValue = String.Format(CultureInfo.CurrentCulture, formatting, dataValue); } } } else { return null; } return formattedValue; } ////// Returns the alternate text to be used for accessibility /// protected virtual string GetFormattedAlternateText(Control controlContainer) { string altTextField = DataAlternateTextField; string altTextFormatString = DataAlternateTextFormatString; string formattedAlternateText; if (altTextField.Length > 0) { object value = GetValue(controlContainer, altTextField, ref _altTextFieldDesc); string strValue = String.Empty; if (!DataBinder.IsNull(value)) { strValue = value.ToString(); } if (altTextFormatString.Length > 0) { formattedAlternateText = String.Format(CultureInfo.CurrentCulture, altTextFormatString, value); } else { formattedAlternateText = strValue; } } else { formattedAlternateText = AlternateText; } return formattedAlternateText; } ////// Returns a value to be used for design-time rendering /// protected virtual string GetDesignTimeValue() { return SR.GetString(SR.Sample_Databound_Text); } ////// Retrieves the value of the field to be databound to the ImageField. /// protected virtual object GetValue(Control controlContainer, string fieldName, ref PropertyDescriptor cachedDescriptor) { Debug.Assert(DataImageUrlField.Length != 0, "Shouldn't be DataBinding without an DataImageUrlField"); object data = null; object dataItem = null; if (controlContainer == null) { throw new HttpException(SR.GetString(SR.DataControlField_NoContainer)); } // Get the DataItem from the container dataItem = DataBinder.GetDataItem(controlContainer); if (dataItem == null && !DesignMode) { throw new HttpException(SR.GetString(SR.DataItem_Not_Found)); } // Get value of field in data item if (cachedDescriptor == null) { if (!fieldName.Equals(ThisExpression)) { cachedDescriptor = TypeDescriptor.GetProperties(dataItem).Find(fieldName, true); if ((cachedDescriptor == null) && !DesignMode) { throw new HttpException(SR.GetString(SR.Field_Not_Found, fieldName)); } } } if (cachedDescriptor != null && dataItem != null) { data = cachedDescriptor.GetValue(dataItem); } else { if (!DesignMode) { data = dataItem; } } return data; } ////// Initializes the field and resets member variables. /// public override bool Initialize(bool enableSorting, Control control) { base.Initialize(enableSorting, control); _imageFieldDesc = null; _altTextFieldDesc = null; return false; } ////// public override void InitializeCell(DataControlFieldCell cell, DataControlCellType cellType, DataControlRowState rowState, int rowIndex) { base.InitializeCell(cell, cellType, rowState, rowIndex); switch (cellType) { case DataControlCellType.DataCell: InitializeDataCell(cell, rowState); break; } } protected virtual void InitializeDataCell(DataControlFieldCell cell, DataControlRowState rowState) { Control boundControl = null; if (((rowState & DataControlRowState.Edit) != 0 && ReadOnly == false) || (rowState & DataControlRowState.Insert) != 0) { TextBox editor = new TextBox(); cell.Controls.Add(editor); if (DataImageUrlField.Length != 0 && (rowState & DataControlRowState.Edit) != 0) { boundControl = editor; } } else if (DataImageUrlField.Length != 0) { boundControl = cell; Image image = new Image(); Label label = new Label(); cell.Controls.Add(image); cell.Controls.Add(label); } if (boundControl != null && Visible) { boundControl.DataBinding += new EventHandler(this.OnDataBindField); } } ///Initializes a cell in the DataControlField. ////// Handles databinding the field and its controls. /// protected virtual void OnDataBindField(object sender, EventArgs e) { Control boundControl = (Control)sender; Control controlContainer = boundControl.NamingContainer; string urlValue = null; string nullImageUrl = NullImageUrl; string altText = GetFormattedAlternateText(controlContainer); if (DesignMode && (boundControl is TableCell)) { if (boundControl.Controls.Count == 0 || !(boundControl.Controls[0] is Image)) { throw new HttpException(SR.GetString(SR.ImageField_WrongControlType, DataImageUrlField)); } ((Image)boundControl.Controls[0]).Visible = false; ((TableCell)boundControl).Text = GetDesignTimeValue(); return; } object data = GetValue(controlContainer, DataImageUrlField, ref _imageFieldDesc); urlValue = FormatImageUrlValue(data); if (boundControl is TableCell) { // read-only TableCell cell = (TableCell)boundControl; if (cell.Controls.Count < 2 || !(cell.Controls[0] is Image) || !(cell.Controls[1] is Label)) { throw new HttpException(SR.GetString(SR.ImageField_WrongControlType, DataImageUrlField)); } Image image = (Image)cell.Controls[0]; Label label = (Label)cell.Controls[1]; label.Visible = false; if (urlValue == null || (ConvertEmptyStringToNull && urlValue.Length == 0)) { if (nullImageUrl.Length > 0) { urlValue = nullImageUrl; } else { image.Visible = false; label.Text = NullDisplayText; label.Visible = true; } } if (!CrossSiteScriptingValidation.IsDangerousUrl(urlValue)) { image.ImageUrl = urlValue; } image.AlternateText = altText; } else { // edit/insert if (!(boundControl is TextBox)) { throw new HttpException(SR.GetString(SR.ImageField_WrongControlType, DataImageUrlField)); } ((TextBox)boundControl).Text = data.ToString(); ((TextBox)boundControl).ToolTip = altText; if (data != null) { // size down the textbox for certain types if (data.GetType().IsPrimitive) { ((TextBox)boundControl).Columns = 5; } } } } ////// public override void ValidateSupportsCallback() { } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.Override with an empty body if the field's controls all support callback. /// Otherwise, override and throw a useful error message about why the field can't support callbacks. ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TableRow.cs
- BindingNavigator.cs
- LogRestartAreaEnumerator.cs
- Rijndael.cs
- ScaleTransform3D.cs
- TextElementAutomationPeer.cs
- Overlapped.cs
- BitmapEffectGroup.cs
- BitmapEffectInput.cs
- thaishape.cs
- DataBindingHandlerAttribute.cs
- AnnouncementService.cs
- CssStyleCollection.cs
- UniqueEventHelper.cs
- SqlProcedureAttribute.cs
- ActivationServices.cs
- SequentialWorkflowRootDesigner.cs
- RemoveFromCollection.cs
- ActivityAction.cs
- SiteIdentityPermission.cs
- DataKeyCollection.cs
- DomNameTable.cs
- KeyFrames.cs
- TypeGeneratedEventArgs.cs
- StretchValidation.cs
- UriTemplateMatch.cs
- TypeDescriptionProviderAttribute.cs
- PreservationFileWriter.cs
- WebMessageBodyStyleHelper.cs
- VirtualDirectoryMapping.cs
- ConfigXmlReader.cs
- SpeechDetectedEventArgs.cs
- PersonalizationProviderCollection.cs
- MessageBox.cs
- XmlDownloadManager.cs
- EntityDataSourceConfigureObjectContext.cs
- X509UI.cs
- HttpWriter.cs
- Verify.cs
- CodeIndexerExpression.cs
- StrongName.cs
- OneOfElement.cs
- DateTimeHelper.cs
- OracleConnection.cs
- ValueChangedEventManager.cs
- _Connection.cs
- CodeGenerationManager.cs
- SecurityException.cs
- TextElement.cs
- DataSourceIDConverter.cs
- IncrementalHitTester.cs
- Interlocked.cs
- SerializationFieldInfo.cs
- HMACSHA1.cs
- PrincipalPermission.cs
- CodeVariableReferenceExpression.cs
- TextFormatterImp.cs
- EncoderReplacementFallback.cs
- bindurihelper.cs
- TextRunProperties.cs
- DesignerHelpers.cs
- CssStyleCollection.cs
- DesignerVerb.cs
- SchemaType.cs
- TdsParserSafeHandles.cs
- ProfileModule.cs
- SortDescription.cs
- Constraint.cs
- ToolZone.cs
- PropertyGridCommands.cs
- QuaternionAnimation.cs
- FixedHyperLink.cs
- StateDesignerConnector.cs
- WinFormsSecurity.cs
- HtmlLink.cs
- Tuple.cs
- WorkflowRuntimeServiceElement.cs
- WebPartTransformerAttribute.cs
- JoinGraph.cs
- QueryCacheManager.cs
- NestedContainer.cs
- Currency.cs
- DoubleConverter.cs
- DesignBinding.cs
- SqlLiftWhereClauses.cs
- XmlSchemaDocumentation.cs
- XmlReflectionImporter.cs
- FontFamilyConverter.cs
- DbDeleteCommandTree.cs
- ColorContext.cs
- DiscoveryDocumentSerializer.cs
- ExtensibleSyndicationObject.cs
- MeshGeometry3D.cs
- CodeObject.cs
- Size3DValueSerializer.cs
- RecognizedAudio.cs
- CheckBoxRenderer.cs
- EntityWithChangeTrackerStrategy.cs
- BuildProvider.cs
- StylusEventArgs.cs