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
|
Comment : créer des liens d'action de table dans Dynamic Data
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
Dans Visual Studio 2010 ou Visual Web Developer 2010 Express, créez ou ouvrez un site Web Dynamic Data.
Créez ou ouvrez une page Web ASP.NET.
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.
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"/>
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>
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.
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.
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
Dans Visual Studio 2010 ou Visual Web Developer 2010 Express, créez ou ouvrez un site Web Dynamic Data.
Créez ou ouvrez une page Web ASP.NET. Assurez-vous que la page a un fichier de classe code-behind connexe.
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.
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>
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>
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>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.
Enregistrez et fermez la page.
Ouvrez le fichier de classe code-behind.
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
Enregistrez et fermez le fichier code-behind.
Pour créer des liens d'action indépendants
Dans Visual Studio 2010 ou Visual Web Developer 2010 Express, créez ou ouvrez un site Web Dynamic Data.
Créez ou ouvrez une page Web ASP.NET.
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>
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>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>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 :
-
Site Web Dynamic Data. Pour plus d'informations, consultez Procédure pas à pas : création d'un nouveau site Web Dynamic Data à l'aide de la génération de modèles automatique.