begin process at 2012 02 08 19:14:40
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ASP.Net

 > CRÉATION D'UN GRIDVIEW DANS UN REPEATER

CRÉATION D'UN GRIDVIEW DANS UN REPEATER


 Information sur la source

Note :
Aucune note
Catégorie :ASP.Net Source .NET ( DotNet ) Classé sous :repeater, gridview, button, directcast Niveau :Débutant Date de création :21/08/2007 Date de mise à jour :21/08/2007 19:12:31 Vu :15 375

Auteur : walterskinner

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Bonjour,

L'exemple suivant à pour but de répondre (de façon simple) à deux questions qui ressortent souvent dans les forums :
1 – Comment ajouter et gérer un contrôle dans une Repeater (Dans notre exemple un GridView).
2 – Comment ajouter et gérer un bouton personnalisé dans un GridView.

Pour utiliser mon exemple, vous devez avant tout créer une base de donnée nommée viewgrid puis une table Utilisateurs.
Voici le script SQL de création de la table :
CREATE TABLE [dbo].[Utilisateurs] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[Nom] [varchar] (30) COLLATE French_CI_AS NOT NULL ,
[Prenom] [varchar] (30) COLLATE French_CI_AS NOT NULL ,
[Ville] [varchar] (30) COLLATE French_CI_AS NOT NULL
) ON [PRIMARY]
GO

Puis remplir la table avec quelques lignes de tests. Attention à bien mettre plusieurs fois la même ville pour que l'exemple soit concluant (voir la photo de l'exemple).

Voilà, bon code.

Walter

Source

  • ' ********************************************
  • ' *** A copier dans la page default.aspx :
  • ' ********************************************
  • <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
  • <!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" >
  • <head id="Head1" runat="server">
  • <title>Un GridView dans un Repeater</title>
  • </head>
  • <body>
  • <form id="form1" runat="server">
  • <div>
  • <b>Un GridView dans un Repeater</b><br />&nbsp;<br />
  • <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
  • <ItemTemplate>
  • <b>Ville : <%#Container.DataItem("Ville")%></b><br />
  • <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" >
  • <Columns>
  • <asp:BoundField DataField="Nom" HeaderText="Nom" />
  • <asp:BoundField DataField="Prenom" HeaderText="Pr&#233;nom" />
  • <asp:BoundField DataField="Ville" HeaderText="Ville" />
  • <asp:TemplateField>
  • <ItemTemplate>
  • <asp:Button ID="btEditer" runat="server" Text="Editer" CommandArgument='<%# Container.DataItem("ID")%>' OnCommand="GridView1_Editer" />
  • </ItemTemplate>
  • </asp:TemplateField>
  • </Columns>
  • </asp:GridView>
  • &nbsp;<br />
  • </ItemTemplate>
  • </asp:Repeater>
  • <asp:Label ID="lbMessage" runat="server" Text="" EnableViewState="False" ></asp:Label>
  • </div>
  • </form>
  • </body>
  • </html>
  • ' ********************************************
  • ' *** A copier dans la page default.aspx.vb :
  • ' ********************************************
  • Imports System.Data
  • Imports System.Data.SqlClient
  • Partial Class _Default
  • Inherits System.Web.UI.Page
  • ' Chaine de connexion à la base de données
  • Public chaineConnexion As String = "Data Source=localhost;Integrated Security=True;database=viewgrid"
  • Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  • ' Si la page n'est pas en PostBack
  • If Not Page.IsPostBack Then
  • ' Génération du Repeater
  • Repeater1.DataSource = dsListeVilles()
  • Repeater1.DataBind()
  • End If
  • End Sub
  • ''' <summary>
  • ''' Sub déclanchée au moment de la construction d'un élément du Repeater
  • ''' </summary>
  • Sub Repeater1_ItemDataBound(ByVal Sender As Object, ByVal e As RepeaterItemEventArgs)
  • ' Si il s'agit d'un élément Item ou AlternatingItem.
  • If (e.Item.ItemType = ListItemType.Item) Or (e.Item.ItemType = ListItemType.AlternatingItem) Then
  • ' Récupération du nom de la ville.
  • Dim myVille As String = DirectCast(e.Item.DataItem, DataRowView).Item("Ville").ToString
  • ' Stock le GridView1 dans une variable
  • Dim myGridView As GridView = CType(e.Item.FindControl("GridView1"), GridView)
  • ' Construction du GridView
  • myGridView.DataSource = dsListeUtilisateurs(myVille)
  • myGridView.DataBind()
  • End If
  • End Sub
  • ''' <summary>
  • ''' Evénement sur le bouton Editer du GridView
  • ''' </summary>
  • Protected Sub GridView1_Editer(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.CommandEventArgs)
  • ' Récupération du bouton
  • Dim myButton As Button = CType(sender, Button)
  • ' Affiche un message
  • lbMessage.Text = "ID de l'utilisateur : " & myButton.CommandArgument
  • End Sub
  • ''' <summary>
  • ''' Retourne un DataSet contenant la liste de toutes les villes
  • ''' </summary>
  • Private Function dsListeVilles() As DataSet
  • ' Création d'une instance de connexion
  • Dim myConnexion As SqlConnection = New SqlConnection(chaineConnexion)
  • ' Création d'un DataSet
  • Dim myDataset As New DataSet
  • ' Envoie de la requette
  • Dim dtr As New SqlClient.SqlDataAdapter("Select Distinct Ville from Utilisateurs Order By Ville", myConnexion)
  • ' Peuple le DataSet
  • dtr.Fill(myDataset)
  • ' Retourne le DataSet
  • Return myDataset
  • End Function
  • ''' <summary>
  • ''' Retourne un DataSet contenant les utilisateurs pour une ville
  • ''' </summary>
  • Private Function dsListeUtilisateurs(ByVal nomVille As String) As DataSet
  • ' Création d'une instance de connexion
  • Dim myConnexion As SqlConnection = New SqlConnection(chaineConnexion)
  • ' Création d'un DataSet
  • Dim myDataset As New DataSet
  • ' Envoie de la requette
  • Dim dtr As New SqlClient.SqlDataAdapter("Select * from Utilisateurs Where (Ville = '" & nomVille & "') Order By Nom", myConnexion)
  • ' Peuple le DataSet
  • dtr.Fill(myDataset)
  • ' Retourne le DataSet
  • Return myDataset
  • End Function
  • End Class
' ********************************************
' *** A copier dans la page default.aspx :
' ********************************************
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!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" >
<head id="Head1" runat="server">
    <title>Un GridView dans un Repeater</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <b>Un GridView dans un Repeater</b><br />&nbsp;<br />
        <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
            <ItemTemplate>
                <b>Ville : <%#Container.DataItem("Ville")%></b><br />
                <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" >
                    <Columns>
                        <asp:BoundField DataField="Nom" HeaderText="Nom"  />
                        <asp:BoundField DataField="Prenom" HeaderText="Pr&#233;nom" />
                        <asp:BoundField DataField="Ville" HeaderText="Ville" />
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:Button ID="btEditer" runat="server" Text="Editer" CommandArgument='<%# Container.DataItem("ID")%>' OnCommand="GridView1_Editer" />
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>
                &nbsp;<br />
            </ItemTemplate>
        </asp:Repeater>
        <asp:Label ID="lbMessage" runat="server" Text="" EnableViewState="False" ></asp:Label>
    </div>
    </form>
</body>
</html>

' ********************************************
' *** A copier dans la page default.aspx.vb :
' ********************************************
Imports System.Data
Imports System.Data.SqlClient


Partial Class _Default
    Inherits System.Web.UI.Page

    ' Chaine de connexion à la base de données
    Public chaineConnexion As String = "Data Source=localhost;Integrated Security=True;database=viewgrid"

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        ' Si la page n'est pas en PostBack
        If Not Page.IsPostBack Then

            ' Génération du Repeater
            Repeater1.DataSource = dsListeVilles()
            Repeater1.DataBind()

        End If

    End Sub

    ''' <summary>
    ''' Sub déclanchée au moment de la construction d'un élément du Repeater
    ''' </summary>
    Sub Repeater1_ItemDataBound(ByVal Sender As Object, ByVal e As RepeaterItemEventArgs)

        ' Si il s'agit d'un élément Item ou AlternatingItem.
        If (e.Item.ItemType = ListItemType.Item) Or (e.Item.ItemType = ListItemType.AlternatingItem) Then

            ' Récupération du nom de la ville.
            Dim myVille As String = DirectCast(e.Item.DataItem, DataRowView).Item("Ville").ToString

            ' Stock le GridView1 dans une variable
            Dim myGridView As GridView = CType(e.Item.FindControl("GridView1"), GridView)

            ' Construction du GridView
            myGridView.DataSource = dsListeUtilisateurs(myVille)
            myGridView.DataBind()

        End If

    End Sub

    ''' <summary>
    ''' Evénement sur le bouton Editer du GridView
    ''' </summary>
    Protected Sub GridView1_Editer(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.CommandEventArgs)

        ' Récupération du bouton
        Dim myButton As Button = CType(sender, Button)

        ' Affiche un message
        lbMessage.Text = "ID de l'utilisateur : " & myButton.CommandArgument

    End Sub

    ''' <summary>
    ''' Retourne un DataSet contenant la liste de toutes les villes
    ''' </summary>
    Private Function dsListeVilles() As DataSet

        ' Création d'une instance de connexion
        Dim myConnexion As SqlConnection = New SqlConnection(chaineConnexion)

        ' Création d'un DataSet
        Dim myDataset As New DataSet

        ' Envoie de la requette
        Dim dtr As New SqlClient.SqlDataAdapter("Select Distinct Ville from Utilisateurs Order By Ville", myConnexion)

        ' Peuple le DataSet
        dtr.Fill(myDataset)

        ' Retourne le DataSet
        Return myDataset

    End Function

    ''' <summary>
    ''' Retourne un DataSet contenant les utilisateurs pour une ville
    ''' </summary>
    Private Function dsListeUtilisateurs(ByVal nomVille As String) As DataSet

        ' Création d'une instance de connexion
        Dim myConnexion As SqlConnection = New SqlConnection(chaineConnexion)

        ' Création d'un DataSet
        Dim myDataset As New DataSet

        ' Envoie de la requette
        Dim dtr As New SqlClient.SqlDataAdapter("Select * from Utilisateurs Where (Ville = '" & nomVille & "') Order By Nom", myConnexion)

        ' Peuple le DataSet
        dtr.Fill(myDataset)

        ' Retourne le DataSet
        Return myDataset

    End Function

End Class



 Historique

21 août 2007 19:12:31 :
Corrections suite aux remarques de jesusonline.

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) GESTION TRÈS SIMPLE DES LANGUES (CULTURE) EN ASP.NET 2.0

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) GUESTBOOK AVEC GRIDVIEW par DanMor498
Source avec Zip CHECKED DROPDOWNLIST par fredzool
Source avec Zip Source avec une capture Source .NET (Dotnet) GRIDVIEW WITH TREEVIEW AND CALLBACK par fredzool
Source avec Zip APPELLER UN WEBSERVICE DEPUIS JAVASCRIPT par fredzool
Source avec Zip Source .NET (Dotnet) MONEY TEXTBOX WITH EMBEDED JAVASCRIPT par fredzool

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) GRIDVIEW WITH TREEVIEW AND CALLBACK par fredzool
Source avec Zip Source .NET (Dotnet) UTILISATION DE LA MÉTHODE SORT ET SORTDIRECTION AVEC UN GRID... par jesusonline
Source avec Zip Source .NET (Dotnet) GRIDVIEW DATE PICKER JAVASCRIPT par fredzool
Source avec Zip Source avec une capture Source .NET (Dotnet) GRIDVIEW UTILISANT LINQ ET REFLECTION par jmenfous
Source avec Zip Source avec une capture Source .NET (Dotnet) EXTENDER GRIDVIEW POUR TRAITEMENTS LOURDS DE LISTES par Yxion

