EditCommandColumn クラス
アセンブリ: System.Web (system.web.dll 内)


EditCommandColumn クラスを使用して、グリッドの各データ行の Edit、Update、Cancel の各ボタンを格納している DataGrid コントロールの特殊な列を作成します。これらのボタンにより、DataGrid コントロールの行の値を編集できます。
行が選択されていない場合は、DataGrid コントロールの各データ行の EditCommandColumn オブジェクトに Edit ボタンが表示されます。項目に対して Edit ボタンがクリックされると、EditCommand イベントが発生し、Edit ボタンが Update ボタンと Cancel ボタンに置き換えられます。EditCommand イベントを処理するには、コードを作成する必要があります。通常のイベント ハンドラは、選択した行に EditItemIndex プロパティを設定し、データを DataGrid コントロールに再バインドします。
![]() |
---|
EditCommandColumn オブジェクトを使用すると、ユーザー入力を表示できますが、ユーザー入力には悪意のあるクライアント スクリプトが含まれている可能性があります。アプリケーションに表示する前に、クライアントから送信された実行スクリプト、SQL ステートメントなどのコードの情報はすべて検査してください。検証コントロールを使用して、DataGrid コントロールに入力テキストを表示する前にユーザー入力を検査できます。ASP.NET には入力要求の検証機能があり、ユーザー入力の中のスクリプトと HTML をブロックできます。詳細については、「標準コントロールのセキュリティ保護」、「方法 : HTML エンコーディングを文字列に適用して Web アプリケーションをスクリプトによる攻略から保護する」、および「ASP.NET Web ページにおけるユーザー入力の検証」を参照してください。 |
既定では、EditCommandColumn コントロールの Update ボタンがクリックされたときにページ検証が実行されます。ページ検証は、ページ上にある検証コントロールに関連付けられたすべての入力コントロールが、その検証コントロールによって指定されている検証規則に準拠しているかどうかを判断します。ページ検証を実行しないようにするには、CausesValidation プロパティを false に設定します。

EditCommandColumn オブジェクトを DataGrid コントロールに追加する方法を次のコード例に示します。
<%@ Page Language="VB" AutoEventWireup="True" %> <%@ Import Namespace="System.Data" %> <html> <script runat="server"> ' The Cart and CartView objects temporarily store the data source ' for the DataGrid control while the page is being processed. Dim Cart As DataTable = New DataTable() Dim CartView As DataView Sub Page_Load(sender As Object, e As EventArgs) ' With a database, use an select query to retrieve the data. Because ' the data source in this example is an in-memory DataTable, retrieve ' the data from session state if it exists; otherwise create the data ' source. GetSource() ' The DataGrid control maintains state between posts to the server; ' it only needs to be bound to a data source the first time the page ' is loaded or when the data source is updated. If Not IsPostBack Then BindGrid() End If End Sub Sub ItemsGrid_Edit(sender As Object, e As DataGridCommandEventArgs) ' Set the EditItemIndex property to the index of the item clicked ' in the DataGrid control to enable editing for that item. Be sure ' to rebind the DateGrid to the data source to refresh the control. ItemsGrid.EditItemIndex = e.Item.ItemIndex BindGrid() End Sub Sub ItemsGrid_Cancel(sender As Object, e As DataGridCommandEventArgs) ' Set the EditItemIndex property to -1 to exit editing mode. ' Be sure to rebind the DateGrid to the data source to refresh ' the control. ItemsGrid.EditItemIndex = -1 BindGrid() End Sub Sub ItemsGrid_Update(sender As Object, e As DataGridCommandEventArgs) ' Retrieve the text boxes that contain the values to update. ' For bound columns, the edited value is stored in a TextBox. ' The TextBox is the 0th control in a cell's Controls collection. ' Each cell in the Cells collection of a DataGrid item represents ' a column in the DataGrid control. Dim qtyText As TextBox = CType(e.Item.Cells(3).Controls(0), TextBox) Dim priceText As TextBox = CType(e.Item.Cells(4).Controls(0), TextBox) ' Retrieve the updated values. Dim item As String = e.Item.Cells(2).Text Dim qty As String = qtyText.Text Dim price As String = priceText.Text Dim dr As DataRow ' With a database, use an update command to update the data. ' Because the data source in this example is an in-memory ' DataTable, delete the old row and replace it with a new one. ' Remove the old entry and clear the row filter. CartView.RowFilter = "Item='" & item & "'" If CartView.Count > 0 Then CartView.Delete(0) End If CartView.RowFilter = "" ' *************************************************************** ' Insert data validation code here. Be sure to validate the ' values entered by the user before converting to the appropriate ' data types and updating the data source. ' *************************************************************** ' Add the new entry. dr = Cart.NewRow() dr(0) = Convert.ToInt32(qty) dr(1) = item ' If necessary, remove the '$' character from the price before ' converting it to a Double. If price.Chars(0) = "$" Then dr(2) = Convert.ToDouble(price.Substring(1)) Else dr(2) = Convert.ToDouble(price) End If Cart.Rows.Add(dr) ' Set the EditItemIndex property to -1 to exit editing mode. ' Be sure to rebind the DateGrid to the data source to refresh ' the control. ItemsGrid.EditItemIndex = -1 BindGrid() End Sub Sub BindGrid() ' Set the data source and bind to the Data Grid control. ItemsGrid.DataSource = CartView ItemsGrid.DataBind() End Sub Sub GetSource() ' For this example, the data source is a DataTable that is stored ' in session state. If the data source does not exist, create it; ' otherwise, load the data. If Session("ShoppingCart") Is Nothing Then ' Create the sample data. Dim dr As DataRow ' Define the columns of the table. Cart.Columns.Add(new DataColumn("Qty", GetType(Int32))) Cart.Columns.Add(new DataColumn("Item", GetType(String))) Cart.Columns.Add(new DataColumn("Price", GetType(Double))) ' Store the table in session state to persist its values ' between posts to the server. Session("ShoppingCart") = Cart ' Populate the DataTable with sample data. Dim i As Integer For i = 1 To 9 dr = Cart.NewRow() If (i Mod 2) <> 0 Then dr(0) = 2 Else dr(0) = 1 End If dr(1) = "Item " & i.ToString() dr(2) = (1.23 * (i + 1)) Cart.Rows.Add(dr) Next i Else ' Retrieve the sample data from session state. Cart = CType(Session("ShoppingCart"), DataTable) End If ' Create a DataView and specify the field to sort by. CartView = New DataView(Cart) CartView.Sort="Item" Return End Sub Sub ItemsGrid_Command(sender As Object, e As DataGridCommandEventArgs) Select (CType(e.CommandSource, LinkButton)).CommandName Case "Delete" DeleteItem(e) ' Add other cases here, if there are multiple ButtonColumns in ' the DataGrid control. Case Else ' Do nothing. End Select End Sub Sub DeleteItem(e As DataGridCommandEventArgs) ' e.Item is the table row where the command is raised. For bound ' columns, the value is stored in the Text property of a TableCell. Dim itemCell As TableCell = e.Item.Cells(2) Dim item As String = itemCell.Text ' Remove the selected item from the data source. CartView.RowFilter = "Item='" & item + "'" If CartView.Count > 0 Then CartView.Delete(0) End If CartView.RowFilter = "" ' Rebind the data source to refresh the DataGrid control. BindGrid() End Sub </script> <body> <form runat="server"> <h3>DataGrid Editing Example</h3> <asp:DataGrid id="ItemsGrid" BorderColor="black" BorderWidth="1" CellPadding="3" OnEditCommand="ItemsGrid_Edit" OnCancelCommand="ItemsGrid_Cancel" OnUpdateCommand="ItemsGrid_Update" OnItemCommand="ItemsGrid_Command" AutoGenerateColumns="false" runat="server"> <HeaderStyle BackColor="#aaaadd"> </HeaderStyle> <Columns> <asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="Update" HeaderText="Edit item"> <ItemStyle Wrap="False"> </ItemStyle> <HeaderStyle Wrap="False"> </HeaderStyle> </asp:EditCommandColumn> <asp:ButtonColumn HeaderText="Delete item" ButtonType="LinkButton" Text="Delete" CommandName="Delete"/> <asp:BoundColumn HeaderText="Item" ReadOnly="True" DataField="Item"/> <asp:BoundColumn HeaderText="Quantity" DataField="Qty"/> <asp:BoundColumn HeaderText="Price" DataField="Price" DataFormatString="{0:c}"/> </Columns> </asp:DataGrid> </form> </body> </html>
<%@ Page Language="C#" AutoEventWireup="True" %> <%@ Import Namespace="System.Data" %> <html> <script runat="server"> // The Cart and CartView objects temporarily store the data source // for the DataGrid control while the page is being processed. DataTable Cart = new DataTable(); DataView CartView; void Page_Load(Object sender, EventArgs e) { // With a database, use an select query to retrieve the data. Because // the data source in this example is an in-memory DataTable, retrieve // the data from session state if it exists; otherwise, create the data // source. GetSource(); // The DataGrid control maintains state between posts to the server; // it only needs to be bound to a data source the first time the page // is loaded or when the data source is updated. if (!IsPostBack) { BindGrid(); } } void ItemsGrid_Edit(Object sender, DataGridCommandEventArgs e) { // Set the EditItemIndex property to the index of the item clicked // in the DataGrid control to enable editing for that item. Be sure // to rebind the DateGrid to the data source to refresh the control. ItemsGrid.EditItemIndex = e.Item.ItemIndex; BindGrid(); } void ItemsGrid_Cancel(Object sender, DataGridCommandEventArgs e) { // Set the EditItemIndex property to -1 to exit editing mode. // Be sure to rebind the DateGrid to the data source to refresh // the control. ItemsGrid.EditItemIndex = -1; BindGrid(); } void ItemsGrid_Update(Object sender, DataGridCommandEventArgs e) { // Retrieve the text boxes that contain the values to update. // For bound columns, the edited value is stored in a TextBox. // The TextBox is the 0th control in a cell's Controls collection. // Each cell in the Cells collection of a DataGrid item represents // a column in the DataGrid control. TextBox qtyText = (TextBox)e.Item.Cells[3].Controls[0]; TextBox priceText = (TextBox)e.Item.Cells[4].Controls[0]; // Retrieve the updated values. String item = e.Item.Cells[2].Text; String qty = qtyText.Text; String price = priceText.Text; DataRow dr; // With a database, use an update command to update the data. // Because the data source in this example is an in-memory // DataTable, delete the old row and replace it with a new one. // Remove the old entry and clear the row filter. CartView.RowFilter = "Item='" + item + "'"; if (CartView.Count > 0) { CartView.Delete(0); } CartView.RowFilter = ""; // *************************************************************** // Insert data validation code here. Be sure to validate the // values entered by the user before converting to the appropriate // data types and updating the data source. // *************************************************************** // Add the new entry. dr = Cart.NewRow(); dr[0] = Convert.ToInt32(qty); dr[1] = item; // If necessary, remove the '$' character from the price before // converting it to a Double. if(price[0] == '$') { dr[2] = Convert.ToDouble(price.Substring(1)); } else { dr[2] = Convert.ToDouble(price); } Cart.Rows.Add(dr); // Set the EditItemIndex property to -1 to exit editing mode. // Be sure to rebind the DateGrid to the data source to refresh // the control. ItemsGrid.EditItemIndex = -1; BindGrid(); } void BindGrid() { // Set the data source and bind to the Data Grid control. ItemsGrid.DataSource = CartView; ItemsGrid.DataBind(); } void GetSource() { // For this example, the data source is a DataTable that is stored // in session state. If the data source does not exist, create it; // otherwise, load the data. if (Session["ShoppingCart"] == null) { // Create the sample data. DataRow dr; // Define the columns of the table. Cart.Columns.Add(new DataColumn("Qty", typeof(Int32))); Cart.Columns.Add(new DataColumn("Item", typeof(String))); Cart.Columns.Add(new DataColumn("Price", typeof(Double))); // Store the table in session state to persist its values // between posts to the server. Session["ShoppingCart"] = Cart; // Populate the DataTable with sample data. for (int i = 1; i <= 9; i++) { dr = Cart.NewRow(); if (i % 2 != 0) { dr[0] = 2; } else { dr[0] = 1; } dr[1] = "Item " + i.ToString(); dr[2] = (1.23 * (i + 1)); Cart.Rows.Add(dr); } } else { // Retrieve the sample data from session state. Cart = (DataTable)Session["ShoppingCart"]; } // Create a DataView and specify the field to sort by. CartView = new DataView(Cart); CartView.Sort="Item"; return; } void ItemsGrid_Command(Object sender, DataGridCommandEventArgs e) { switch(((LinkButton)e.CommandSource).CommandName) { case "Delete": DeleteItem(e); break; // Add other cases here, if there are multiple ButtonColumns in // the DataGrid control. default: // Do nothing. break; } } void DeleteItem(DataGridCommandEventArgs e) { // e.Item is the table row where the command is raised. For bound // columns, the value is stored in the Text property of a TableCell. TableCell itemCell = e.Item.Cells[2]; string item = itemCell.Text; // Remove the selected item from the data source. CartView.RowFilter = "Item='" + item + "'"; if (CartView.Count > 0) { CartView.Delete(0); } CartView.RowFilter = ""; // Rebind the data source to refresh the DataGrid control. BindGrid(); } </script> <body> <form runat="server"> <h3>DataGrid Editing Example</h3> <asp:DataGrid id="ItemsGrid" BorderColor="black" BorderWidth="1" CellPadding="3" OnEditCommand="ItemsGrid_Edit" OnCancelCommand="ItemsGrid_Cancel" OnUpdateCommand="ItemsGrid_Update" OnItemCommand="ItemsGrid_Command" AutoGenerateColumns="false" runat="server"> <HeaderStyle BackColor="#aaaadd"> </HeaderStyle> <Columns> <asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="Update" HeaderText="Edit item"> <ItemStyle Wrap="False"> </ItemStyle> <HeaderStyle Wrap="False"> </HeaderStyle> </asp:EditCommandColumn> <asp:ButtonColumn HeaderText="Delete item" ButtonType="LinkButton" Text="Delete" CommandName="Delete"/> <asp:BoundColumn HeaderText="Item" ReadOnly="True" DataField="Item"/> <asp:BoundColumn HeaderText="Quantity" DataField="Qty"/> <asp:BoundColumn HeaderText="Price" DataField="Price" DataFormatString="{0:c}"/> </Columns> </asp:DataGrid> </form> </body> </html>

System.Web.UI.WebControls.DataGridColumn
System.Web.UI.WebControls.EditCommandColumn


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


EditCommandColumn コンストラクタ
アセンブリ: System.Web (system.web.dll 内)



EditCommandColumn クラスの新しいインスタンスを作成および初期化する方法を次の例に示します。
Sub Page_Load(sender As Object, e As EventArgs) Dim editcolumn As New EditCommandColumn() End Sub 'Page_Load

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


EditCommandColumn プロパティ

名前 | 説明 | |
---|---|---|
![]() | ButtonType | 列のボタンの種類を取得または設定します。 |
![]() | CancelText | EditCommandColumn の Cancel コマンド ボタンに表示するテキストを取得または設定します。 |
![]() | CausesValidation | EditCommandColumn オブジェクトの Update ボタンがクリックされたときに検証を実行するかどうかを示す値を取得または設定します。 |
![]() | EditText | EditCommandColumn の Edit ボタンに表示するテキストを取得または設定します。 |
![]() | FooterStyle | 列のフッター セクションのスタイル プロパティを取得します。 ( DataGridColumn から継承されます。) |
![]() | FooterText | 列のフッター セクションに表示されるテキストを取得または設定します。 ( DataGridColumn から継承されます。) |
![]() | HeaderImageUrl | 列のヘッダー セクションに表示するイメージの位置を取得または設定します。 ( DataGridColumn から継承されます。) |
![]() | HeaderStyle | 列のヘッダー セクションのスタイル プロパティを取得します。 ( DataGridColumn から継承されます。) |
![]() | HeaderText | 列のヘッダー セクションに表示されるテキストを取得または設定します。 ( DataGridColumn から継承されます。) |
![]() | ItemStyle | 列の項目セルのスタイル プロパティを取得します。 ( DataGridColumn から継承されます。) |
![]() | SortExpression | 並べ替えのために列が選択された場合に、OnSortCommand メソッドに渡されるフィールドの名前または式を、取得または設定します。 ( DataGridColumn から継承されます。) |
![]() | UpdateText | EditCommandColumn の Update コマンド ボタンに表示するテキストを取得または設定します。 |
![]() | ValidationGroup | EditCommandColumn オブジェクトがサーバーにポストバックされるときに、このオブジェクトによって発生する検証の対象となる検証コントロールのグループを取得または設定します。 |
![]() | Visible | DataGrid コントロールに列を表示するかどうかを示す値を取得または設定します。 ( DataGridColumn から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | DesignMode | 列がデザイン モードかどうかを示す値を取得します。 ( DataGridColumn から継承されます。) |
![]() | IsTrackingViewState | DataGridColumn オブジェクトが状態を保存するようにマークされているかどうかを判断する値を取得します。 ( DataGridColumn から継承されます。) |
![]() | Owner | 列がメンバとして含まれている DataGrid コントロールを取得します。 ( DataGridColumn から継承されます。) |
![]() | ViewState | DataGridColumn クラスから派生した列がそのプロパティを格納できるようにする System.Web.UI.StateBag オブジェクトを取得します。 ( DataGridColumn から継承されます。) |

EditCommandColumn メソッド

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | Initialize | DataGridColumn クラスから派生した列をその初期状態にリセットする基本の実装を提供します。 ( DataGridColumn から継承されます。) |
![]() | InitializeCell | オーバーライドされます。 列内のセルを初期化します。 |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | ToString | 列の文字列形式を返します。 ( DataGridColumn から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | LoadViewState | DataGridColumn オブジェクトの状態を読み込みます。 ( DataGridColumn から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |
![]() | OnColumnChanged | DataGridDesigner.OnColumnsChanged メソッドを呼び出します。 ( DataGridColumn から継承されます。) |
![]() | SaveViewState | DataGridColumn オブジェクトの現在の状態を保存します。 ( DataGridColumn から継承されます。) |
![]() | TrackViewState | サーバー コントロールにビューステートの変更を追跡させ、サーバー コントロールの System.Web.UI.StateBag オブジェクトに変更を格納できるようにします。 ( DataGridColumn から継承されます。) |

EditCommandColumn メンバ
各行のデータ項目を編集する Edit ボタンを格納している DataGrid コントロールの特殊な列型。
EditCommandColumn データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | ButtonType | 列のボタンの種類を取得または設定します。 |
![]() | CancelText | EditCommandColumn の Cancel コマンド ボタンに表示するテキストを取得または設定します。 |
![]() | CausesValidation | EditCommandColumn オブジェクトの Update ボタンがクリックされたときに検証を実行するかどうかを示す値を取得または設定します。 |
![]() | EditText | EditCommandColumn の Edit ボタンに表示するテキストを取得または設定します。 |
![]() | FooterStyle | 列のフッター セクションのスタイル プロパティを取得します。(DataGridColumn から継承されます。) |
![]() | FooterText | 列のフッター セクションに表示されるテキストを取得または設定します。(DataGridColumn から継承されます。) |
![]() | HeaderImageUrl | 列のヘッダー セクションに表示するイメージの位置を取得または設定します。(DataGridColumn から継承されます。) |
![]() | HeaderStyle | 列のヘッダー セクションのスタイル プロパティを取得します。(DataGridColumn から継承されます。) |
![]() | HeaderText | 列のヘッダー セクションに表示されるテキストを取得または設定します。(DataGridColumn から継承されます。) |
![]() | ItemStyle | 列の項目セルのスタイル プロパティを取得します。(DataGridColumn から継承されます。) |
![]() | SortExpression | 並べ替えのために列が選択された場合に、OnSortCommand メソッドに渡されるフィールドの名前または式を、取得または設定します。(DataGridColumn から継承されます。) |
![]() | UpdateText | EditCommandColumn の Update コマンド ボタンに表示するテキストを取得または設定します。 |
![]() | ValidationGroup | EditCommandColumn オブジェクトがサーバーにポストバックされるときに、このオブジェクトによって発生する検証の対象となる検証コントロールのグループを取得または設定します。 |
![]() | Visible | DataGrid コントロールに列を表示するかどうかを示す値を取得または設定します。(DataGridColumn から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | DesignMode | 列がデザイン モードかどうかを示す値を取得します。(DataGridColumn から継承されます。) |
![]() | IsTrackingViewState | DataGridColumn オブジェクトが状態を保存するようにマークされているかどうかを判断する値を取得します。(DataGridColumn から継承されます。) |
![]() | Owner | 列がメンバとして含まれている DataGrid コントロールを取得します。(DataGridColumn から継承されます。) |
![]() | ViewState | DataGridColumn クラスから派生した列がそのプロパティを格納できるようにする System.Web.UI.StateBag オブジェクトを取得します。(DataGridColumn から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | Initialize | DataGridColumn クラスから派生した列をその初期状態にリセットする基本の実装を提供します。 (DataGridColumn から継承されます。) |
![]() | InitializeCell | オーバーライドされます。 列内のセルを初期化します。 |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | ToString | 列の文字列形式を返します。 (DataGridColumn から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | LoadViewState | DataGridColumn オブジェクトの状態を読み込みます。 (DataGridColumn から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |
![]() | OnColumnChanged | DataGridDesigner.OnColumnsChanged メソッドを呼び出します。 (DataGridColumn から継承されます。) |
![]() | SaveViewState | DataGridColumn オブジェクトの現在の状態を保存します。 (DataGridColumn から継承されます。) |
![]() | TrackViewState | サーバー コントロールにビューステートの変更を追跡させ、サーバー コントロールの System.Web.UI.StateBag オブジェクトに変更を格納できるようにします。 (DataGridColumn から継承されます。) |

- EditCommandColumnのページへのリンク