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!!!!
Version imprimable
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 ? :roll:
Je t'invite à relire les règles du forum, en particulier le point 3.3 Message clair et précis ;)
le tableau affiche la liste des données de ma table "Profil".
voici tout le code
****ListeProfils.aspx*****
Code:
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:
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:
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:
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:
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...