DataGridColumnCollection.Remove(DataGridColumn) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Удаляет указанный объект столбца, производной от DataGridColumn, из коллекции DataGridColumnCollection.
public:
void Remove(System::Web::UI::WebControls::DataGridColumn ^ column);
public void Remove (System.Web.UI.WebControls.DataGridColumn column);
member this.Remove : System.Web.UI.WebControls.DataGridColumn -> unit
Public Sub Remove (column As DataGridColumn)
Параметры
- column
- DataGridColumn
Объект столбца, производной от DataGridColumn, удаляемый из коллекции DataGridColumnCollection.
Примеры
В следующем примере кода показано, как использовать Remove метод для удаления столбца из DataGridColumnCollection коллекции. Обратите внимание, что Columns свойство DataGrid элемента управления является коллекцией DataGridColumnCollection .
<%@ 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 language="C#" runat="server">
DataTable Cart;
DataView CartView;
ICollection CreateDataSource()
{
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));
for (int i = 0; i < 9; i++)
{
dr = dt.NewRow();
dr[0] = i;
dr[1] = "Item " + i.ToString();
dr[2] = 1.23 * (i + 1);
dt.Rows.Add(dr);
}
DataView dv = new DataView(dt);
return dv;
}
void Page_Load(Object sender, EventArgs e)
{
if (Session["DG4_ShoppingCart"] == null)
{
Cart = new DataTable();
Cart.Columns.Add(new DataColumn("Item", typeof(string)));
Cart.Columns.Add(new DataColumn("Price", typeof(string)));
Session["DG4_ShoppingCart"] = Cart;
}
else
{
Cart = (DataTable)Session["DG4_ShoppingCart"];
}
CartView = new DataView(Cart);
ShoppingCart.DataSource = CartView;
ShoppingCart.DataBind();
if (!IsPostBack)
{
// Load this data only once.
ItemsGrid.DataSource= CreateDataSource();
ItemsGrid.DataBind();
}
}
void Grid_CartCommand(Object sender, DataGridCommandEventArgs e) {
DataRow dr = Cart.NewRow();
// e.Item is the table row where the command is raised.
// For bound columns, the value is stored in the Text property of the TableCell.
TableCell itemCell = e.Item.Cells[2];
TableCell priceCell = e.Item.Cells[3];
string item = itemCell.Text;
string price = priceCell.Text;
if (((Button)e.CommandSource).CommandName == "AddToCart")
{
dr[0] = item;
dr[1] = price;
Cart.Rows.Add(dr);
}
else
{
//Remove from Cart.
CartView.RowFilter = "Item='" + item + "'";
if (CartView.Count > 0)
{
CartView.Delete(0);
}
CartView.RowFilter = "";
}
ShoppingCart.DataBind();
}
void Button_Click(Object sender, EventArgs e)
{
ItemsGrid.Columns.Remove(ItemsGrid.Columns[2]);
}
</script>
<head runat="server">
<title>DataGridColumnCollection Remove Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>DataGridColumnCollection Remove Example</h3>
<table cellpadding="5">
<tr valign="top">
<td>
<b>Product List</b>
<asp:DataGrid id="ItemsGrid"
BorderColor="black"
BorderWidth="1"
CellPadding="3"
AutoGenerateColumns="false"
OnItemCommand="Grid_CartCommand"
runat="server">
<HeaderStyle BackColor="#00aaaa">
</HeaderStyle>
<Columns>
<asp:ButtonColumn
HeaderText="Add to cart"
ButtonType="PushButton"
Text="Add"
CommandName="AddToCart"/>
<asp:ButtonColumn
HeaderText="Remove from cart"
ButtonType="PushButton"
Text="Remove"
CommandName="RemoveFromCart"/>
<asp:BoundColumn
HeaderText="Item Number"
DataField="IntegerValue"/>
<asp:BoundColumn
HeaderText="Item"
DataField="StringValue"/>
<asp:BoundColumn
HeaderText="Price"
DataField="CurrencyValue"
DataFormatString="{0:c}">
<ItemStyle HorizontalAlign="right">
</ItemStyle>
</asp:BoundColumn>
</Columns>
</asp:DataGrid>
</td>
<td>
<b>Shopping Cart</b>
<asp:DataGrid id="ShoppingCart"
runat="server"
BorderColor="black"
BorderWidth="1"
GridLines="Both"
ShowFooter="false"
CellPadding="3"
CellSpacing="0">
<HeaderStyle BackColor="#00aaaa">
</HeaderStyle>
</asp:DataGrid>
</td>
</tr>
</table>
<asp:Button id="Button1"
Text="Remove Item Number Column"
OnClick="Button_Click"
runat="server"/>
</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 language="VB" runat="server">
Dim Cart As DataTable
Dim CartView As DataView
Function CreateDataSource() As ICollection
Dim dt As New DataTable()
Dim dr As DataRow
dt.Columns.Add(New DataColumn("IntegerValue", GetType(Int32)))
dt.Columns.Add(New DataColumn("StringValue", GetType(String)))
dt.Columns.Add(New DataColumn("CurrencyValue", GetType(Double)))
Dim i As Integer
For i = 0 To 8
dr = dt.NewRow()
dr(0) = i
dr(1) = "Item " & i.ToString()
dr(2) = 1.23 *(i + 1)
dt.Rows.Add(dr)
Next i
Dim dv As New DataView(dt)
Return dv
End Function 'CreateDataSource
Sub Page_Load(sender As Object, e As EventArgs)
If Session("DG4_ShoppingCart") Is Nothing Then
Cart = New DataTable()
Cart.Columns.Add(New DataColumn("Item", GetType(String)))
Cart.Columns.Add(New DataColumn("Price", GetType(String)))
Session("DG4_ShoppingCart") = Cart
Else
Cart = CType(Session("DG4_ShoppingCart"), DataTable)
End If
CartView = New DataView(Cart)
ShoppingCart.DataSource = CartView
ShoppingCart.DataBind()
If Not IsPostBack Then
' Load this data only once.
ItemsGrid.DataSource = CreateDataSource()
ItemsGrid.DataBind()
End If
End Sub 'Page_Load
Sub Grid_CartCommand(sender As Object, e As DataGridCommandEventArgs)
Dim dr As DataRow = Cart.NewRow()
' e.Item is the table row where the command is raised.
' For bound columns, the value is stored in the Text property of the TableCell.
Dim itemCell As TableCell = e.Item.Cells(2)
Dim priceCell As TableCell = e.Item.Cells(3)
Dim item As String = itemCell.Text
Dim price As String = priceCell.Text
If CType(e.CommandSource, Button).CommandName = "AddToCart" Then
dr(0) = item
dr(1) = price
Cart.Rows.Add(dr)
Else
'Remove from Cart.
CartView.RowFilter = "Item='" & item & "'"
If CartView.Count > 0 Then
CartView.Delete(0)
End If
CartView.RowFilter = ""
End If
ShoppingCart.DataBind()
End Sub 'Grid_CartCommand
Sub Button_Click(sender As Object, e As EventArgs)
ItemsGrid.Columns.Remove(ItemsGrid.Columns(2))
End Sub 'Button_Click
</script>
<head runat="server">
<title>DataGridColumnCollection Remove Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>DataGridColumnCollection Remove Example</h3>
<table cellpadding="5">
<tr valign="top">
<td>
<b>Product List</b>
<asp:DataGrid id="ItemsGrid"
BorderColor="black"
BorderWidth="1"
CellPadding="3"
AutoGenerateColumns="false"
OnItemCommand="Grid_CartCommand"
runat="server">
<HeaderStyle BackColor="#00aaaa">
</HeaderStyle>
<Columns>
<asp:ButtonColumn
HeaderText="Add to cart"
ButtonType="PushButton"
Text="Add"
CommandName="AddToCart"/>
<asp:ButtonColumn
HeaderText="Remove from cart"
ButtonType="PushButton"
Text="Remove"
CommandName="RemoveFromCart"/>
<asp:BoundColumn
HeaderText="Item Number"
DataField="IntegerValue"/>
<asp:BoundColumn
HeaderText="Item"
DataField="StringValue"/>
<asp:BoundColumn
HeaderText="Price"
DataField="CurrencyValue"
DataFormatString="{0:c}">
<ItemStyle HorizontalAlign="right">
</ItemStyle>
</asp:BoundColumn>
</Columns>
</asp:DataGrid>
</td>
<td>
<b>Shopping Cart</b>
<asp:DataGrid id="ShoppingCart"
runat="server"
BorderColor="black"
BorderWidth="1"
GridLines="Both"
ShowFooter="false"
CellPadding="3"
CellSpacing="0">
<HeaderStyle BackColor="#00aaaa">
</HeaderStyle>
</asp:DataGrid>
</td>
</tr>
</table>
<asp:Button id="Button1"
Text="Remove Item Number Column"
OnClick="Button_Click"
runat="server"/>
</form>
</body>
</html>
Комментарии
Используйте этот метод для удаления указанного DataGridColumnобъекта столбца, производного DataGridColumnCollection от коллекции.
Элемент DataGrid управления не сохраняет содержимое своей Columns коллекции в состоянии представления. Чтобы динамически добавлять или удалять столбец, необходимо программно добавлять или удалять столбец при каждом обновлении страницы.
Page_Init
Укажите функцию, которая добавляет или удаляет столбец, прежде чем DataGrid элемент управления сможет перезагрузить свое состояние и перестроить себя. В противном случае изменения Columns коллекции не отражаются в элементе DataGrid управления при его отображении.
Примечание
Хотя можно программно добавлять столбцы в коллекцию элемента управления или удалять столбцы из Columns нее, проще перечислить столбцы статически, а затем использовать Visible свойство для отображения или скрытия DataGrid каждого столбца.