[VB.NET et C#.Net] Problème de tableau /click bouton (postback?)

Problème de tableau /click bouton (postback?) [VB.NET et C#.Net] - C#/.NET managed - Programmation

Marsh Posté le 11-07-2006 à 16:24:32    

Bonjour à tous.
 
J'ai un problème tout con qui a make my day !!!!!!
 
J'ai une page .aspx avec un control .ascx.
dans l'ascx je fais un tableau, du style

Code :
  1. <asp:table runat="server" Width="100%" ID="DetailCde" HorizontalAlign=center >
  2.    <asp:TableRow>
  3.         <asp:TableHeaderCell Width="10%">Article</asp:TableHeaderCell>
  4.         <asp:TableHeaderCell Width="30%">Désignation Article</asp:TableHeaderCell>
  5.         <asp:TableHeaderCell Width="10%">Qté</asp:TableHeaderCell>
  6.         <asp:TableHeaderCell Width="10%">P.U.</asp:TableHeaderCell>
  7.         <asp:TableHeaderCell Width="10%">Rem %</asp:TableHeaderCell>
  8.         <asp:TableHeaderCell Width="10%">P.U. net</asp:TableHeaderCell>
  9.         <asp:TableHeaderCell Width="10%">Montant</asp:TableHeaderCell>
  10.         <asp:TableHeaderCell Width="10%">Retour</asp:TableHeaderCell>
  11.    </asp:TableRow> 
  12.   </asp:table>


 
Je remplis ce tableau (par une requete base de donnée) dans Page_Load en faisant attention à ne remplir le tableau ke si non Postback.
Dans la dernière colonne je met une checkbox.
 
J'ai ensuite un bouton qui, lorsque je click dessus, doit supprimer les lignes Non cochées.
Le problème c'est que lorsque je click sur le bouton mon tableau se vide et du coup je peux rien faire.
 
Merci beaucoup parce que là ça devient très embettant.

Reply

Marsh Posté le 11-07-2006 à 16:24:32   

Reply

Marsh Posté le 12-07-2006 à 11:48:10    

Bon bah j'ai utilisé les variables de session... Je trouve ça très moche mais bon. quand ça veut rien entendre.

Reply

Marsh Posté le 12-07-2006 à 12:07:42    

Il y a une structure de donnée côté serveur, non ? (DataTable, ...)
 
Tu t'arranges pour que chaque ligne de ton tableau soit lié à un identifiant (le numéro de ligne par exemple)
Tu t'arranges pour que le click sur ton bouton 'Delete' puisse savoir l'identifiant de la ligne à supprimer (facile avec un bouton par ligne)
Quand l'utilisateur clicke sur la ligne, avant même que ton tableau ne soit recréé, tu sais que la ligne 'n' est à supprimer.
Tu la supprimes dans ta structure de donnée, et tu régénère ton tableau.
 
Pourquoi agir sur le visuel quand tu travailles sur des données ? :)

Reply

Marsh Posté le 13-07-2006 à 10:01:20    

Je vois bien ce que tu veux dire.
 
J'ai une structure de donnée à la base que je récupère au chargement de la page. Mon problème c'est que lorsque je click sur le bouton, et bien elle se vide avant de rentrer dans l'évènement du click. Du coup je suis incapable de regénérer mon tableau.

Reply

Marsh Posté le 13-07-2006 à 13:11:27    

De deux choses l'une :
1 - Soit tu recharges ta table depuis ta base au Page_Load
2 - Soit tu stockes ta table dans le ViewState entre tes changement de pages : ViewState["matable"] = matable
 
Sol 1 : (données centralisées)
- avantage : consommation de mémoire moins élevée que la solution 2, moins de transferts  de données entre le client et le serveur
- inconvénient : les données sont transférées entre le serveur et le serveur de donnée. Si c'est la même machine, bonnes perf'.
- inconvénient : on bosse directement sur les données, annulation compliquée à gérer
- remarque : j'ai beaucoup pratiqué ça en entreprise, ce n'est donc pas une bidouille, mais une pratique courante.
 
Sol 2 : (cache dans le ViewState)
- avantage : pas d'aller/retour entre le serveur web et le serveur de données
- avantage : possibilité d'annuler toutes les modif à la fin (en ne les applicant pas)
- inconvénient : plus de données transférées entre le client et le serveur web
- inconvénient 2 : en multi-utilisateur, le fait de mettre les données en cache dans le ViewState, ça peut poser des problèmes si un autre utilisateur fait des modif en même temps. C'est un peu plus lourd à gérer que la solution 1.
 
Note : avec ta session, tu dois également gérer les cas où l'enregistrement que tu modifies est potentiellement modifié par qqn d'autre. Web oblige...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed