//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//------------------------------------------------------------------------------
namespace System.Web.UI.WebControls {
using System;
using System.Collections;
using System.ComponentModel;
using System.Web.UI;
///
/// Creates a special column with buttons for ,
/// , and commands to edit items
/// within the selected row.
///
public class EditCommandColumn : DataGridColumn {
///
/// Initializes a new instance of an class.
///
public EditCommandColumn() {
}
///
/// Indicates the button type for the column.
///
[
DefaultValue(ButtonColumnType.LinkButton)
]
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();
}
}
///
/// Indicates the text to display for the command button
/// in the column.
///
[
Localizable(true),
DefaultValue("")
]
public virtual string CancelText {
get {
object o = ViewState["CancelText"];
if (o != null)
return(string)o;
return String.Empty;
}
set {
ViewState["CancelText"] = value;
OnColumnChanged();
}
}
[
DefaultValue(true),
]
public virtual bool CausesValidation {
get {
object o = ViewState["CausesValidation"];
if (o != null) {
return (bool)o;
}
return true;
}
set {
ViewState["CausesValidation"] = value;
OnColumnChanged();
}
}
///
/// Indicates the text to display for the command button in
/// the column.
///
[
Localizable(true),
DefaultValue("")
]
public virtual string EditText {
get {
object o = ViewState["EditText"];
if (o != null)
return(string)o;
return String.Empty;
}
set {
ViewState["EditText"] = value;
OnColumnChanged();
}
}
///
/// Indicates the text to display for the command button
/// in the column.
///
[
Localizable(true),
DefaultValue("")
]
public virtual string UpdateText {
get {
object o = ViewState["UpdateText"];
if (o != null)
return(string)o;
return String.Empty;
}
set {
ViewState["UpdateText"] = value;
OnColumnChanged();
}
}
[
DefaultValue(""),
]
public virtual string ValidationGroup {
get {
object o = ViewState["ValidationGroup"];
if (o != null) {
return (string)o;
}
return String.Empty;
}
set {
ViewState["ValidationGroup"] = value;
OnColumnChanged();
}
}
private void AddButtonToCell(TableCell cell, string commandName, string buttonText, bool causesValidation, string validationGroup) {
WebControl buttonControl = null;
ControlCollection controls = cell.Controls;
ButtonColumnType buttonType = ButtonType;
if (buttonType == ButtonColumnType.LinkButton) {
LinkButton button = new DataGridLinkButton();
buttonControl = button;
button.CommandName = commandName;
button.Text = buttonText;
button.CausesValidation = causesValidation;
button.ValidationGroup = validationGroup;
}
else {
Button button = new Button();
buttonControl = button;
button.CommandName = commandName;
button.Text = buttonText;
button.CausesValidation = causesValidation;
button.ValidationGroup = validationGroup;
}
controls.Add(buttonControl);
}
///
/// Initializes a cell within the column.
///
public override void InitializeCell(TableCell cell, int columnIndex, ListItemType itemType) {
base.InitializeCell(cell, columnIndex, itemType);
bool causesValidation = CausesValidation;
if ((itemType != ListItemType.Header) &&
(itemType != ListItemType.Footer)) {
if (itemType == ListItemType.EditItem) {
ControlCollection controls = cell.Controls;
AddButtonToCell(cell, DataGrid.UpdateCommandName, UpdateText, causesValidation, ValidationGroup);
LiteralControl spaceControl = new LiteralControl(" ");
controls.Add(spaceControl);
AddButtonToCell(cell, DataGrid.CancelCommandName, CancelText, false, String.Empty);
}
else {
AddButtonToCell(cell, DataGrid.EditCommandName, EditText, false, String.Empty);
}
}
}
}
}