EditCommandColumn 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
각 행에 데이터 항목 편집용 Edit
단추를 포함하는 DataGrid 컨트롤에 대한 특별한 열 형식입니다.
public ref class EditCommandColumn : System::Web::UI::WebControls::DataGridColumn
public class EditCommandColumn : System.Web.UI.WebControls.DataGridColumn
type EditCommandColumn = class
inherit DataGridColumn
Public Class EditCommandColumn
Inherits DataGridColumn
- 상속
예제
다음 코드 예제에 추가 하는 방법을 보여 줍니다.는 EditCommandColumn 개체는 DataGrid 제어 합니다.
<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<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>
<head runat="server">
<title>DataGrid Editing Example</title>
</head>
<body>
<form id="form1" 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="VB" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<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>
<head runat="server">
<title>DataGrid Editing Example</title>
</head>
<body>
<form id="form1" 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>
설명
사용 하 여는 EditCommandColumn 클래스에 대 한 특별 한 열을 만들 수는 DataGrid 포함 된 컨트롤을 Edit
, Update
, 및 Cancel
표의 각 데이터 행에 대 한 단추. 이러한 단추에 있는 행의 값을 편집할 수는 DataGrid 제어 합니다.
행을 선택 하면를 Edit
단추에 표시 합니다 EditCommandColumn 의 각 데이터 행에 대 한 개체는 DataGrid 컨트롤. 경우는 Edit
단추를 클릭 하면 항목에 대 한는 EditCommand 이벤트가 발생 및 Edit
단추 바뀝니다 합니다 Update
및 Cancel
단추. 처리 하는 코드를 제공 해야 합니다 EditCommand 이벤트입니다. 일반적인 이벤트 처리기를 설정 합니다 EditItemIndex 속성 선택된 된 행을 다음 데이터를 다시 바인딩합니다는 DataGrid 제어 합니다.
참고
에 대 한 값을 제공 해야 합니다 CancelText, EditText, 및 UpdateText 속성입니다. 그렇지 않은 경우 관련된 된 단추에 표시 되지 것입니다는 EditCommandColumn합니다.
단추를 EditCommandColumn 설정 하 여 하이퍼링크 또는 푸시 단추 표시로 설정할 수 있습니다는 ButtonType 속성입니다.
클릭 하는 Update
또는 Cancel
발생 시키는 단추를 UpdateCommand 또는 CancelCommand 이벤트, 각각. 이러한 이벤트를 처리 하는 코드를 제공 해야 합니다.
에 대 한 일반적인 처리기는 UpdateCommand 데이터 집합을 업데이트 하는 이벤트를 EditItemIndex 속성을 -1
(항목을 선택 취소)를, 다음 데이터를 다시 바인딩합니다는 DataGrid 컨트롤입니다.
에 대 한 일반적인 처리기는 CancelCommand 이벤트 집합을 EditItemIndex 속성을 -1
(항목을 선택 취소)를, 다음 데이터를 다시 바인딩합니다를 DataGrid 컨트롤입니다.
주의
EditCommandColumn 악성 클라이언트 스크립트 포함 될 수 있는 사용자 입력을 표시할 개체를 사용할 수 있습니다. 애플리케이션에서 표시 하기 전에 실행 스크립트, SQL 문 또는 다른 코드에 대 한 클라이언트에서 전송 되는 모든 정보를 확인 합니다. 입력된 텍스트를 표시 하기 전에 사용자 입력을 확인 하려면 유효성 검사 컨트롤을 사용할 수는 DataGrid 제어 합니다. ASP.NET에서는 사용자 입력에서 차단 스크립트를 HTML 입력된 요청 유효성 검사 기능을 제공 합니다. 자세한 내용은 표준 컨트롤 보호, 방법: 보호에 대 한 스크립트 악용 문자열을 HTML 인코딩 적용 하 여 웹 애플리케이션에서, 및 에서 사용자 입력 유효성 검사 ASP.NET 웹 페이지합니다.
기본적으로 페이지 유효성 검사는 컨트롤의 Update
EditCommandColumn 단추를 클릭할 때 수행됩니다. 페이지 유효성 검사는 유효성 검사 컨트롤에 의해 지정 된 유효성 검사 규칙을 통과 모든 페이지의 유효성 검사와 연관 된 입력된 컨트롤을 제어 하는지 여부를 결정 합니다. 페이지 유효성 검사가 발생을 방지 하려면 설정 합니다 CausesValidation 속성을 false
입니다.
생성자
EditCommandColumn() |
EditCommandColumn 클래스의 새 인스턴스를 초기화합니다. |
속성
ButtonType |
열에 대한 단추 형식을 가져오거나 설정합니다. |
CancelText |
EditCommandColumn에 있는 |
CausesValidation |
EditCommandColumn 개체의 |
DesignMode |
열이 디자인 모드인지 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 DataGridColumn) |
EditText |
EditCommandColumn에 있는 |
FooterStyle |
열의 바닥글 구역에 대한 스타일 속성을 가져옵니다. (다음에서 상속됨 DataGridColumn) |
FooterText |
열의 바닥글 구역에 표시할 텍스트를 가져오거나 설정합니다. (다음에서 상속됨 DataGridColumn) |
HeaderImageUrl |
열의 머리글 구역에 표시할 이미지의 위치를 가져오거나 설정합니다. (다음에서 상속됨 DataGridColumn) |
HeaderStyle |
열의 머리글 구역에 대한 스타일 속성을 가져옵니다. (다음에서 상속됨 DataGridColumn) |
HeaderText |
열의 머리글 구역에 표시할 텍스트를 가져오거나 설정합니다. (다음에서 상속됨 DataGridColumn) |
IsTrackingViewState |
DataGridColumn 개체가 상태를 저장하도록 표시되었는지 여부를 확인하는 값을 가져옵니다. (다음에서 상속됨 DataGridColumn) |
ItemStyle |
열의 항목 셀에 대한 스타일 속성을 가져옵니다. (다음에서 상속됨 DataGridColumn) |
Owner |
열을 멤버로 갖는 DataGrid 컨트롤을 가져옵니다. (다음에서 상속됨 DataGridColumn) |
SortExpression |
정렬할 열을 선택한 경우 OnSortCommand(DataGridSortCommandEventArgs) 메서드에 전달할 필드 또는 식 이름을 가져오거나 설정합니다. (다음에서 상속됨 DataGridColumn) |
UpdateText |
EditCommandColumn에 있는 |
ValidationGroup |
서버에 다시 게시될 때 EditCommandColumn 개체가 유효성 검사를 수행할 유효성 검사 컨트롤 그룹을 가져오거나 설정합니다. |
ViewState |
StateBag 클래스에서 파생된 열이 자신의 속성을 저장할 수 있게 하는 DataGridColumn 개체를 가져옵니다. (다음에서 상속됨 DataGridColumn) |
Visible |
DataGrid 컨트롤에서 열을 볼 수 있는지 여부를 나타내는 값을 가져오거나 설정합니다. (다음에서 상속됨 DataGridColumn) |
메서드
Equals(Object) |
지정된 개체가 현재 개체와 같은지 확인합니다. (다음에서 상속됨 Object) |
GetHashCode() |
기본 해시 함수로 작동합니다. (다음에서 상속됨 Object) |
GetType() |
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
Initialize() |
DataGridColumn 클래스에서 파생된 열을 초기 상태로 다시 설정하는 기본 구현을 제공합니다. (다음에서 상속됨 DataGridColumn) |
InitializeCell(TableCell, Int32, ListItemType) |
열 내의 셀을 초기화합니다. |
LoadViewState(Object) |
DataGridColumn 개체의 상태를 로드합니다. (다음에서 상속됨 DataGridColumn) |
MemberwiseClone() |
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
OnColumnChanged() |
OnColumnsChanged() 메서드를 호출합니다. (다음에서 상속됨 DataGridColumn) |
SaveViewState() |
DataGridColumn 개체의 현재 상태를 저장합니다. (다음에서 상속됨 DataGridColumn) |
ToString() |
열의 문자열 표현을 반환합니다. (다음에서 상속됨 DataGridColumn) |
TrackViewState() |
서버 컨트롤의 뷰 상태 변경 사항 추적 작업을 실행하여 서버 컨트롤의 StateBag 개체에 변경 사항이 저장되도록 합니다. (다음에서 상속됨 DataGridColumn) |
명시적 인터페이스 구현
IStateManager.IsTrackingViewState |
열에서 뷰 상태 변경 내용을 추적하는지 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 DataGridColumn) |
IStateManager.LoadViewState(Object) |
이전에 저장된 상태를 로드합니다. (다음에서 상속됨 DataGridColumn) |
IStateManager.SaveViewState() |
상태 변경 사항이 포함된 개체를 반환합니다. (다음에서 상속됨 DataGridColumn) |
IStateManager.TrackViewState() |
상태 변경 사항 추적을 시작합니다. (다음에서 상속됨 DataGridColumn) |
적용 대상
추가 정보
.NET