Exporter (0) Imprimer
Développer tout
2 sur 6 ont trouvé cela utile - Évaluez ce sujet

DataGrid, classe

Contrôle de liste lié aux données qui affiche les éléments provenant de la source de données dans un tableau. Le contrôle DataGrid vous permet de sélectionner, trier et modifier ces éléments.

Espace de noms : System.Web.UI.WebControls
Assembly : System.Web (dans system.web.dll)

public class DataGrid : BaseDataList, INamingContainer
public class DataGrid extends BaseDataList implements INamingContainer
public class DataGrid extends BaseDataList implements INamingContainer

Utilisez le contrôle DataGrid pour afficher les champs d'une source de données sous forme de colonnes dans un tableau. Chaque ligne du contrôle DataGrid représente un enregistrement de la source de données. Le contrôle DataGrid prend en charge la sélection, la modification, la suppression, la pagination et le tri.

Différents types de colonnes déterminent le comportement des colonnes dans le contrôle. Le tableau suivant affiche les différents types de colonnes qui peuvent être utilisés.

Type de colonne

Description

BoundColumn

Affiche une colonne liée à un champ dans une source de données. Elle affiche chaque élément figurant dans le champ sous forme de texte. Il s'agit du type de colonne par défaut du contrôle DataGrid.

ButtonColumn

Affiche un bouton de commande pour chaque élément dans la colonne. Cela vous permet de créer une colonne de contrôles boutons personnalisés, tels que les boutons Add ou Remove.

EditCommandColumn

Affiche une colonne qui contient des commandes de modification pour chaque élément dans la colonne.

HyperLinkColumn

Affiche le contenu de chaque élément dans la colonne sous forme de lien hypertexte. Le contenu de la colonne peut être lié à un champ dans une source de données ou à du texte statique.

TemplateColumn

Affiche chaque élément dans la colonne suivant un modèle spécifié. Cela vous permet de fournir des contrôles personnalisés dans la colonne.

Par défaut, la propriété AutoGenerateColumns a la valeur true, qui crée un objet BoundColumn pour chaque champ dans la source de données. Chaque champ est ensuite rendu sous forme de colonne dans le contrôle DataGrid dans l'ordre dans lequel chaque champ s'affiche dans la source de données.

Vous pouvez également contrôler manuellement les colonnes qui s'affichent dans le contrôle DataGrid en affectant false à la propriété AutoGenerateColumns, puis en répertoriant les colonnes que vous souhaitez inclure entre les balises <Columns> d'ouverture et de fermeture. Les colonnes spécifiées sont ajoutées à la collection Columns dans l'ordre répertorié. Cela vous permet de contrôler les colonnes du contrôle DataGrid par programme.

RemarqueRemarque

L'ordre dans lequel les colonnes sont affichées dans le contrôle DataGrid est contrôlé par l'ordre dans lequel les colonnes s'affichent dans la collection Columns. Bien que vous puissiez changer l'ordre des colonnes par programme en manipulant la collection Columns, il est plus simple d'afficher les colonnes dans l'ordre d'affichage souhaité.

Les colonnes déclarées explicitement peuvent être affichées conjointement avec des colonnes générées automatiquement. Lorsque vous utilisez les deux, les colonnes déclarées explicitement sont rendues en premier, suivies des colonnes générées automatiquement.

RemarqueRemarque

Les colonnes générées automatiquement ne sont pas ajoutées à la collection Columns.

L'apparence du contrôle DataGrid peut être personnalisée en définissant les propriétés de style pour les différentes parties du contrôle. Le tableau suivant énumère les différentes propriétés de style.

Propriété de style

Description

AlternatingItemStyle

Spécifie le style des éléments alternés dans le contrôle DataGrid.

EditItemStyle

Spécifie le style de l'élément en cours de modification dans le contrôle DataGrid.

FooterStyle

Spécifie le style de la section de pied de page dans le contrôle DataGrid.

HeaderStyle

Spécifie le style de la section d'en-tête dans le contrôle DataGrid.

ItemStyle

Spécifie le style des éléments dans le contrôle DataGrid.

PagerStyle

Spécifie le style de la section de sélection de page du contrôle DataGrid.

SelectedItemStyle

Spécifie le style de l'élément sélectionné dans le contrôle DataGrid.

Vous pouvez également afficher ou masquer différentes parties du contrôle. Le tableau suivant énumère les propriétés qui contrôlent les parties qui sont affichées ou masquées.

Propriété

Description

ShowFooter

Affiche ou masque la section de pied de page du contrôle DataGrid.

ShowHeader

Affiche ou masque la section d'en-tête du contrôle DataGrid.

Vous pouvez contrôler l'aspect du contrôle DataGrid en ajoutant des attributs par programme aux balises <td> et <tr> rendues par le contrôle sur le navigateur. Des attributs peuvent être ajoutés par programme en fournissant du code dans le gestionnaire d'événements pour OnItemCreated ou OnItemDataBound.

Pour ajouter un attribut à la balise <td>, vous devez obtenir l'objet TableCell qui représente la cellule dans le contrôle DataGrid auquel vous souhaitez ajouter l'attribut. La collection Control.Controls pour la propriété Item de l'objet DataGridItemEventArgs passée au gestionnaire d'événements peut être utilisée pour obtenir l'objet TableCell souhaité. Vous pouvez ensuite utiliser la méthode AttributeCollection.Add de la collection Attributes pour l'objet TableCell afin d' ajouter des attributs à la balise <td>.

Pour ajouter un attribut à la balise <tr>, vous devez obtenir l'objet DataGridItem qui représente la ligne dans le contrôle DataGrid auquel vous souhaitez ajouter l'attribut. La propriété Item de l'objet DataGridItemEventArgs passée au gestionnaire d'événements peut être utilisée pour obtenir l'objet DataGridItem souhaité. Vous pouvez ensuite utiliser la méthode AttributeCollection.Add de la collection Attributes pour l'objet DataGridItem afin d'ajouter des attributs à la balise <tr>.

AttentionAttention

Ce contrôle peut être utilisé pour afficher des entrées d'utilisateur susceptibles de contenir un script client malveillant. Vérifiez dans les informations envoyées par un client la présence d'un script exécutable, d'instructions SQL ou autre code avant de les afficher dans votre application. ASP.NET fournit une fonctionnalité de validation de demande d'entrée pour bloquer des scripts et du code HTML dans les entrées d'utilisateur. Des contrôles serveur de validation sont également fournis pour valider les entrées d'utilisateur. Pour plus d'informations, consultez Syntaxe des contrôles serveur de validation.

Accessibilité

Le balisage rendu par défaut pour ce contrôle peut ne pas se conformer aux normes d'accessibilité telles que les instructions de priorité 1 d'accessibilité du contenu Web (WCAG, Web Content Accessibility Guidelines). Pour plus d'informations sur la prise en charge d'accessibilité pour ce contrôle, consultez Contrôles et accessibilité ASP.NET.

L'exemple de code suivant montre comment utiliser la propriété DataGrid pour afficher des éléments dans la source de données.

<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
 
<html>
   <script language="C#" runat="server">
 
      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 (!IsPostBack) 
         {
            // Load this data only once.
            ItemsGrid.DataSource= CreateDataSource();
            ItemsGrid.DataBind();
         }
      }
 
   </script>
 
<body>
 
   <form runat=server>
 
      <h3>DataGrid Example</h3>
 
      <b>Product List</b>
 
      <asp:DataGrid id="ItemsGrid"
           BorderColor="black"
           BorderWidth="1"
           CellPadding="3"
           AutoGenerateColumns="true"
           runat="server">

         <HeaderStyle BackColor="#00aaaa">
         </HeaderStyle> 
 
      </asp:DataGrid>
 
   </form>
 
</body>
</html>

L'exemple de code suivant montre comment utiliser le contrôle DataGrid pour un panier d'achat simple.

<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
 
<html>
   <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();
 
      }
 
 
   </script>
 
<body>
 
   <form runat=server>
 
   <h3>DataGrid 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>

L'exemple de code suivant montre comment ajouter dynamiquement des attributs aux balises <td> et <tr> générées par le contrôle DataGrid.


<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
 
<html>
<script runat="server">
 
   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 < 5; 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 (!IsPostBack) 
      {
         // Load this data only once.
         ItemsGrid.DataSource = CreateDataSource();
         ItemsGrid.DataBind();
      }
 
   }
 
   void Item_Bound(Object sender, DataGridItemEventArgs e) 
   {

      ListItemType itemType = (ListItemType)e.Item.ItemType;

      if ((itemType != ListItemType.Header) &&
          (itemType != ListItemType.Footer) &&
          (itemType != ListItemType.Separator))
      {

         // Get the IntegerValue cell from the grid's column collection.
         TableCell intCell = (TableCell)e.Item.Controls[0];

         // Add attributes to the cell.
         intCell.Attributes.Add("id", "intCell" + e.Item.ItemIndex.ToString());
         intCell.Attributes.Add("OnClick", 
                                "Update_intCell" + 
                                e.Item.ItemIndex.ToString() + 
                                "()");

         // Add attributes to the row.
         e.Item.Attributes.Add("id", "row" + e.Item.ItemIndex.ToString());
         e.Item.Attributes.Add("OnDblClick", 
                                "Update_row" + 
                                e.Item.ItemIndex.ToString() + 
                                "()");
         
      }
 
   }
 
</script>

