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

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [.NET C#, DataTable] Modification d'une row et répercution graphique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[.NET C#, DataTable] Modification d'une row et répercution graphique

n°1263837
TigrouMeow
Vive le Rhum et les Gibsons ;)
Posté le 11-12-2005 à 03:44:51  profilanswer
 

Hello :)
 
J'ai un problème que je n'arrive pas vraiment à résoudre !
 
En fait j'ai 3 CheckedList, chacune bindée à une colonne d'une même DataTable. Dans cette table j'ai une 4ème colonne qui indique un état, en fait true ou false, pour savoir si la "ligne" est checkée ou non. Cette colonne n'est bindé à rien du tout.
 
Parfois, je dois mettre à jour cette dernière colonne. Pour cela :
view[num].Row[table.Columns.IndexOf("checked" )] = 1 ou 0;
 
Cette update ne doit rien changer dans mes CheckedLists car les informations qui s'y trouvent ne sont pas modifiés... et ce qui est étonnant, c'est que graphiquement quelquechose se passe, comme si les CheckedLists se mettaient à jour à nouveau !
 
Comment éviter cet effet dérangeant ? Avez-vous des idées ?
 
Merci :)

mood
Publicité
Posté le 11-12-2005 à 03:44:51  profilanswer
 

n°1264662
_Mose_
Lonesome coder
Posté le 12-12-2005 à 16:19:34  profilanswer
 

TigrouMeow a écrit :

Parfois, je dois mettre à jour cette dernière colonne. Pour cela :
view[num].Row[table.Columns.IndexOf("checked" )] = 1 ou 0;

Tu parles bien en C# ?
L'effet dérangeant c'est quoi, concrètement ? Paske là c un peu très flou :)
T'as pas un peu de code à nous montrer ?


---------------
Tout est normal, suffit de comprendre pourquoi.
n°1265135
TigrouMeow
Vive le Rhum et les Gibsons ;)
Posté le 13-12-2005 à 00:16:39  profilanswer
 

Bon en fait maintenant j'ai trouvé une solution pour modifier que la colonne qui m'interresse, comme ceci :
view[num].Row[table.Columns.IndexOf("checked" )] = 1;
 
Ca change pas grand chose, j'ai toujours ce problème visuel ;) Je parle bien en C#... J'ai vraiment du mal à l'exprimer, et le code il y en a beaucoup, mais en gros le problème est cerné. J'ai un tableau (DataView en fait) de 3 colonnes, d'un autre côté j'ai 2 CheckedList, chacune bindé à une colonne du tableau. La 3ème colonne de mon tableau indique juste un état, checké ou non checké... Et en fait, manuellement, je vérifie à certain moment quel item des CheckedList doivent être checké, et je les check ou non...  
 
Le problème ne se situe pas à cet endroit là ! En fait, quand je clique pour coché un item sur mes CheckedList, il y a un appel à une de mes fonctions afin de renseigner ma table, et mettre à jour la fameuse colonne d'état du check... et quand je met à jour cette colonne dans la table, blam, les CheckedList partent en live, un effet graphique bizarre survient.
 
En fait, ce qui se passe, c'est que la checkedList, qui est bien remplie, remonte au tout début, et défile défile vers le bas jusqu'à arriver à l'élément qu'on a sélectionné. C'est très rapide, donc ça fait un effet bizarre et plutôt dérangeant. Surtout qu'en plus la position de l'item sélectionné (et coché au passage), change... bon j'ai pris des screenshots ça sera un peu plus évident à voir :
 
http://www.meow.fr/download/1.gif
http://www.meow.fr/download/2.gif
 
Voilà, je pense qu'il faudrait désactiver la mise à jour des checkedList qui sont associés à ce moment là, ou simplement qu'elles ne se mettent pas à jour si cette colonne est changée...  
 
Merci :)

n°1269805
_Mose_
Lonesome coder
Posté le 19-12-2005 à 11:29:26  profilanswer
 

C'est du WinForm ?
T'as essayé SuspendLayout et ResumeLayout ?
Tu colles myCheckList.SuspendLayout() avant de la modifier, et myCheckList.ResumeLayout(false) après.
Ca peut éviter les effets bizarres après une simple modification.
Sinon, tu pourrais juste montrer le code que tu utilises pour modifier ta CheckList ? Y'a ptet un autre moyen qui ferait moins de vagues...


---------------
Tout est normal, suffit de comprendre pourquoi.
n°1269933
TigrouMeow
Vive le Rhum et les Gibsons ;)
Posté le 19-12-2005 à 14:31:08  profilanswer
 

Bouh  
 
ça marche pas avec Suspend et Resume :(
 
En fait niveau code y'a pas grand chose, juste ça à un endroit :

Code :
  1. if (state == true)     
  2.   view[num].Row[table.Columns.IndexOf("checked" )] = 1;
  3. else
  4.   view[num].Row[table.Columns.IndexOf("checked" )] = 0;


Là, je modifie une ligne dans ma view. Le truc c'est que les ListBox sont rattachés à cette view, du coup elles sont toutes "rafraichies", alors qu'au niveau de l'affichage il n'y a rien qui change :(
 
Je viens d'essayer avec BeginUpdate et EndUpdate sur les ListBox, et l'effet "pourri" s'est atténué, j'ai plus l'impression de flash. Par contre l'élement sur lequel j'agis se retrouve en bas de la ListBox. Tu vois ce que je veux dire ? Comme sur les screenshots que j'ai pris :)
 
http://www.meow.fr/download/1.gif
http://www.meow.fr/download/2.gif


Message édité par TigrouMeow le 19-12-2005 à 14:45:09
n°1269980
_Mose_
Lonesome coder
Posté le 19-12-2005 à 15:22:15  profilanswer
 

Ouais je comprend bien.
Jamais eu ce pb, mais j'utilise le DataBind avec beaucoup de modération...
 
* Une idée : utiliser une ListView au lieu d'un ListBox ? (ça marche ptet mieux. J'y crois pas, mais ça devrait pas être trop long à essayer)
 
* Une solution : ne pas utiliser de DataBind :)  tout faire à la main. Mais ça peut être galère...
 
* Une suggestion : tu dois avoir moyen aussi d'éviter ça en jouant sur les messages windows, en interceptant celui qui fait les déplacements après modif. Mais je peux pas t'en dire plus, je sais pas lequel, ni comment il fonctionne.
 
* Une remarque : ça ressemblerait pas un peu au défilement qui se produisent quand tu charges une grosse solution dans VS.Net, dans la fenêtre "Solution explorer" ? Si même MS ne sais pas faire un truc propre, je suis pas sûr qu'il faille lutter.
 
GL


---------------
Tout est normal, suffit de comprendre pourquoi.

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

  [.NET C#, DataTable] Modification d'une row et répercution graphique

 

Sujets relatifs
[C++] bibliothèque graphique pour monitoringModification de nom de champs incrémentés
Modification sur les recordsets[Asp.Net] [Stage] Partage de fichiers
Java/swing : équivalent de ce composant graphique[Java] Aide sur projet avec interface graphique ( Pas des fenêtres)
QUESTION Accéder au Net depuis un intranet depuis VPN ????[VB.NET] checkbox dans un treeview
[VB.NET] Cherche programmeurs pour m'aider... 
Plus de sujets relatifs à : [.NET C#, DataTable] Modification d'une row et répercution graphique


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