DataGridColumnCollection.AddAt(Int32, DataGridColumn) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Insere um DataGridColumnobjeto coluna derivado em na DataGridColumnCollection coleção no índice especificado.
public:
void AddAt(int index, System::Web::UI::WebControls::DataGridColumn ^ column);
public void AddAt(int index, System.Web.UI.WebControls.DataGridColumn column);
member this.AddAt : int * System.Web.UI.WebControls.DataGridColumn -> unit
Public Sub AddAt (index As Integer, column As DataGridColumn)
Parâmetros
- index
- Int32
A localização do índice em onde DataGridColumnCollection inserir a DataGridColumncoluna derivada em .
- column
- DataGridColumn
A DataGridColumncoluna derivada em para inserir no DataGridColumnCollection.
Exceções
column é null.
Exemplos
O exemplo de código seguinte demonstra como usar o AddAt método para adicionar dinamicamente uma coluna ao DataGrid controlo. Note que a Columns propriedade do DataGrid controlo é uma instância da DataGridColumnCollection coleção.
<%@ 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 Page_Init(Object sender, EventArgs e)
{
// Create a dynamic column to add to Columns collection.
BoundColumn NumberColumn = new BoundColumn();
NumberColumn.HeaderText="Item Number";
NumberColumn.DataField="IntegerValue";
// Add column to Columns collection.
ItemsGrid.Columns.AddAt(2, NumberColumn);
}
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();
}
</script>
<head runat="server">
<title>DataGridColumnCollection AddAt Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>DataGridColumnCollection AddAt 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"
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>
</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 Page_Init(sender As Object, e As EventArgs)
' Create a dynamic column to add to Columns collection.
Dim NumberColumn As New BoundColumn()
NumberColumn.HeaderText = "Item Number"
NumberColumn.DataField = "IntegerValue"
' Add column to Columns collection.
ItemsGrid.Columns.AddAt(2, NumberColumn)
End Sub 'Page_Init
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
</script>
<head runat="server">
<title>DataGridColumnCollection AddAt Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>DataGridColumnCollection AddAt 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"
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>
</form>
</body>
</html>
Observações
Use este método para inserir um DataGridColumnobjeto coluna derivado em na localização do índice especificada na DataGridColumnCollection coleção.
O DataGrid controlo não armazena o conteúdo da sua Columns coleção no estado de visualização. Para adicionar ou remover uma coluna dinamicamente, deve adicionar ou remover programaticamente a coluna cada vez que a página é atualizada. Forneça uma Page_Init função que adicione ou remova a coluna antes que o DataGrid controlo possa recarregar o seu estado e reconstruir-se. Caso contrário, as alterações à Columns coleção não são refletidas no DataGrid controlo quando esta é exibida.
Note
Embora possas adicionar ou remover colunas programaticamente da Columns coleção do DataGrid controlo, é mais fácil listar as colunas estaticamente e depois usar a Visible propriedade para mostrar ou esconder cada coluna.