begin process at 2012 05 27 17:12:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive ASP & ASP.NET

 > 

Archives ASP & ASP.NET

 > 

ASP.net

 > 

colonne de datagrid et tri ...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

colonne de datagrid et tri ...

mercredi 5 octobre 2005 à 10:26:39 | colonne de datagrid et tri ...

Thanos_the_yopper

Bonjour,

j'ai un petit souci avec un datagrid :
j'ajoute dynamiquement des colonnes dans ma datagrid de cette facon :

BoundColumn dgc = new BoundColumn();
dgc.DataField = astr_NomChamps;
dgc.SortExpression = astr_Tri;
dgc.ReadOnly = true;
dgc.HeaderText = astr_EnteteColonne;
this.dg.Columns.Add(dgc);

je rajoute une fonction de tri sur la datagrid de cette facon :

this.dg.SortCommand += new System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.dgStatsPri_SortCommand);

Le problème, c'est que quand je clique sur une colonne, le programme ne passe pas dans ma fonction de tri, alors que si je rajoute les colonnes directement dans la page aspx, "en dur", là, ça marche.

Quelqu'un aurait une idée d'où peut venir le problème ?
mercredi 5 octobre 2005 à 11:04:01 | Re : colonne de datagrid et tri ...

jesusonline

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Le problème est simple.

Quand tu rajoutes ta colonne, tu le fais aprés le page_load, une fois que tu auras cliqué sur le tri, la page va se faire un postback, hop ca passe dans l'init, puis ca recréer l'arborescence des controles,  il voit que la page vient d'un postback, il regarde les controles qu'il a et il ne voit pas le controle de tri (normal vu qu'il est pas encore ajouté) puis tu ajoute ta colonne ...

pour que ceci fonctionne, il faut donc rajouter ta colonne avec l'abonnement à l'event au plus tard dans le page_init. Ceci se comprend trés bien si on connait comment fonctionne une page aspx de facon correcte :) (ce qui est loin d'etre simple :d)


Cyril - MCP ASP.net - MVS
mercredi 5 octobre 2005 à 11:35:10 | Re : colonne de datagrid et tri ...

Thanos_the_yopper

Effectivement, je vois le principe. Là où ça va coincer, c'est que ma datagrid est dans un control utilisateur et que j'ajoute les colonnes dans le code behind de la page qui contient ce control utilisateur. Du coup, à moins d'une astuce que je ne connais pas, je ne peux pas ajouter les colonnes avant le Page_Init du control utilisateur. Je viend de vérifier, on passe d'abord par le page_init du control, puis dans le page_init de la page aspx (pour les page_load, c'est le contraire par contre).

Du coup, je suis bien bloqué là ...
Merci quand même pour ta réponse :)
mercredi 5 octobre 2005 à 11:52:39 | Re : colonne de datagrid et tri ...

jesusonline

Membre Club Administrateur CodeS-SourceS
Effectivement tout ceci est emmerdant :p

La solution que je te propose c'est de passer ce que t'as besoin via une propriété de ton userControl ...


public class tonUC
inherits usercontrol

public property dgc as boundcolumn

end property

sub page_init
if not dgc is nothing then
this.datagrid1.columns.add(dgc)
end sub

end class

maintenant le problème c'est de passer la colonne au UserControl à partir de la page avant son init ... :p en .net2 la page a l'event preinit qui sert justement à ca :d

en .net1 il va te falloir surcharger une méthode qui arrive avant le init ... :) la toute premiere qui est appellé c'est processrequest mais il vaut mieux surcharger la derniere avant le page_init et ca doit etre createchildcontrols (pas sur) le mieux et que tu surcharges toutes les méthodes et rajoutent un point d'arret sur chacune :)

Je sais pas si j'ai été clair, donc hésite pas à demander d'avantages d'infos :)


Cyril - MCP ASP.net
mercredi 5 octobre 2005 à 13:32:03 | Re : colonne de datagrid et tri ...

Thanos_the_yopper

y'a quelque part où trouver la liste des méthodes appelées ?

humm ... en fait, j'ai pensé à un truc, mais c'est peut-être un peu goret : les colonnes que je rajoute, je les garde soit en session, soit dans le viewstate (je sais pas ce qui est le plus gourment en ressource d'ailleurs) et dans le page_init de mon user controle, si on est en postback je rajoute les colonnes dans ma datagrid via ce que j'ai mis en viewstate/session. Maintenant, ça fait peut-être plus bidouille qu'autre chose et surtout, je sais pas quel impact ça peut avoir sur le temps d'affichage de la page et sur les ressources utilisés.

Je vais regarder les fonctions dont tu me parles pour voir celles qui sont appelé avant le page_init :)
mercredi 5 octobre 2005 à 13:33:25 | Re : colonne de datagrid et tri ...

Thanos_the_yopper

"y'a quelque part où trouver la liste des méthodes appelées ?" <= je voulais bien sur parler des méthodes appelés avant le page_init :p
mercredi 5 octobre 2005 à 13:49:35 | Re : colonne de datagrid et tri ...

jesusonline

Membre Club Administrateur CodeS-SourceS
pour les méthodes : euh ... oui Reflector :D c'est comme ca que j'ai compris comment ca fonctionnait :p

autre solution c'est de surcharger toutes les méthodes, puis de mettre un point d'arret sur chaque surcharge tu verras rapidement ce qu'il se passe.

Pour ta solution goret oui je confirme c'est tres gore :p au pire utilises les sessions plutot que viewstate :p

au hasard ca doit se faire comme ca :

public overrides sub createchildControls(param)
mybase.createchildControls(param)

dim bdc = new boundcolumn();

me.usercontrol1.maprop = bdc
end sub

et c'est tout :)


Cyril - MVS - MCP ASP
mercredi 5 octobre 2005 à 14:57:06 | Re : colonne de datagrid et tri ...

Thanos_the_yopper

bon, ben je vois à peu près comment faire du coup :)
merci bien pour toutes ces réponses ^__^
(je vais accepter la première réponse parce que c'est elle qui explique le pourquoi du problème ^^)


Cette discussion est classée dans : tri, colonne, datagrid, dgc, astr


Répondre à ce message

Sujets en rapport avec ce message

Tri d'un datagrid [ par SuperBouly ] Lorsque l'on clique sur une en-tête de colonne d'un datagrid pour déclencher le tri, est-il possible de récupérer le numéro de colonne à ce moment.( p Tri d'un datagrid [ par Pepin21 ] Hello,J'aurais voulu savoir s'il était possible de trier par ordre alphabétique ou croissant une colonne d'un datagrid en cliquant sur l'entête de la Datagrid : Numeroter les lignes [ par Templar_net ] Encore un souci avec un data grid.Je remplis mon datagrid grâce à ma BDD avec une requête (classant des compagnies suivant une note) qui se termine pa HyperLinkColumn et DataNavigateUrlFormatString [ par Thanos_the_yopper ] Bonjour, J'ai une appli ASP.NET avec une datagrid. Je rajoute une colonne dans la datagrid de la facon suivante : HyperLinkColumn hlc = new HyperLin DataGrid dans une colonne de DataGrid [ par Myke ] Dans ma page ASP.Net j'ai  un datagrid principal et un datagrid secondaire le datagrid secondaire se trouve dans une colonne template du principal. Le DataGrid et DataKey [ par drahcir ] Salut à tous,j'ai un datatable avec une clé primaire qui est le datasource de mon datagrid. Je voudrais que la colonne contenant la clé soit invisible tri datagrid avec imagebutton [ par fcampagne ] Salut a tous Je voudrais permettre le tri d'un datagrid en cliquant sur un bouton dans le header des colonnes J'ai bien trouvé ce code http://www.c2i Datagrid [ par RegVB ] Bonjour à tous,Je tourne en rond sur un problème : j'ai un datagrid dans lequel j'ajoute une colonne type Checkbox afin que l'utilisateur sélectionne TRI sur TemplateColumn d'un datagrid [ par maximemonny ] Bonjour à tous,Voici le problème : je voudrais faire un datagrid à plusieurs colonnes avec des tris ascendants et descendants (à l'aide d'ImageButton) pb de datagrid [ par chris81 ] j'ai crée mon datagrid mais j'aimerai rajouter une colonne pour y ajouter une quantité c'est a dire que cette colonne devrait ressembler a un textbox,


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales