Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

Comment : créer des liens d'action de table dans Dynamic Data

.NET Framework 4

Dynamic Data ASP.NET vous permet de créer des liens hypertexte dynamiques basés sur les actions de table activées par Dynamic Data. Lorsqu'un utilisateur clique sur un lien, une page s'affiche et permet à l'utilisateur d'effectuer l'action spécifiée par le lien, telle que répertorier des lignes de données de détail ou modifier un élément de données.

Cette rubrique vous indique comment créer des liens hypertexte dynamiques de Dynamic Data à l'aide du contrôle DynamicHyperLink dans les scénarios suivants :

  • Liens d'action de ligne de table pour les contrôles liés aux données. Liens d'action spécifiques aux lignes de données dans un contrôle lié aux données, tel que « Edit » ou « Details ». Dynamic Data déduit la table et la clé primaire à partir de la ligne.

  • Liens d'action de table de métadonnées pour les contrôles liés aux données. Liens d'action MetaTable spécifiques aux tables dans un contrôle lié aux données, tel que « List » ou « Insert ».

  • Liens d'action indépendants. Liens d'action qui ne sont pas spécifiques à un contrôle lié aux données. Vous devez définir la table à laquelle accéder et l'action à exécuter pour ces liens.

Pour créer des liens d'action de ligne de la table du contrôle lié aux données

  1. Dans Visual Studio 2010 ou Visual Web Developer 2010 Express, créez ou ouvrez un site Web Dynamic Data.

  2. Créez ou ouvrez une page Web ASP.NET.

  3. Ajoutez un contrôle DynamicDataManager à la page comme indiqué dans l'exemple suivant :

    <body>
      <form ID="Form1" runat="server">
        <asp:DynamicDataManager ID="DynamicDataManager1"
          runat="server"/>
      </form>
    </body>
    

    Le contrôle DynamicDataManager doit être inclus sur une page pour prendre en charge les contrôles Dynamic Data. Le balisage du contrôle DynamicDataManager doit précéder celui des autres contrôles qui utilisent Dynamic Data.

  4. Ajoutez un contrôle de source de données à la page et configurez-le pour accéder à la table de données dans laquelle créer les liens d'action.

    L'exemple suivant affiche le balisage pour un contrôle LinqDataSource configuré pour accéder à la table Products de la base de données AdventureWorksLT.

    <asp:LinqDataSource ID="LinqDataSource1"  runat="server"  
      ContextTypeName="AdventureWorksLTDataContext"
      TableName="Products"/>
    
  5. Ajoutez un contrôle lié aux données qui prend en charge des modèles.

    L'exemple suivant affiche le balisage pour un contrôle GridView configuré pour afficher des données du contrôle LinqDataSource.

    <asp:GridView ID="GridView1" DataSourceID=" LinqDataSource1" runat="server">
    </asp:GridView>
    
  6. Ajoutez un contrôle DynamicHyperLink au modèle TemplateField du contrôle lié aux données.

    L'exemple suivant affiche le balisage qui crée un lien Edit pour chaque ligne dans la table associée.

    <asp:GridView ID="GridView1" DataSourceID="LinqDataSource1" 
        runat="server">
      
      <Columns>
        <asp:TemplateField>
          <ItemTemplate>
            <asp:DynamicHyperLink runat="server" 
              ID="EditHyperLink" 
              Action="Edit" 
              Text="Edit"/>
          </ItemTemplate>
        </asp:TemplateField>
      </Columns>
      
    </asp:GridView>
    

    Lorsque l'utilisateur clique sur le lien Modifier, Dynamic Data affiche une page qui utilise le modèle de page par défaut Edit.aspx pour restituer l'interface utilisateur afin de modifier la ligne correspondante.

  7. Enregistrez le contrôle lié aux données avec le contrôle DynamicDataManager, comme indiqué dans l'exemple suivant :

    <asp:DynamicDataManager ID="DynamicDataManager1"
      runat="server">
      <DataControls>
        <asp:DataControlReference ControlID="GridView1"/>
      <DataControls>
    </asp:DynamicDataManager>
    

    Le contrôle DynamicDataManager indique à Dynamic Data de gérer les contrôles liés aux données enregistrées comme des contrôles dynamiques.

  8. Enregistrez et fermez la page.

Pour créer des liens d'action de ligne de la table de métadonnées du contrôle lié aux données

  1. Dans Visual Studio 2010 ou Visual Web Developer 2010 Express, créez ou ouvrez un site Web Dynamic Data.

  2. Créez ou ouvrez une page Web ASP.NET. Assurez-vous que la page a un fichier de classe code-behind connexe.

  3. Ajoutez un contrôle DynamicDataManager à la page comme indiqué dans l'exemple suivant :

    <body>
      <form ID="Form1" runat="server">
        <asp:DynamicDataManager ID="DynamicDataManager1"
          runat="server"/>
      </form>
    </body>
    

    Le contrôle DynamicDataManager doit être inclus sur une page pour prendre en charge les contrôles Dynamic Data. Le balisage du contrôle DynamicDataManager doit précéder celui des autres contrôles qui utilisent Dynamic Data.

  4. Ajoutez un contrôle de source de données à la page et configurez-le pour accéder à la collection qui contient des tables de base de données à lier.

    L'exemple suivant affiche le balisage pour un contrôle LinqDataSource configuré pour accéder aux tables contenues dans la base de données AdventureWorksLT.

    <asp:LinqDataSource ID="LinqDataSource1" runat="server" 
      ContextTypeName="AdventureWorksLTDataContext">
    </asp:LinqDataSource>
    
  5. Ajoutez un contrôle lié aux données qui prend en charge des modèles.

    L'exemple suivant affiche le balisage pour un contrôle GridView configuré pour afficher des données du contrôle LinqDataSource nommé LinqDataSource1.

    <asp:GridView ID="GridView1" DataSourceID="LinqDataSource1" runat="server">
    </asp:GridView>
    
  6. Ajoutez un contrôle DynamicHyperLink au modèle TemplateField du contrôle lié aux données.

    L'exemple suivant affiche le balisage qui crée des liens pour chaque table dans la collection.

    <asp:GridView ID="GridView1" DataSourceID="LinqDataSource1" runat="server"/> 
      <Columns>
        <asp:TemplateField HeaderText="Table Name" >
          <ItemTemplate>
            <asp:DynamicHyperLink ID="DynamicHyperLink1" 
                runat="server"
                TableName='<%# Eval("Name") %>'>
              <%# Eval("DisplayName") %> 
            </asp:DynamicHyperLink>
          </ItemTemplate>
        </asp:TemplateField>
      </Columns> 
    </asp:GridView>
    
  7. Enregistrez le contrôle lié aux données avec le contrôle DynamicDataManager, comme indiqué dans l'exemple suivant :

    <asp:DynamicDataManager ID="DynamicDataManager1"
      runat="server">
      <DataControls>
        <asp:DataControlReference ControlID="GridView1"/>
      <DataControls>
    </asp:DynamicDataManager>
    

    Le contrôle DynamicDataManager indique à Dynamic Data de gérer les contrôles liés aux données enregistrées comme des contrôles dynamiques.

  8. Enregistrez et fermez la page.

  9. Ouvrez le fichier de classe code-behind.

  10. Dans la méthode Page_Load, liez le contrôle lié aux données à la collection de tables IList disponible dans Dynamic Data.

    L'exemple suivant indique comment lier le contrôle GridView1 à la collection de tables IList.

    protected void Page_Load(object sender, EventArgs e)
    {
        If (!IsPostBack)
        {
          // Get the list of visible tables.
          System.Collections.IList tables =
              ASP.global_asax.model.VisibleTables;
          // Throw an exception if there are no visible tables.
          if (tables.Count == 0){ 
            throw new InvalidOperationException();
          }
          // Bind the data-bound control to 
          // the list of tables.
          GridView1.DataSource = tables;
          GridView1.DataBind();
        }
    }
    

    Protected Sub Page_Load(ByVal sender As Object, _
            ByVal e As EventArgs)
        If Not IsPostBack Then
          ' Get the list of visible tables.
          Dim tables As System.Collections.IList = _
            ASP.global_asax.L2Smodel.VisibleTables
          ' Throw an exception if there are no visible tables.
          If tables.Count = 0 Then
            Throw New InvalidOperationException()
          End If
          ' Bind the data-bound control to 
          ' the list of tables.
          GridView1.DataSource = tables
          GridView1.DataBind()
        End If
    End Sub
    
  11. Enregistrez et fermez le fichier code-behind.

Pour créer des liens d'action indépendants

  1. Dans Visual Studio 2010 ou Visual Web Developer 2010 Express, créez ou ouvrez un site Web Dynamic Data.

  2. Créez ou ouvrez une page Web ASP.NET.

  3. Ajoutez un contrôle de source de données à la page et configurez-le pour accéder aux tables de données que vous souhaitez utiliser.

    L'exemple suivant affiche le balisage pour un contrôle LinqDataSource qui accède aux tables contenues dans la base de données AdventureWorksLT.

    <asp:LinqDataSource ID="LinqDataSource1"  runat="server"  
      ContextTypeName="AdventureWorksLTDataContext">
    </asp:LinqDataSource>
    
  4. Ajoutez un contrôle DynamicHyperLink à la page et configurez-le comme un lien indépendant.

    Un lien indépendant est un lien d'action qui ne fait pas partie d'un contrôle lié aux données. Vous devez définir la table à laquelle accéder et l'action à exécuter pour ces liens.

    <asp:DynamicHyperLink ID="DynamicHyperLink1">
        Insert new item
    </asp:DynamicHyperLink>
    
  5. Affectez la propriété Action du contrôle DynamicHyperLink à l'action que vous souhaitez effectuer.

    L'exemple suivant montre comment affecter Insert à la propriété Action.

    <asp:DynamicHyperLink ID="DynamicHyperLink1" 
        Action="Insert">
      Insert new item
    </asp:DynamicHyperLink>
    
  6. Affectez comme valeur à la propriété TableName du contrôle DynamicHyperLink le nom de la table que vous souhaitez utiliser.

    L'exemple suivant montre comment affecter la valeur Products à la propriété TableName.

    <asp:DynamicHyperLink ID="DynamicHyperLink1" 
        Action="Insert" TableName= "Products">
      Insert new item
    </asp:DynamicHyperLink>
    

    Lorsque l'utilisateur clique sur le lien Insérer, Dynamic Data affiche une page qui utilise le modèle de page Insert.aspx pour restituer l'interface utilisateur permettant d'insérer un nouvel élément.

L'exemple suivant crée des liens hypertexte dynamiques pour ces scénarios :

  • Liens d'action de ligne de table pour les contrôles liés aux données. L'exemple crée des liens de modification pour chaque ligne de données de la table Products. Lorsque l'utilisateur clique sur un lien Modifier, Dynamic Data utilise le modèle de page Edit.aspx pour restituer l'interface utilisateur afin de modifier la ligne correspondante.

  • Liens d'action de table de métadonnées pour les contrôles liés aux données. L'exemple crée des liens qui affichent la collection des tables contenues dans l'exemple de base de données AdventureWorksLT. Lorsque l'utilisateur clique sur un lien, Dynamic Data utilise le modèle de page List.aspx pour restituer l'interface utilisateur qui affiche la table correspondante.

  • Liens d'action indépendants. L'exemple crée des liens Modifier et Insérer pour la table Products qui n'appartiennent à aucun contrôle lié aux données. L'exemple spécifie la table à laquelle accéder et l'action à exécuter. Dans le cas du lien Modifier, celui-ci spécifie également la clé primaire de la ligne à modifier.


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DynamicDataDynamicHyperlink.aspx.cs" Inherits="DocSamples_DynamicDataDynamicHyperlink" %>

<%@ Register src="~/DynamicData/Content/GridViewPager.ascx" tagname="GridViewPager" tagprefix="asp" %>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Dynamic Hyperlinks</title>
</head>
<body>
    <form id="form1" runat="server">

    <asp:DynamicDataManager  ID="DynamicDataManager1" 
        runat="server">
        <DataControls>
            <asp:DataControlReference ControlID="GridView1" />
        </DataControls>
    </asp:DynamicDataManager>

    <div>
        <h3>Dynamic Hyperlinks</h3>

         <h4>UnBound Control Action Links</h4>

        <asp:DynamicHyperLink ID="InsertHyperLink" runat="server" 
            Action="Insert"   
            TableName="ProductModels">Insert new item
        </asp:DynamicHyperLink>

        <br />

        <asp:DynamicHyperLink ID="DynamicHyperLink2" runat="server" 
            Action="Edit" 
            TableName="ProductModels"  
            ProductModelID="1">Edit item</asp:DynamicHyperLink>

        <h4>Data-Bound Control Meta-Table Action Links</h4>

        <asp:GridView ID="GridView2" runat="server" 
            AutoGenerateColumns="false"
            CellPadding="6">
            <Columns>
               <asp:TemplateField HeaderText="Table Name" 
                    SortExpression="TableName">
                    <ItemTemplate>
                        <asp:DynamicHyperLink ID="DynamicHyperLink1" 
                            runat="server"  
                            OnDataBinding="DynamicHyperLink_DataBinding"
                            TableName='<%# Eval("Name") %>'>
                                <%# Eval("DisplayName") %>
                        </asp:DynamicHyperLink>     
                    </ItemTemplate> 
                </asp:TemplateField>    
            </Columns>
        </asp:GridView>


        <h4>Data-Bound Control Table Row Action Links</h4>

        <asp:GridView ID="GridView1" runat="server" 
            AllowPaging="true" PageSize="5"
            DataSourceID="LinqDataSource1">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:DynamicHyperLink ID="EditHyperLink" 
                            runat="server"  
                            Action="Edit" Text="Edit" />       
                    </ItemTemplate> 
                </asp:TemplateField>    
            </Columns>
        </asp:GridView>



       <asp:LinqDataSource ID="LinqDataSource1" runat="server" 
            ContextTypeName="AdventureWorksLTDataContext"
            TableName="Products"/>

    </div>
    </form>
</body>
</html>


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.DynamicData;

publicpartialclass DocSamples_DynamicDataDynamicHyperlink : 
    System.Web.UI.Page
{

    protectedvoid Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            // Get the list of visible tables.
            System.Collections.IList tables =
                ASP.global_asax.model.VisibleTables;

            // Throw an exception if there are no visible tables.if (tables.Count == 0)
            {
                thrownew InvalidOperationException();
            }

            // Bind the data-bound control to // the list of tables.
            GridView2.DataSource = tables;
            GridView2.DataBind();
        }
    }

    protectedvoid DynamicHyperLink_DataBinding(object sender,
        EventArgs e)
    {
        MetaTable table = (MetaTable)GetDataItem();
        DynamicHyperLink dynamicHyperLink =
            (DynamicHyperLink)sender;
        // Set the context type name for the DynamicHyperLink 
        dynamicHyperLink.ContextTypeName =
            table.DataContextType.AssemblyQualifiedName;
    }
}


Cet exemple nécessite les éléments suivants :

Cela vous a-t-il été utile ?
(1500 caractères restants)
Contenu de la communauté Ajouter
Annotations FAQ
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,