You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			298 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			298 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| //------------------------------------------------------------------------------
 | |
| // <copyright file="ButtonColumn.cs" company="Microsoft">
 | |
| //     Copyright (c) Microsoft Corporation.  All rights reserved.
 | |
| // </copyright>
 | |
| //------------------------------------------------------------------------------
 | |
| 
 | |
| namespace System.Web.UI.WebControls {
 | |
| 
 | |
|     using System;
 | |
|     using System.Collections;
 | |
|     using System.ComponentModel;
 | |
|     using System.Globalization;
 | |
|     using System.Web;
 | |
|     using System.Web.UI;
 | |
|     using System.Web.Util;
 | |
| 
 | |
| 
 | |
|     /// <devdoc>
 | |
|     /// <para>Creates a column with a set of <see cref='System.Web.UI.WebControls.Button'/>
 | |
|     /// controls.</para>
 | |
|     /// </devdoc>
 | |
|     public class ButtonColumn : DataGridColumn {
 | |
| 
 | |
|         private PropertyDescriptor textFieldDesc;
 | |
| 
 | |
| 
 | |
|         /// <devdoc>
 | |
|         /// <para>Initializes a new instance of the <see cref='System.Web.UI.WebControls.ButtonColumn'/> class.</para>
 | |
|         /// </devdoc>
 | |
|         public ButtonColumn() {
 | |
|         }
 | |
| 
 | |
| 
 | |
| 
 | |
|         /// <devdoc>
 | |
|         ///    <para>Gets or sets the type of button to render in the
 | |
|         ///       column.</para>
 | |
|         /// </devdoc>
 | |
|         [
 | |
|         WebCategory("Appearance"),
 | |
|         DefaultValue(ButtonColumnType.LinkButton),
 | |
|         WebSysDescriptionAttribute(SR.ButtonColumn_ButtonType)
 | |
|         ]
 | |
|         public virtual ButtonColumnType ButtonType {
 | |
|             get {
 | |
|                 object o = ViewState["ButtonType"];
 | |
|                 if (o != null)
 | |
|                     return(ButtonColumnType)o;
 | |
|                 return ButtonColumnType.LinkButton;
 | |
|             }
 | |
|             set {
 | |
|                 if (value < ButtonColumnType.LinkButton || value > ButtonColumnType.PushButton) {
 | |
|                     throw new ArgumentOutOfRangeException("value");
 | |
|                 }
 | |
|                 ViewState["ButtonType"] = value;
 | |
|                 OnColumnChanged();
 | |
|             }
 | |
|         }
 | |
| 
 | |
| 
 | |
|         [
 | |
|         DefaultValue(false),
 | |
|         WebSysDescriptionAttribute(SR.ButtonColumn_CausesValidation)
 | |
|         ]
 | |
|         public virtual bool CausesValidation {
 | |
|             get {
 | |
|                 object o = ViewState["CausesValidation"];
 | |
|                 if (o != null) {
 | |
|                     return (bool)o;
 | |
|                 }
 | |
|                 return false;
 | |
|             }
 | |
|             set {
 | |
|                 ViewState["CausesValidation"] = value;
 | |
|                 OnColumnChanged();
 | |
|             }
 | |
|         }
 | |
| 
 | |
| 
 | |
|         /// <devdoc>
 | |
|         /// <para>Gets or sets the command to perform when this <see cref='System.Web.UI.WebControls.Button'/>
 | |
|         /// is clicked.</para>
 | |
|         /// </devdoc>
 | |
|         [
 | |
|         WebCategory("Behavior"),
 | |
|         DefaultValue(""),
 | |
|         WebSysDescriptionAttribute(SR.WebControl_CommandName)
 | |
|         ]
 | |
|         public virtual string CommandName {
 | |
|             get {
 | |
|                 object o = ViewState["CommandName"];
 | |
|                 if (o != null)
 | |
|                     return(string)o;
 | |
|                 return string.Empty;
 | |
|             }
 | |
|             set {
 | |
|                 ViewState["CommandName"] = value;
 | |
|                 OnColumnChanged();
 | |
|             }
 | |
|         }
 | |
| 
 | |
| 
 | |
|         /// <devdoc>
 | |
|         ///    <para>Gets or sets the field name from the data model that is
 | |
|         ///       bound to the <see cref='System.Web.UI.WebControls.ButtonColumn.Text'/> property of the button in this column.</para>
 | |
|         /// </devdoc>
 | |
|         [
 | |
|         WebCategory("Data"),
 | |
|         DefaultValue(""),
 | |
|         WebSysDescriptionAttribute(SR.ButtonColumn_DataTextField)
 | |
|         ]
 | |
|         public virtual string DataTextField {
 | |
|             get {
 | |
|                 object o = ViewState["DataTextField"];
 | |
|                 if (o != null)
 | |
|                     return(string)o;
 | |
|                 return String.Empty;
 | |
|             }
 | |
|             set {
 | |
|                 ViewState["DataTextField"] = value;
 | |
|                 OnColumnChanged();
 | |
|             }
 | |
|         }
 | |
| 
 | |
| 
 | |
|         /// <devdoc>
 | |
|         ///    <para>Gets or sets the string used to format the data bound to
 | |
|         ///       the <see cref='System.Web.UI.WebControls.ButtonColumn.Text'/> property of the button.</para>
 | |
|         /// </devdoc>
 | |
|         [
 | |
|         WebCategory("Data"),
 | |
|         DefaultValue(""),
 | |
|         WebSysDescriptionAttribute(SR.ButtonColumn_DataTextFormatString)
 | |
|         ]
 | |
|         public virtual string DataTextFormatString {
 | |
|             get {
 | |
|                 object o = ViewState["DataTextFormatString"];
 | |
|                 if (o != null)
 | |
|                     return(string)o;
 | |
|                 return String.Empty;
 | |
|             }
 | |
|             set {
 | |
|                 ViewState["DataTextFormatString"] = value;
 | |
|                 OnColumnChanged();
 | |
|             }
 | |
|         }
 | |
| 
 | |
| 
 | |
|         /// <devdoc>
 | |
|         /// <para>Gets or sets the caption text displayed on the <see cref='System.Web.UI.WebControls.Button'/>
 | |
|         /// in this column.</para>
 | |
|         /// </devdoc>
 | |
|         [
 | |
|         Localizable(true),
 | |
|         WebCategory("Appearance"),
 | |
|         DefaultValue(""),
 | |
|         WebSysDescriptionAttribute(SR.ButtonColumn_Text)
 | |
|         ]
 | |
|         public virtual string Text {
 | |
|             get {
 | |
|                 object o = ViewState["Text"];
 | |
|                 if (o != null)
 | |
|                     return(string)o;
 | |
|                 return String.Empty;
 | |
|             }
 | |
|             set {
 | |
|                 ViewState["Text"] = value;
 | |
|                 OnColumnChanged();
 | |
|             }
 | |
|         }
 | |
| 
 | |
| 
 | |
|         [
 | |
|         DefaultValue(""),
 | |
|         WebSysDescriptionAttribute(SR.ButtonColumn_ValidationGroup)
 | |
|         ]
 | |
|         public virtual string ValidationGroup {
 | |
|             get {
 | |
|                 object o = ViewState["ValidationGroup"];
 | |
|                 if (o != null) {
 | |
|                     return (string)o;
 | |
|                 }
 | |
|                 return String.Empty;
 | |
|             }
 | |
|             set {
 | |
|                 ViewState["ValidationGroup"] = value;
 | |
|                 OnColumnChanged();
 | |
|             }
 | |
|         }
 | |
| 
 | |
| 
 | |
| 
 | |
|         /// <devdoc>
 | |
|         /// </devdoc>
 | |
|         protected virtual string FormatDataTextValue(object dataTextValue) {
 | |
|             string formattedTextValue = String.Empty;
 | |
| 
 | |
|             if (!DataBinder.IsNull(dataTextValue)) {
 | |
|                 string formatting = DataTextFormatString;
 | |
|                 if (formatting.Length == 0) {
 | |
|                     formattedTextValue = dataTextValue.ToString();
 | |
|                 }
 | |
|                 else {
 | |
|                     formattedTextValue = String.Format(CultureInfo.CurrentCulture, formatting, dataTextValue);
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             return formattedTextValue;
 | |
|         }
 | |
| 
 | |
| 
 | |
|         /// <devdoc>
 | |
|         /// </devdoc>
 | |
|         public override void Initialize() {
 | |
|             base.Initialize();
 | |
|             textFieldDesc = null;
 | |
|         }
 | |
| 
 | |
| 
 | |
|         /// <devdoc>
 | |
|         /// <para>Initializes a cell in the <see cref='System.Web.UI.WebControls.ButtonColumn'/> .</para>
 | |
|         /// </devdoc>
 | |
|         public override void InitializeCell(TableCell cell, int columnIndex, ListItemType itemType) {
 | |
|             base.InitializeCell(cell, columnIndex, itemType);
 | |
| 
 | |
|             if ((itemType != ListItemType.Header) &&
 | |
|                 (itemType != ListItemType.Footer)) {
 | |
|                 WebControl buttonControl = null;
 | |
| 
 | |
|                 if (ButtonType == ButtonColumnType.LinkButton) {
 | |
|                     LinkButton button = new DataGridLinkButton();
 | |
| 
 | |
|                     button.Text = Text;
 | |
|                     button.CommandName = CommandName;
 | |
|                     button.CausesValidation = CausesValidation;
 | |
|                     button.ValidationGroup = ValidationGroup;
 | |
|                     buttonControl = button;
 | |
|                 }
 | |
|                 else {
 | |
|                     Button button = new Button();
 | |
| 
 | |
|                     button.Text = Text;
 | |
|                     button.CommandName = CommandName;
 | |
|                     button.CausesValidation = CausesValidation;
 | |
|                     button.ValidationGroup = ValidationGroup;
 | |
|                     buttonControl = button;
 | |
|                 }
 | |
| 
 | |
|                 if (DataTextField.Length != 0) {
 | |
|                     buttonControl.DataBinding += new EventHandler(this.OnDataBindColumn);
 | |
|                 }
 | |
| 
 | |
|                 cell.Controls.Add(buttonControl);
 | |
|             }
 | |
|         }
 | |
| 
 | |
| 
 | |
|         /// <devdoc>
 | |
|         /// </devdoc>
 | |
|         private void OnDataBindColumn(object sender, EventArgs e) {
 | |
|             Debug.Assert(DataTextField.Length != 0, "Shouldn't be DataBinding without a DataTextField");
 | |
| 
 | |
|             Control boundControl = (Control)sender;
 | |
|             DataGridItem item = (DataGridItem)boundControl.NamingContainer;
 | |
|             object dataItem = item.DataItem;
 | |
| 
 | |
|             if (textFieldDesc == null) {
 | |
|                 string dataField = DataTextField;
 | |
| 
 | |
|                 textFieldDesc = TypeDescriptor.GetProperties(dataItem).Find(dataField, true);
 | |
|                 if ((textFieldDesc == null) && !DesignMode) {
 | |
|                     throw new HttpException(SR.GetString(SR.Field_Not_Found, dataField));
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             string dataValue;
 | |
| 
 | |
|             if (textFieldDesc != null) {
 | |
|                 object data = textFieldDesc.GetValue(dataItem);
 | |
|                 dataValue = FormatDataTextValue(data);
 | |
|             }
 | |
|             else {
 | |
|                 Debug.Assert(DesignMode == true);
 | |
|                 dataValue = SR.GetString(SR.Sample_Databound_Text);
 | |
|             }
 | |
| 
 | |
|             if (boundControl is LinkButton) {
 | |
|                 ((LinkButton)boundControl).Text = dataValue;
 | |
|             }
 | |
|             else {
 | |
|                 Debug.Assert(boundControl is Button, "Expected the bound control to be a Button");
 | |
|                 ((Button)boundControl).Text = dataValue;
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 |