Commentaires et avis

Commentaire de jesusonline le 21/08/2007 16:37:27 administrateur CS

héhé : pas mal :)

Mais 3 remarques :
- au lieu d'utiliser l'horrible hiddenField pour récuperer ta valeur, tu peux faire un directcast(e.item.DataItem, datarowview)["Ville"]
- évite de faire plein de findcontrol / cast inutile. Ce sont des opérations couteuses. Quand tu recherches ton gridview, stock le dans une variable tu économisera un findcontrol et un cast
- évite d'utiliser la fonction eval qui elle aussi est couteuse (utilise la reflection). Comme tu utilises VB tu peux faire directement <%#Container.DataItem["Ville"]%>, pas besoin de caster (un des rares avantages de VB). En C# ce serait <%# ((DataRowView)Container.DataItem)["Ville"] %> et pour info en IronPython, jscript managed et peut être vbx : <%#Container.DataItem.Ville %> (IronRuby n'est pas encore annoncé officiellement)

Commentaire de walterskinner le 21/08/2007 19:07:43

Merci pour tes conseilles, je corrige tout de suite.

Commentaire de DBugs le 23/11/2007 17:51:12

Salut j'essaye de m'inspirer de cette source pour un mini projet, mais je fais ça en C#, et j'ai une erreur que je n'arrive à résoudre.

Erreur 1 Le type ou le nom d'espace de noms 'DataRowView' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?) C:\Documents and Settings\Silver Claw\Mes documents\Visual Studio 2005\WebSites\WebSite2\Products.aspx 21

Si quelqu'un pouvait m'aider merci d'avance.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Image Button [ par elpens ] Bonjour, Je suis actuellement bloqué et je recherche un peu d'aide.Voilà:J'ai un gridView lié avec une db qui m'affiche des alertes. J'aimerais que qu button dans un repeater [ par fguigui ] Bonjour à tous,Dans une webform j'ai un Repeater à l'intérieur duquel j'ai des textbox, label et button du genre :        &lt;ctrl:RepeatBudgets ID="R Anomalie lors de l'afichage d'un gridview ou autre objet de données [ par Magjjy ] Bonjour,Je travaille avec Visual Studio 2005 et lorsque j'ajoute dans un projet (vierge ou non) un objet de type gridview, detailsview ..., à l'execut écrire en mejiscule dans gridview [ par krouks212 ] Bonjour, s'il vous je vous écrire en majiscule dans les champs de texte, que j'ai déja transformés en template, de mon GridView lors de la modificatio figer le header d'un gridview scrollé [ par equinoxe83 ] Bonjour à tous !Je cherche une solution pour disposer d'un scoll vertical dans un gridview tout en conservant le header fixe. J'ai bien trouvé sur le Accès à un userControl depuis Repeater [ par YannVB ] Bonjour,je souhaite accéder à un UserControl contenu dans l'itemTemplate d'un Repeater de ma webform, de manière à alimenter dynamiquement les proprié Somme dans un gridview [ par benamb ] BonjourVoilà je voulais savoir s'il était possible de calculer la somme des champs (quantité) qui se trouve dans mon gridview.<table id="gv_cde_client ButtonField du GridView [ par tleon ] Bonjour,J'ai un gridView, contenant un ButtonField. Comment je peux recuperer le gridView.SelectedRow.RowIndex. au click du ButtonFieldMerci. GridView en asp.net 2005 [ par gentilkhalil ] Bonjour,j ai un probleme ce que je narrive pas a faire des modifications et suppressions sur un gridview avec un dataset sur asp.net 2005/code vb.net,


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,201 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales