IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Repeater, databinder, impossible de convertir void en string


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 116
    Points : 53
    Points
    53
    Par défaut Repeater, databinder, impossible de convertir void en string
    Bonjour,

    Voila, mon probléme c'est que je veux affecter la valeur <%#DataBinder.Eval(Container.DataItem, "id_p")%> à une variable de type string, databinder est de type void, ce qui me declenche une erreur de cast, pour être plus précise voila mon code:

    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
    <asp:Repeater ID="Repeat" runat="server" >
            <ItemTemplate>
                 <table border="1">
                       <tr>
                          <td width="800">
                               <%#DataBinder.Eval(Container.DataItem, "id_p")%>
                           </td>
                           <td> 
                       <% string var=DataBinder.Eval(Container.DataItem, "id_p");
                            string reqTache = "SELECT ID_Tache from tache where id_p="+var; %>
                         </td>
                          </tr>
                          </table>
              </ItemTemplate>
    </asp:Repeater>

  2. #2
    Membre habitué
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 173
    Points : 161
    Points
    161
    Par défaut
    Je ne comprend pas vraiment ce que tu veut faire mais enfin, c'est peut ça que tu souhaite faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <%# string var=Convert.ToString(DataBinder.Eval(Container.DataItem, "id_p"));
                            string reqTache = "SELECT ID_Tache from tache where id_p="+var; %>

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 116
    Points : 53
    Points
    53
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <% string var = Convert.ToString(DataBinder.Eval(Container.DataItem, "id_p")); %>
    L'erreur:
    Le nom 'Container' n'existe pas dans le contexte actuel

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 116
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par nasimpat7 Voir le message
    Je ne comprend pas vraiment ce que tu veut faire mais enfin, c'est peut ça que tu souhaite faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <%# string var=Convert.ToString(DataBinder.Eval(Container.DataItem, "id_p"));
                            string reqTache = "SELECT ID_Tache from tache where id_p="+var; %>
    j'ai fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <% string var =%><%# Convert.ToString(DataBinder.Eval(Container.DataItem, "id_p"))%>;<%
    string reqTache = "ma requete ";
    %>
    L'erreur:
    Impossible de convertir implicitement le type 'void' en 'string'

  5. #5
    Membre habitué
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 173
    Points : 161
    Points
    161
    Par défaut
    Est-ce que tu peux nous dire précisemment ce que tu veux faire dans ton repeater? Le résultat attendu (sans rentrer dans le détails niveau code).
    On pourra peut être te proposé solution plus adapté à ton besoin.

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 116
    Points : 53
    Points
    53
    Par défaut
    OK,

    En fait, dans ma base de donnée, j'ai deux tables, projets et taches, chaque projet à 1 ou plusieurs taches, le rôle du Repeater c'est d'afficher tous les projets (juste les nom des projets), et en bas de chaque projet je veux afficher tous ces taches. Le problème c'est que veux recuperer l'ID du projet du repeater (<%#DataBinder.Eval(Container.DataItem, "id_p")%>) et le mettre dans la condition de ma requete des taches.

    Voila mon code:
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Page sans titre</title>
        <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
           
    // (...)
    
            string req = "select nomProjet,nomsoc,id_p from projet  ";
            
            
            cnx.Open();
            cmd = new SqlCommand(req, cnx);
            dr = cmd.ExecuteReader();
            Repeat.DataSource = dr;
            Repeat.DataBind();
            dr.Close();
            cnx.Close();
        }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        
        <asp:Repeater ID="Repeat" runat="server" >
            <ItemTemplate>
                   <table border="1">
                       <tr>
                           <td width="800">
                                    <b>
    Projet :<%#DataBinder.Eval(Container.DataItem, "nomsoc")%> : <%#DataBinder.Eval(Container.DataItem, "nomProjet")%> (<%#DataBinder.Eval(Container.DataItem, "id_p")%>)
    </b>
                                                        
                                  //ici je veux afficher les taches de ce projet :       
                                                   
                           <p><% string var =%><%# Convert.ToString(DataBinder.Eval(Container.DataItem, "id_p"))%>;
    <%  string reqTache = "SELECT     ID_Tache,nomTache
    FROM  taches WHERE     (ID_P ="+ var +" ) ";
                                                   
    // (...)
                                                     cnx.Open();
                                                     cmd = new SqlCommand(reqTache, cnx);
                                                     dr = cmd.ExecuteReader();
                                                      %>
                                                      <table>
                                                      <% while (dr.Read())
                                                     {%>
                                                      <tr>
                                                      <td>
                                                      <% Response.Write(dr[0]+" : "+dr[1]); %>
                                                      </td>
                                                    
                                                      </tr>
                                                      
                                                     
                                                      <%   
                                                     }
                                                       %>
                                                       </table>
                                                       <%  dr.Close();
                                                     cnx.Close();    %>
                                                  </p><br />
                                                </td>
                                            </tr>
                                           
                                        </table>
                                    </ItemTemplate>
        </asp:Repeater>
            <br />
        </div>
        </form>
    </body>
    </html>

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 116
    Points : 53
    Points
    53
    Par défaut
    Avez-vous compris mon problème??

  8. #8
    Membre habitué
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 173
    Points : 161
    Points
    161
    Par défaut
    J'ai essayé de faire un truc mais ce n'est finalisé.
    Dans mon cas j'ai fait 2 tables: article et fournisseur (provider).
    Sur le principe, c'est la même chose sauf que j'affiche les articles pour chaque fournisseur.

    Je pense que ça t'aidera.

    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
    <asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
     
                <asp:Label ID="Label1" runat="server" Text='<%# Eval("name") %>' />
                <asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Eval("id") %>' />
                    <asp:Repeater ID="Repeater2" runat="server">
                        <ItemTemplate>
     
                                <%# Eval("name")%>
                                <%# Eval("price")%>
     
                        </ItemTemplate>
                    </asp:Repeater>
            </ItemTemplate>
        </asp:Repeater>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:productConnectionString %>" 
            SelectCommand="SELECT [id], [name] FROM [provider]"></asp:SqlDataSource>
    Code-behind
    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
    protected void Page_Load(object sender, EventArgs e)
        {
     
            this.Repeater1.DataSourceID = "SqlDataSource1";    
            this.Repeater1.ItemDataBound += new RepeaterItemEventHandler(Repeater1_ItemDataBound);
     
        }
     
        void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            Label lbl = (Label)e.Item.TemplateControl.FindControl("Label1");
            HiddenField hdf = (HiddenField)e.Item.FindControl("HiddenField1");
     
            if (hdf.Value != null)
            {
                 // get the HiddenField
                string id = hdf.Value;
     
                // get the sub repeater 
                Repeater subrepeater = (e.Item.FindControl("Repeater2") as Repeater);
                if (subrepeater != null)
                {
                    //subrepeater.ItemDataBound += new RepeaterItemEventHandler(Repeater2_ItemDataBound);
                    subrepeater.DataSource = this.GetSource2ById(id);
                    subrepeater.DataBind();
                }
     
            }
        }
     
        SqlDataSource GetSource2ById(string id)
        {
     
            try
            {
     
                string strCmd = "SELECT * FROM [article] WHERE id = @ID";
     
                SqlDataSource sqlDS = new SqlDataSource(this.strConn, strCmd);
                sqlDS.SelectParameters.Add("ID", id);
     
                return sqlDS;
            }
            catch (Exception ex)
            {
                throw ex;
            }
     
        }
    @+

  9. #9
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 116
    Points : 53
    Points
    53
    Par défaut
    Bonjour,

    Merci d'avoir répondu à mon problème, je l'ai pas encore essayé, mais j'ai un autre petit problème.. Je veux concaténer une variable dans ma requete. ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     protected void Page_Load(object sender, EventArgs e)
        { 
     
            string nameString = LoginName1.Page.User.Identity.Name;
     
            string req = "select ID_Imputation,datedebut,datefin,nbHeure,compteanalytique,etat,type,nomProjet,nomsoc,p.id_p from societes s, imputations i,projets p,aspnet_usersinroles ui,aspnet_users u where p.id_p=i.id_p and "+
                " ui.userid=i.userid and "+
                " ui.userid=u.userid and "+
                " p.id_soc=s.id_soc and " +
                " u.username='" + nameString + "'";
    }
    Dans ton code, je dois écrire la requête dans le SqlDataSource:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <asp:SqlDataSource ID="sqldatasource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:ASPNETDBConnectionString1 %>"
        SelectCommand="select ID_Imputation,datedebut,datefin,nbHeure,compteanalytique,etat,type,nomProjet,nomsoc,p.id_p from societes s, imputations i,projets p,aspnet_usersinroles ui,aspnet_users u where p.id_p=i.id_p and "+
                " ui.userid=i.userid and "+
                " ui.userid=u.userid and "+
                " p.id_soc=s.id_soc and " +
                " u.username='" + ici je peux pas concatener ma var :s + "'"  > 
        </asp:SqlDataSource>
    PS. Je veux pour chaque utilisateur afficher ses projets et leurs taches.

    Merci d'avance,

  10. #10
    Membre habitué
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 173
    Points : 161
    Points
    161
    Par défaut
    tu peux creer le SqlDataSource1 dans le code-behind avec requête paramétré comme je l'ai fait dans la méthode GetSource2ById.
    Ex avec le paramètre Id.

  11. #11
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 116
    Points : 53
    Points
    53
    Par défaut
    Salut,

    mille merci et un cher aideur, probleme résolu !

    Chapeau ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Impossible de convertir implicitement le type 'string' en 'int?'
    Par Mougain's dans le forum ASP.NET
    Réponses: 4
    Dernier message: 19/11/2014, 14h29
  2. Réponses: 6
    Dernier message: 22/07/2009, 15h27
  3. Réponses: 2
    Dernier message: 19/05/2007, 20h51
  4. [jar] convertir URL en String
    Par c-top dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 22/11/2004, 11h19
  5. Réponses: 6
    Dernier message: 14/02/2004, 14h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo