EditCommandColumn Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
A vezérlőelem speciális oszloptípusa DataGrid , amely az Edit egyes sorokban lévő adatelemek szerkesztésére szolgáló gombokat tartalmazza.
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
- Öröklődés
Példák
Az alábbi példakód bemutatja, hogyan adhat hozzá objektumot EditCommandColumn egy DataGrid vezérlőhöz.
<%@ 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>
Megjegyzések
EditCommandColumn Az osztály használatával hozzon létre egy speciális oszlopot a DataGrid vezérlőelemhez, amely a Editrács minden adatsorához tartalmazza a , Updateés Cancel gombokat. Ezek a gombok lehetővé teszik egy sor értékeinek szerkesztését a DataGrid vezérlőelemben.
Ha nincs kijelölve sor, Edit egy gomb jelenik meg a EditCommandColumn vezérlőelem minden adatsorának objektumában DataGrid . Amikor egy Edit elem gombjára kattint, az EditCommand esemény fel lesz emelve, és a Edit gombot lecseréli az és Update a Cancel gombokra. Meg kell adnia az esemény kezeléséhez EditCommand szükséges kódot. Egy tipikus eseménykezelő beállítja a EditItemIndex tulajdonságot a kijelölt sorra, majd újrakonfigurálja az adatokat a DataGrid vezérlőhöz.
Note
Meg kell adnia a , CancelTextés EditText a UpdateTexttulajdonságok értékeit. Ellenkező esetben a társított gombok nem jelennek meg a EditCommandColumn.
A tulajdonság beállításával beállíthatja, hogy a EditCommandColumn gombok hivatkozásként vagy leküldéses gombként jelenjenek meg ButtonType .
Ha a vagy Update a Cancel gombra kattint, az vagy az UpdateCommandCancelCommand eseményt emeli ki. Az események kezeléséhez kódot kell megadnia.
Az esemény egy tipikus kezelője UpdateCommand frissíti az adatokat, beállítja a EditItemIndex tulajdonságot -1 (az elem kijelölésének megszüntetéséhez), majd újrakonfigurálja az adatokat a DataGrid vezérlőhöz.
Az esemény egy tipikus kezelője CancelCommand beállítja a EditItemIndex tulajdonságot -1 (az elem kijelölésének megszüntetéséhez), majd újrakonfigurálja az adatokat a DataGrid vezérlőhöz.
Figyelmeztetés
Az EditCommandColumn objektum a felhasználói bemenetek megjelenítésére használható, amelyek rosszindulatú ügyfélszkripteket is tartalmazhatnak. Mielőtt megjelenítené az alkalmazásban, ellenőrizze az ügyféltől a végrehajtható szkriptekhez, SQL-utasításokhoz vagy más kódhoz küldött információkat. Érvényesítési vezérlőkkel ellenőrizheti a felhasználói bemenetet, mielőtt megjelenítené a beviteli szöveget egy DataGrid vezérlőben. ASP.NET a bemeneti kérések érvényesítési funkciójával letilthatja a szkriptet és a HTML-t a felhasználói bemenetben. További információ: A standard vezérlők, Hogyan: Védelem a szkriptek kihasználása ellen a webalkalmazásokban a HTML-kódolás sztringekre való alkalmazásával és Az ASP.NET weblapok felhasználói bemenetének ellenőrzése.
Alapértelmezés szerint az oldalérvényesítés akkor történik, ha a Update vezérlő egyik EditCommandColumn gombjára kattint. Az oldalérvényesítés határozza meg, hogy az oldalon egy érvényesítési vezérlőhöz társított beviteli vezérlők mindegyike megfelel-e az érvényesítési vezérlő által megadott érvényesítési szabályoknak. Ha meg szeretné akadályozni az oldalérvényesítést, állítsa a tulajdonságot a CausesValidation következőre false: .
Konstruktorok
| Name | Description |
|---|---|
| EditCommandColumn() |
Inicializálja a EditCommandColumn osztály új példányát. |
Tulajdonságok
| Name | Description |
|---|---|
| ButtonType |
Lekéri vagy beállítja az oszlop gombtípusát. |
| CancelText |
Lekéri vagy beállítja a parancsgombhoz megjelenítendő |
| CausesValidation |
Lekéri vagy beállít egy értéket, amely jelzi, hogy az ellenőrzés akkor történik-e, amikor az |
| DesignMode |
Olyan értéket kap, amely jelzi, hogy az oszlop tervező módban van-e. (Öröklődés forrása DataGridColumn) |
| EditText |
Lekéri vagy beállítja a gombhoz megjelenítendő szöveget a |
| FooterStyle |
Lekéri az oszlop láblécszakaszának stílustulajdonságait. (Öröklődés forrása DataGridColumn) |
| FooterText |
Lekéri vagy beállítja az oszlop láblécszakaszában megjelenő szöveget. (Öröklődés forrása DataGridColumn) |
| HeaderImageUrl |
Lekéri vagy beállítja egy kép helyét, hogy megjelenjen az oszlop fejlécszakaszában. (Öröklődés forrása DataGridColumn) |
| HeaderStyle |
Lekéri az oszlop fejlécszakaszának stílustulajdonságait. (Öröklődés forrása DataGridColumn) |
| HeaderText |
Lekéri vagy beállítja az oszlop fejlécszakaszában megjelenő szöveget. (Öröklődés forrása DataGridColumn) |
| IsTrackingViewState |
Olyan értéket kap, amely meghatározza, hogy az DataGridColumn objektum meg van-e jelölve az állapot mentéséhez. (Öröklődés forrása DataGridColumn) |
| ItemStyle |
Lekéri az oszlop elemcelláinak stílustulajdonságait. (Öröklődés forrása DataGridColumn) |
| Owner |
Lekéri azt a DataGrid vezérlőt, amelynek az oszlop tagja. (Öröklődés forrása DataGridColumn) |
| SortExpression |
Lekéri vagy beállítja annak a mezőnek vagy kifejezésnek a nevét, amely a rendezéshez kijelölt oszlopot adja át a OnSortCommand(DataGridSortCommandEventArgs) metódusnak. (Öröklődés forrása DataGridColumn) |
| UpdateText |
Lekéri vagy beállítja a parancsgombhoz megjelenítendő |
| ValidationGroup |
Lekéri vagy beállítja azoknak az érvényesítési vezérlőknek a csoportját, amelyek esetében az EditCommandColumn objektum érvényesítést okoz, amikor visszakerül a kiszolgálóra. |
| ViewState |
Lekéri azt az StateBag objektumot, amely lehetővé teszi, hogy az DataGridColumn osztályból származó oszlop tárolja a tulajdonságait. (Öröklődés forrása DataGridColumn) |
| Visible |
Lekéri vagy beállít egy értéket, amely jelzi, hogy az oszlop látható-e a DataGrid vezérlőben. (Öröklődés forrása DataGridColumn) |
Metódusok
| Name | Description |
|---|---|
| Equals(Object) |
Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal. (Öröklődés forrása Object) |
| GetHashCode() |
Ez az alapértelmezett kivonatoló függvény. (Öröklődés forrása Object) |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| Initialize() |
Az alap implementációt biztosítja az osztályból DataGridColumn származó oszlop kezdeti állapotba állításához. (Öröklődés forrása DataGridColumn) |
| InitializeCell(TableCell, Int32, ListItemType) |
Inicializál egy cellát az oszlopban. |
| LoadViewState(Object) |
Betölti DataGridColumn az objektum állapotát. (Öröklődés forrása DataGridColumn) |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| OnColumnChanged() |
Meghívja a OnColumnsChanged() metódust. (Öröklődés forrása DataGridColumn) |
| SaveViewState() |
Menti az objektum aktuális állapotát DataGridColumn . (Öröklődés forrása DataGridColumn) |
| ToString() |
Az oszlop sztring-ábrázolását adja vissza. (Öröklődés forrása DataGridColumn) |
| TrackViewState() |
A kiszolgálóvezérlő nézetállapot-változásainak nyomon követését okozza, hogy azok a kiszolgálóvezérlő StateBag objektumában tárolhatók legyenek. (Öröklődés forrása DataGridColumn) |
Explicit interfész-implementációk
| Name | Description |
|---|---|
| IStateManager.IsTrackingViewState |
Olyan értéket kap, amely jelzi, hogy az oszlop nyomon követi-e a nézet állapotának változásait. (Öröklődés forrása DataGridColumn) |
| IStateManager.LoadViewState(Object) |
Betölti a korábban mentett állapotot. (Öröklődés forrása DataGridColumn) |
| IStateManager.SaveViewState() |
Állapotváltozásokat tartalmazó objektumot ad vissza. (Öröklődés forrása DataGridColumn) |
| IStateManager.TrackViewState() |
Megkezdi az állapotváltozások nyomon követését. (Öröklődés forrása DataGridColumn) |