<script language="vbscript">

   sub Update_intCell0 
      Alert "You Selected Cell 0."
   end sub

   sub Update_intCell1 
      Alert "You Selected Cell 1."
   end sub

   sub Update_intCell2 
      Alert "You Selected Cell 2."
   end sub

   sub Update_intCell3 
      Alert "You Selected Cell 3."
   end sub

   sub Update_intCell4 
      Alert "You Selected Cell 4."
   end sub

   sub UpDate_row0 
      Alert "You selected the row 0."
   end sub

   sub UpDate_row1 
      Alert "You selected the row 1."
   end sub

   sub UpDate_row2 
      Alert "You selected the row 2."
   end sub

   sub UpDate_row3 
      Alert "You selected the row 3."
   end sub

   sub UpDate_row4 
      Alert "You selected the row 4."
   end sub   

</script>
 
<body>
 
   <form runat=server>

      <h3>
            Adding Attributes to the &lt;td&gt; and &lt;tr&gt; <br>
            Tags of a DataGrid Control
      </h3>
 
      <asp:DataGrid id="ItemsGrid" runat="server"
           BorderColor="black"
           BorderWidth="1"
           CellPadding="3"
           ShowFooter="true"
           OnItemDataBound="Item_Bound"
           AutoGenerateColumns="false">

         <HeaderStyle BackColor="#00aaaa">
         </HeaderStyle>

         <FooterStyle BackColor="#00aaaa">
         </FooterStyle>

         <Columns>

            <asp:BoundColumn HeaderText="Number" 
                 DataField="IntegerValue">

               <ItemStyle BackColor="yellow">
               </ItemStyle>
 
            </asp:BoundColumn>

            <asp:BoundColumn
                 HeaderText="Item" 
                 DataField="StringValue"/>

            <asp:BoundColumn 
                 HeaderText="Price" 
                 DataField="CurrencyValue" 
                 DataFormatString="{0:c}">

               <ItemStyle HorizontalAlign="right">
               </ItemStyle>
   
            </asp:BoundColumn>

         </Columns>
   
      </asp:DataGrid>

      <br><br>

      Click on one of the cells in the <b>Number</b> column to select the cell.

      <br><br>

      Double click on a row to select a row.   
 
   </form>
 
</body>
</html>



<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
 
<html>
   <script runat="server">
 
      ICollection CreateDataSource() 
      {
      
         // Create sample data for the DataGrid control.
         DataTable dt = new DataTable();
         DataRow dr;
 
         // Define the columns of the table.
         dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
         dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
         dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));
 
         // Populate the table with sample values.
         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) 
      {
 
         // Load sample data only once when the page is first loaded.
         if (!IsPostBack) 
         {
            ItemsGrid.DataSource = CreateDataSource();
            ItemsGrid.DataBind();
         }

      }

      void Button_Click(Object sender, EventArgs e) 
      {

         // Count the number of selected items in the DataGrid control.
         int count = 0;

         // Display the selected times.
         Message.Text = "You Selected: <br>";

         // Iterate through each item (row) in the DataGrid control and 
         // determine whether it is selected.
         foreach (DataGridItem item in ItemsGrid.Items)
         {

            DetermineSelection(item, ref count);        

         }

         // If no items are selected, display the appropriate message.
         if (count == 0)
         {

            Message.Text = "No items selected";

         }

      }

      void DetermineSelection(DataGridItem item, ref int count)
      {

         // Retrieve the SelectCheckBox CheckBox control from the specified 
         // item (row) in the DataGrid control.
         CheckBox selection = (CheckBox)item.FindControl("SelectCheckBox");

         // If the item is selected, display the appropriate message and 
         // increment the count of selected items.
         if (selection != null)
         {

           if (selection.Checked)
           {
              Message.Text += "- " + item.Cells[1].Text + "<br>";
              count++;
           }

         }    

      }

   </script>
 
<body>
 
   <form runat=server>
 
      <h3>DataGrid Example</h3>
 
      <b>Product List</b>
 
      <asp:DataGrid id="ItemsGrid"
           BorderColor="black"
           BorderWidth="1"
           CellPadding="3"
           AutoGenerateColumns="False"
           runat="server">

         <HeaderStyle BackColor="#00aaaa">
         </HeaderStyle>

         <Columns>

            <asp:BoundColumn DataField="IntegerValue" 
                 HeaderText="Item"/>

            <asp:BoundColumn DataField="StringValue" 
                 HeaderText="Description"/>

            <asp:BoundColumn DataField="CurrencyValue" 
                 HeaderText="Price"
                 DataFormatString="{0:c}">

               <ItemStyle HorizontalAlign="Right">
               </ItemStyle>

            </asp:BoundColumn>

            <asp:TemplateColumn HeaderText="Select Item">

               <ItemTemplate>

                  <asp:CheckBox id="SelectCheckBox"
                       Text="Add to Cart"
                       Checked="False"
                       runat="server"/>

               </ItemTemplate>

            </asp:TemplateColumn>
 
         </Columns> 
 
      </asp:DataGrid>

      <br><br>

      <asp:Button id="SubmitButton"
           Text="Submit"
           OnClick = "Button_Click"
           runat="server"/>

      <br><br>

      <asp:Label id="Message"
           runat="server"/>
 
   </form>
 
</body>
</html>


Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0, 1.1, 1.0
Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft. Tous droits réservés.