// // System.Web.UI.WebControls.CommandField.cs // // Authors: // Lluis Sanchez Gual (lluis@novell.com) // // (C) 2005 Novell, Inc (http://www.novell.com) // // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the // "Software"), to deal in the Software without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Software, and to // permit persons to whom the Software is furnished to do so, subject to // the following conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // #if NET_2_0 using System.Collections; using System.Collections.Specialized; using System.Web.UI; using System.ComponentModel; using System.Security.Permissions; namespace System.Web.UI.WebControls { [AspNetHostingPermissionAttribute (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermissionAttribute (SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] public class CommandField : ButtonFieldBase { [EditorAttribute ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)] [UrlPropertyAttribute] [DefaultValueAttribute ("")] [WebSysDescription ("")] [WebCategoryAttribute ("Appearance")] public virtual string CancelImageUrl { get { return ViewState.GetString ("CancelImageUrl", ""); } set { ViewState ["CancelImageUrl"] = value; OnFieldChanged (); } } [LocalizableAttribute (true)] [WebSysDescription ("")] [WebCategoryAttribute ("Appearance")] public virtual string CancelText { get { return ViewState.GetString ("CancelText", "Cancel"); } set { ViewState ["CancelText"] = value; OnFieldChanged (); } } [DefaultValueAttribute (true)] public override bool CausesValidation { get { return ViewState.GetBool ("CausesValidation", true); } set { ViewState ["CausesValidation"] = value; OnFieldChanged (); } } [EditorAttribute ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)] [UrlPropertyAttribute] [DefaultValueAttribute ("")] [WebSysDescription ("")] [WebCategoryAttribute ("Appearance")] public virtual string DeleteImageUrl { get { return ViewState.GetString ("DeleteImageUrl", ""); } set { ViewState ["DeleteImageUrl"] = value; OnFieldChanged (); } } [LocalizableAttribute (true)] [WebSysDescription ("")] [WebCategoryAttribute ("Appearance")] public virtual string DeleteText { get { return ViewState.GetString ("DeleteText", "Delete"); } set { ViewState ["DeleteText"] = value; OnFieldChanged (); } } [EditorAttribute ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)] [UrlPropertyAttribute] [DefaultValueAttribute ("")] [WebSysDescription ("")] [WebCategoryAttribute ("Appearance")] public virtual string EditImageUrl { get { return ViewState.GetString ("EditImageUrl", ""); } set { ViewState ["EditImageUrl"] = value; OnFieldChanged (); } } [LocalizableAttribute (true)] [WebSysDescription ("")] [WebCategoryAttribute ("Appearance")] public virtual string EditText { get { return ViewState.GetString ("EditText", "Edit"); } set { ViewState ["EditText"] = value; OnFieldChanged (); } } [EditorAttribute ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)] [UrlPropertyAttribute] [DefaultValueAttribute ("")] [WebSysDescription ("")] [WebCategoryAttribute ("Appearance")] public virtual string InsertImageUrl { get { return ViewState.GetString ("InsertImageUrl", ""); } set { ViewState ["InsertImageUrl"] = value; OnFieldChanged (); } } [LocalizableAttribute (true)] [WebSysDescription ("")] [WebCategoryAttribute ("Appearance")] public virtual string InsertText { get { return ViewState.GetString ("InsertText", "Insert"); } set { ViewState ["InsertText"] = value; OnFieldChanged (); } } [EditorAttribute ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)] [UrlPropertyAttribute] [DefaultValueAttribute ("")] [WebSysDescription ("")] [WebCategoryAttribute ("Appearance")] public virtual string NewImageUrl { get { return ViewState.GetString ("NewImageUrl", ""); } set { ViewState ["NewImageUrl"] = value; OnFieldChanged (); } } [LocalizableAttribute (true)] [WebSysDescription ("")] [WebCategoryAttribute ("Appearance")] public virtual string NewText { get { return ViewState.GetString ("NewText", "New"); } set { ViewState ["NewText"] = value; OnFieldChanged (); } } [EditorAttribute ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)] [UrlPropertyAttribute] [DefaultValueAttribute ("")] [WebSysDescription ("")] [WebCategoryAttribute ("Appearance")] public virtual string SelectImageUrl { get { return ViewState.GetString ("SelectImageUrl", ""); } set { ViewState ["SelectImageUrl"] = value; OnFieldChanged (); } } [LocalizableAttribute (true)] [WebSysDescription ("")] [WebCategoryAttribute ("Appearance")] public virtual string SelectText { get { return ViewState.GetString ("SelectText", "Select"); } set { ViewState ["SelectText"] = value; OnFieldChanged (); } } [DefaultValueAttribute (true)] [WebSysDescription ("")] [WebCategoryAttribute ("Behavior")] public virtual bool ShowCancelButton { get { return ViewState.GetBool ("ShowCancelButton", true); } set { ViewState ["ShowCancelButton"] = value; OnFieldChanged (); } } [DefaultValueAttribute (false)] [WebSysDescription ("")] [WebCategoryAttribute ("Behavior")] public virtual bool ShowDeleteButton { get { return ViewState.GetBool ("ShowDeleteButton", false); } set { ViewState ["ShowDeleteButton"] = value; OnFieldChanged (); } } [DefaultValueAttribute (false)] [WebSysDescription ("")] [WebCategoryAttribute ("Behavior")] public virtual bool ShowEditButton { get { return ViewState.GetBool ("ShowEditButton", false); } set { ViewState ["ShowEditButton"] = value; OnFieldChanged (); } } [DefaultValueAttribute (false)] [WebSysDescription ("")] [WebCategoryAttribute ("Behavior")] public virtual bool ShowSelectButton { get { return ViewState.GetBool ("ShowSelectButton", false); } set { ViewState ["ShowSelectButton"] = value; OnFieldChanged (); } } [DefaultValueAttribute (false)] [WebSysDescription ("")] [WebCategoryAttribute ("Behavior")] public virtual bool ShowInsertButton { get { return ViewState.GetBool ("ShowInsertButton", false); } set { ViewState ["ShowInsertButton"] = value; OnFieldChanged (); } } [EditorAttribute ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)] [UrlPropertyAttribute] [DefaultValueAttribute ("")] [WebSysDescription ("")] [WebCategoryAttribute ("Appearance")] public virtual string UpdateImageUrl { get { return ViewState.GetString ("UpdateImageUrl", ""); } set { ViewState ["UpdateImageUrl"] = value; OnFieldChanged (); } } [LocalizableAttribute (true)] [WebSysDescription ("")] [WebCategoryAttribute ("Appearance")] public virtual string UpdateText { get { return ViewState.GetString ("UpdateText", "Update"); } set { ViewState ["UpdateText"] = value; OnFieldChanged (); } } public override void InitializeCell (DataControlFieldCell cell, DataControlCellType cellType, DataControlRowState rowState, int rowIndex) { string index = rowIndex.ToString (); if (cellType == DataControlCellType.DataCell) { if ((rowState & DataControlRowState.Edit) != 0) { if (ShowEditButton) { cell.Controls.Add (CreateButton (UpdateText, UpdateImageUrl, DataControlCommands.UpdateCommandName, index)); if (ShowCancelButton) { AddSeparator (cell); cell.Controls.Add (CreateButton (CancelText, CancelImageUrl, DataControlCommands.CancelCommandName, index)); } } } else if ((rowState & DataControlRowState.Insert) != 0) { if (ShowInsertButton) { cell.Controls.Add (CreateButton (InsertText, InsertImageUrl, DataControlCommands.InsertCommandName, index)); if (ShowCancelButton) { AddSeparator (cell); cell.Controls.Add (CreateButton (CancelText, CancelImageUrl, DataControlCommands.CancelCommandName, index)); } } } else { if (ShowEditButton) { AddSeparator (cell); cell.Controls.Add (CreateButton (EditText, EditImageUrl, DataControlCommands.EditCommandName, index)); } if (ShowDeleteButton) { AddSeparator (cell); cell.Controls.Add (CreateButton (DeleteText, DeleteImageUrl, DataControlCommands.DeleteCommandName, index)); } if (ShowInsertButton) { AddSeparator (cell); cell.Controls.Add (CreateButton (NewText, NewImageUrl, DataControlCommands.NewCommandName, index)); } if (ShowSelectButton) { AddSeparator (cell); cell.Controls.Add (CreateButton (SelectText, SelectImageUrl, DataControlCommands.SelectCommandName, index)); } } } else base.InitializeCell (cell, cellType, rowState, rowIndex); } Control CreateButton (string text, string image, string command, string arg) { IDataControlButton c = DataControlButton.CreateButton (ButtonType, Control, text, image, command, arg, false); if (CausesValidation) { if (command == DataControlCommands.UpdateCommandName || command == DataControlCommands.InsertCommandName) { c.Container = null; c.CausesValidation = true; c.ValidationGroup = ValidationGroup; } } return (Control)c; } void AddSeparator (DataControlFieldCell cell) { if (cell.Controls.Count > 0) { Literal lit = new Literal (); lit.Text = " "; cell.Controls.Add (lit); } } protected override DataControlField CreateField () { return new CommandField (); } protected override void CopyProperties (DataControlField newField) { base.CopyProperties (newField); CommandField field = (CommandField) newField; field.CancelImageUrl = CancelImageUrl; field.CancelText = CancelText; field.DeleteImageUrl = DeleteImageUrl; field.DeleteText = DeleteText; field.EditImageUrl = EditImageUrl; field.EditText = EditText; field.InsertImageUrl = InsertImageUrl; field.InsertText = InsertText; field.NewImageUrl = NewImageUrl; field.NewText = NewText; field.SelectImageUrl = SelectImageUrl; field.SelectText = SelectText; field.ShowCancelButton = ShowCancelButton; field.ShowDeleteButton = ShowDeleteButton; field.ShowEditButton = ShowEditButton; field.ShowSelectButton = ShowSelectButton; field.ShowInsertButton = ShowInsertButton; field.UpdateImageUrl = UpdateImageUrl; field.UpdateText = UpdateText; } public override void ValidateSupportsCallback () { if (ShowSelectButton) throw new NotSupportedException ("Callbacks are not supported on CommandField when the select button is enabled because other controls on your page that are dependent on the selected value of '" + Control.ID + "' for their rendering will not update in a callback. Turn callbacks off on '" + Control.ID + "'."); } } } #endif