Bonjour, mon problème est qu'à l'exécution mon tableau n'apparait!!!
Je sais pas si ca vaut la peine que je mette le code ou bien vous pouvez me faire des suggestions!!!!
Bonjour, mon problème est qu'à l'exécution mon tableau n'apparait!!!
Je sais pas si ca vaut la peine que je mette le code ou bien vous pouvez me faire des suggestions!!!!
Penses-tu réellement que nous avons la faculté de deviner ton code ? Comment veux-tu recevoir de l'aide en ne postant aucune information ?
Je t'invite à relire les règles du forum, en particulier le point 3.3 Message clair et précis![]()
Less Is More
Pensez à utiliser les boutons
,
et les balises code
Desole pour l'absence d'accents, clavier US oblige
Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.
le tableau affiche la liste des données de ma table "Profil".
voici tout le code
****ListeProfils.aspx*****
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 <%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="ListeProfils.aspx.cs" Inherits="ASI.Formulaire.ListeClients" %> <asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <asp:Repeater ID="RepeaterProfil" runat="server"> <HeaderTemplate> <table> <tr> <td> N°Profil</td> <td> Nom</td> <td> Prénom</td> <td> Adresse </td> <td> CIN </td> <td> Passeport </td> <td> Email </td> <td> Mot de Passe </td> <td> Pseudonyme </td> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td> <%# DataBinder.Eval(Container.DataItem, "numprofil") %> </td> <td> <%# DataBinder.Eval(Container.DataItem, "nomprofil") %> </td> <td> <%# DataBinder.Eval(Container.DataItem, "prenomprofil") %> </td> <td> <%# DataBinder.Eval(Container.DataItem, "adrprofil") %> </td> <td> <%# DataBinder.Eval(Container.DataItem, "cin") %> </td> <td> <%# DataBinder.Eval(Container.DataItem, "passeport") %> </td> <td> <%# DataBinder.Eval(Container.DataItem, "email") %> </td> <td> <%# DataBinder.Eval(Container.DataItem, "pwd") %> </td> <td> <%# DataBinder.Eval(Container.DataItem, "pseudo") %> </td> <td><a href='/Formulaire/AddProfil.aspx?numcli=<%# DataBinder.Eval(Container.DataItem, "numcli") %>&action=modcli'>modifier</a></td> <td><a href='/Formulaire/AddProfil.aspx?numcli=<%# DataBinder.Eval(Container.DataItem, "numcli") %>&action=supcli'>supprimer</a></td> </tr> </ItemTemplate> <ItemTemplate> <tr> <td><a href='/Formulaire/AddProfil.aspx'> Ajouter Profil</a></td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </asp:Content>
****ListeProfils.asp.cs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using ASI.Formulaire; using ASI.Classe; namespace ASI.Formulaire { public partial class ListeClients : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // affectation de la source de donnees this.RepeaterProfil.DataSource = Utilities.GetAllProfils(); // liaison dynamique this.RepeaterProfil.DataBind(); } } }
et Voici la méthode "GetAllProfils" contenue dans "Utilities" qui contient les méthodes qui permettent d'attaquer la base de données.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 public static ArrayList GetAllProfils() { ArrayList listeprofils = new ArrayList(); SqlConnection conn = null; try { // creation d'un objet qui permet d'etablir la connexion vers la base. conn = new SqlConnection(); // affectation de la chaine de connexion a utiliser conn.ConnectionString = sconn; // ouverture de la connexion conn.Open(); // creation de l'objet qui permet d'excuter la requete select SqlCommand cmd = new SqlCommand(ReqSelectAllProfil, conn); //executionde la requete SqlDataReader reader = cmd.ExecuteReader(); // tant qu'on lit while (reader.Read()) { // récupration de la valeur de la colonne ID int numprofil = (int)reader["numcli"]; string nomprofil = (string)reader["nomcli"]; string prenomprofil = (string)reader["prenomcli"]; string adrprofil = (string)reader["adrcli"]; string cin = (string)reader["cin"]; string passeport = (string)reader["passeport"]; string email = (string)reader["email"]; string pwd = (string)reader["pwd"]; string pseudo = (string)reader["pseudo"]; profil p = new profil(numprofil, nomprofil, prenomprofil, adrprofil, cin, passeport, email, pwd, pseudo); listeprofils.Add(p); } } catch (Exception) { return null; // pb de recuperation } finally { // fermeture de la connection if (conn != null) conn.Close(); } return listeprofils; }
Je ne connais pas trop les repeater, mais est ce normal que tu ais deux ItemTemplate ?
Ta liste contient bien des enregistrements ?
Au cas où, tu peux joindre une capture d'écran histoire de voir ce qui est réellement affiché ?
BONJOUR
Il manque une clause du binding pour le repeater:
- preciser le datamembre(string) qui est le nom du class "custom" ou d'un datatable vu que c'est un binding complexe(list<>,arraylist,datatable etc...)
Ton class "custom" etant un class profil le code serait...
bon code...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 protected void Page_Load(object sender, EventArgs e) { // affectation de la source de donnees this.RepeaterProfil.DataSource = Utilities.GetAllProfils(); this.RepeaterProfil.DataMember = "profil"; // liaison dynamique this.RepeaterProfil.DataBind(); }
Pour ma culture, cela vient du fait que la list n'est pas typé ?
Ou faut il le faire systématiquement?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 public static ArrayList GetAllProfils()
re
Meme si elle typee....
Exigible systematiquement pour un binding "complexe"...
Car à l'interne,le BindingManager appelle TypeDescriptor avec ce nom de class pour "retrouver" ses props...
S'il n'est pas specifie il retourne Object.toString avec namespace qualifie..
....
bon code...
Partager