Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1401 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  asp:Repeater : Comment mettre un "CommandArgument" ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

asp:Repeater : Comment mettre un "CommandArgument" ?

n°1232754
Arjuna
Aircraft Ident.: F-MBSD
Posté le 27-10-2005 à 17:09:11  profilanswer
 

Bonjour,
 
J'utilise un "Repeater" afin d'afficher le résultat d'une requête.
Sauf que je voudrais pouvoir cliquer sur une ligne, et à partir de là, récupérer des infos sur la ligne cliquée...
 
Et je fais ça comment ?
Je voudrais éviter de passer par un bête "<a href>" parceque j'ai besoin de faire des contrôles avant d'envoyer le tout.
J'ai donc mis un "<asp:LinkButton>", et ça marche. Sauf que je n'arrive pas à mettre d'info dans le "CommandArgument", et du coup je suis bloqué là...
 
Si je met "<%# DataBinder.Eval(Container.DataItem, "codsoc" ) %>" en CommandArgument, ça plante.
 

Code :
  1. <asp:Repeater ID="MyRepeater" Runat="server">
  2.    <HeaderTemplate>
  3.     <table>
  4.      <tr>
  5.       <th>
  6.        Code</th>
  7.       <th>
  8.        Société</th>
  9.       <th>
  10.        Droit</th>
  11.      </tr>
  12.    </HeaderTemplate>
  13.    <ItemTemplate>
  14.     <tr>
  15.      <td><%# DataBinder.Eval(Container.DataItem, "codsoc" ) %></td>
  16.      <td><asp:LinkButton Runat="server" CommandName="Soc" OnCommand="LaunchSoc"><%# DataBinder.Eval(Container.DataItem, "libut_soc" ) %></asp:LinkButton></td>
  17.      <td><%# DataBinder.Eval(Container.DataItem, "typtie" ) %></td>
  18.     </tr>
  19.    </ItemTemplate>
  20.    <FooterTemplate>
  21.     </table>
  22.    </FooterTemplate>
  23.   </asp:Repeater>

mood
Publicité
Posté le 27-10-2005 à 17:09:11  profilanswer
 

n°1233293
Arjuna
Aircraft Ident.: F-MBSD
Posté le 28-10-2005 à 11:11:04  profilanswer
 

et donc ?

n°1233454
WhyMe
HFR ? Nan, connais pas ...
Posté le 28-10-2005 à 14:07:29  profilanswer
 

Tu peux pas modifier le CommandArgument ds le ItemDataBound du Repeater ?

n°1233573
Arjuna
Aircraft Ident.: F-MBSD
Posté le 28-10-2005 à 15:16:41  profilanswer
 

Euh, faut que je vois ce que c'est :D
 
A vrai dire, je découvre pas mal ce genre de choses. J'essaie d'utiliser un maximum les outils du FrameWork (pour la première fois j'ai réussi à utiliser un WebControl :bounce:) mais je n'avais jamais utilisé ces trucs avant. Je créais mes propres objets, basés sur des éléments HtmlElements, en faisant tout à la main.
 
Là, je suis en train d'installer Oracle client. D'ici une petite heure, je vais voir ce dont tu me parles :)

n°1233578
Arjuna
Aircraft Ident.: F-MBSD
Posté le 28-10-2005 à 15:20:11  profilanswer
 

Groumpf, à priori y'a pas de Client sur aucun des 3 CD de Oracle 9iAS V9.0.1 :D
 
Relou, je vais trouver ça où ? La dernière chance, y'a aussi un Oracle V8.1.7. J'espère qu'il est compatible .NET sinon je suis comme un con.
 
Fait chier de devoir faire 25 trucs à la fois...

n°1233594
WhyMe
HFR ? Nan, connais pas ...
Posté le 28-10-2005 à 15:28:50  profilanswer
 

Quelle idée aussi de bosser avec Oracle ... :D

n°1233706
Arjuna
Aircraft Ident.: F-MBSD
Posté le 28-10-2005 à 16:59:47  profilanswer
 

OK, je vois comment ça marche.
 
Par contre,c'est quoi comme Objet un "DataItem" d'un DataSet ?
 

Code :
  1. protected void MyRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
  2.  {
  3.   if(e.Item.ItemType == ListItemType.Item)
  4.   {
  5.    DataRow dr = ((DataRow) e.Item.DataItem);
  6.    string codsoc = ((string) dr["codsoc"]);
  7.    ((LinkButton) e.Item.FindControl("linkSoc" )).CommandArgument = codsoc;
  8.   }
  9.  }


 
=> Ca plante sur le :

Code :
  1. DataRow dr = ((DataRow) e.Item.DataItem);

n°1233713
Arjuna
Aircraft Ident.: F-MBSD
Posté le 28-10-2005 à 17:02:45  profilanswer
 

WhyMe a écrit :

Quelle idée aussi de bosser avec Oracle ... :D


 
Ben j'y peux rien, ce site web tape dans la base d'un ERP, et cet ERP tourne avec Oracle :spamafote:
 
D'un autre côté, c'est pratique, j'ai pas à m'emmerder à faire un modèle des données et des procédures de réplication des données... Là je tape directement dedans comme un goret :sol:
 
Sauf que j'arrive pas à installer le client. Chais pas si c'est TSE qui fait ça, mais en local (Windows 2003 Entreprise Edition SP1) je peux lancer l'install d'Oracle 8.1.7 (qui contient le client), mais sur le serveur via bureau à distance (Windows 2003 Standard Edition SP1) je ne peux pas...
C'est balo, parceque du coup je suis obligé de continuer à bosser sur mon portable...


Message édité par Arjuna le 28-10-2005 à 17:03:12
n°1233739
Arjuna
Aircraft Ident.: F-MBSD
Posté le 28-10-2005 à 17:17:37  profilanswer
 

Bon, à force de bidouiller, j'ai fini par utiliser un DataTable au lieu d'un DataSet, et je peux récupérer un DataRowView (pkoi pas un DataRow tout court, mystère)

n°1233773
Arjuna
Aircraft Ident.: F-MBSD
Posté le 28-10-2005 à 17:50:11  profilanswer
 

ouf !
 
J'ai enfin réussi !
(j'en ai mis du temps à trouver qu'il fallait en plus prendre le type d'item "alternatingitem" )
 

Code :
  1. protected void MyRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
  2.  {
  3.   if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
  4.   {
  5.    DataRowView dr = ((DataRowView) e.Item.DataItem);
  6. //    TableRow tr = new TableRow();
  7. //    TableCell td = new TableCell();
  8. //    td.Text = ((Decimal) dr["codsoc"]).ToString();
  9. //    tr.Cells.Add(td);
  10. //    td = new TableCell();
  11. //    LinkButton link = new LinkButton();
  12. //    link.CommandArgument = ((Decimal) dr["codsoc"]).ToString() + "." + ((string) dr["typtie"]);
  13. //    link.CommandName = "linkSoc";
  14. //    link.Command += new CommandEventHandler(this.LaunchSoc);
  15. //    link.Text = ((string) dr["libut_soc"]);
  16. //    td.Controls.Add(link);
  17. //    tr.Cells.Add(td);
  18. //    td = new TableCell();
  19. //    td.Text = ((string) dr["typtie"]);
  20. //    tr.Cells.Add(td);
  21. //    e.Item.Controls.Add(tr);
  22.    ((LinkButton) e.Item.FindControl("linkSoc" )).CommandArgument = ((Decimal) dr["codsoc"]).ToString() + "." + ((string) dr["typtie"]);
  23.   }
  24.  }

Message cité 1 fois
Message édité par Arjuna le 28-10-2005 à 17:50:26
mood
Publicité
Posté le 28-10-2005 à 17:50:11  profilanswer
 

n°1570686
poussein
Posté le 06-06-2007 à 09:17:50  profilanswer
 

Petit pb pour ma part concernant ton code... Je sais que ca fait vieux, mais sait on jamais...
J'ai repris le meme principe, mais impossible d'accéder à ma commande...
 
Si j'ai bien compris, sur click de ton bouton tu declenches ta procedure LauncSoc, avec les param adequates... Personnellement, je n'y passe jamais... La seule chose que je declenche est le page_load...
 
As tu une idée ?
 
Merci d'avance
 
 

Arjuna a écrit :

ouf !
 
J'ai enfin réussi !
(j'en ai mis du temps à trouver qu'il fallait en plus prendre le type d'item "alternatingitem" )
 

Code :
  1. protected void MyRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
  2.  {
  3.   if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
  4.   {
  5.    DataRowView dr = ((DataRowView) e.Item.DataItem);
  6. //    TableRow tr = new TableRow();
  7. //    TableCell td = new TableCell();
  8. //    td.Text = ((Decimal) dr["codsoc"]).ToString();
  9. //    tr.Cells.Add(td);
  10. //    td = new TableCell();
  11. //    LinkButton link = new LinkButton();
  12. //    link.CommandArgument = ((Decimal) dr["codsoc"]).ToString() + "." + ((string) dr["typtie"]);
  13. //    link.CommandName = "linkSoc";
  14. //    link.Command += new CommandEventHandler(this.LaunchSoc);
  15. //    link.Text = ((string) dr["libut_soc"]);
  16. //    td.Controls.Add(link);
  17. //    tr.Cells.Add(td);
  18. //    td = new TableCell();
  19. //    td.Text = ((string) dr["typtie"]);
  20. //    tr.Cells.Add(td);
  21. //    e.Item.Controls.Add(tr);
  22.    ((LinkButton) e.Item.FindControl("linkSoc" )).CommandArgument = ((Decimal) dr["codsoc"]).ToString() + "." + ((string) dr["typtie"]);
  23.   }
  24.  }



n°1570704
MagicBuzz
Posté le 06-06-2007 à 09:32:54  profilanswer
 

Il faut bien utiliser l'event "OnCommand" et non "OnClick"


Message édité par MagicBuzz le 06-06-2007 à 09:34:51

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  asp:Repeater : Comment mettre un "CommandArgument" ?

 

Sujets relatifs
mettre un fichier txt dasn une page htmlComment mettre une image par dessus une autre?
Mettre le contenu d'un fichier en variableMettre le nom d'une table en paramètre dans un script Sql
Pour se mettre à JavaComment mettre en forme du texte sous la console ?
Mettre une LISTE de fichiers dans une variableDOS - mettre resultat d'une commande dans variable
mettre un fichier sur serveur 
Plus de sujets relatifs à : asp:Repeater : Comment mettre un "CommandArgument" ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR