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 變更不會反映在 控制項中。

注意

雖然您可以透過程式設計方式將資料行加入控制項的集合 DataGrid 或移除 Columns 資料行,但是以靜態方式列出資料行會比較容易,然後使用 Visible 屬性來顯示或隱藏每個資料行。

適用於

另請參閱