다음을 통해 공유


DataGridColumnCollection.AddAt(Int32, DataGridColumn) 메서드

정의

컬렉션에서 DataGridColumn파생된 열 개체를 DataGridColumnCollection 지정된 인덱스에 삽입합니다.

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)

매개 변수

index
Int32

파생 열을 삽입할 인덱스 DataGridColumn위치 DataGridColumnCollection 입니다.

column
DataGridColumn

DataGridColumn삽입할 파생 열입니다 DataGridColumnCollection.

예외

columnnull입니다.

예제

다음 코드 예제에서는 동적으로 컨트롤에 AddAt 열을 추가 하는 메서드를 사용 하는 방법을 보여 줍니다 DataGrid . 컨트롤의 ColumnsDataGrid 속성은 컬렉션의 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 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>

설명

컬렉션의 지정된 인덱스 DataGridColumn위치에 파생 열 개체를 삽입하려면 이 메서드를 DataGridColumnCollection 사용합니다.

컨트롤은 DataGrid 해당 컬렉션의 Columns 내용을 뷰 상태에 저장하지 않습니다. 열을 동적으로 추가하거나 제거하려면 페이지를 새로 고칠 때마다 프로그래밍 방식으로 열을 추가하거나 제거해야 합니다. 컨트롤이 Page_Init 해당 상태를 다시 로드하고 자체적으로 다시 작성하기 전에 DataGrid 열을 추가하거나 제거하는 함수를 제공합니다. 그렇지 않으면 컬렉션이 표시될 때 컬렉션의 변경 내용 Columns 이 컨트롤에 DataGrid 반영되지 않습니다.

메모

컨트롤 컬렉션 DataGrid 에서 Columns 열을 프로그래밍 방식으로 추가하거나 열을 제거할 수 있지만 열을 정적으로 나열한 다음 속성을 사용하여 Visible 각 열을 표시하거나 숨기는 것이 더 쉽습니다.

적용 대상

추가 정보