Compartir a través de


DataGridColumnCollection.AddAt(Int32, DataGridColumn) Método

Definición

Inserta un objeto de columna derivado de DataGridColumn en la colección DataGridColumnCollection en el í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

Ubicación de índice en la colección DataGridColumnCollection en la que se va a insertar el objeto derivado de DataGridColumn.

column
DataGridColumn

Objeto de columna derivado de DataGridColumn que se va a insertar en DataGridColumnCollection.

Excepciones

column es null.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar el AddAt método para agregar dinámicamente una columna al DataGrid control . Tenga en cuenta que la Columns propiedad del DataGrid control es una instancia de la DataGridColumnCollection colección.

<%@ 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>

Comentarios

Utilice este método para insertar un DataGridColumnobjeto de columna derivado de en la ubicación de índice especificada de la DataGridColumnCollection colección.

El DataGrid control no almacena el contenido de su Columns colección en estado de vista. Para agregar o quitar una columna dinámicamente, debe agregar o quitar la columna mediante programación cada vez que se actualice la página. Proporcione una Page_Init función que agregue o quite la columna antes de que el DataGrid control pueda volver a cargar su estado y volver a generarse. De lo contrario, los cambios realizados en la Columns colección no se reflejan en el DataGrid control cuando se muestra.

Nota

Aunque puede agregar o quitar columnas de la Columns DataGrid colección del control mediante programación, es más fácil enumerar las columnas estáticamente y, a continuación, usar la Visible propiedad para mostrar u ocultar cada columna.

Se aplica a

Consulte también