AutoPostBack de dropdownlist

cabbry Messages postés 100 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 27 janvier 2006 - 12 juil. 2005 à 16:21
cabbry Messages postés 100 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 27 janvier 2006 - 13 juil. 2005 à 15:05
Bonjour,



j'ai un datagrid qui possède une dropdownlist lorsqu'il est en édition...



Cette dropdownlist à la propriété autopostback=true...



Quand je change la valeur de la dropdownlist, l' autopostback se déclenche,



et je voudrais alors enlever la dernière colonne de mon datagrid



Mon_Datagrid.Columns.RemoveAt(Mon_Datagrid.Columns.Count-1);



Mais je sais pas où mettre cette commande pour qu'elle fonctionne...



Merci



Cab

11 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
12 juil. 2005 à 17:40
Encore ce datagrid .... :p

Ca fait un postback ben tu peux faire un truc (crade je l'accorde :D) dans le page_load (car ce que je te propose est trés crade)

if page.ispostback then
if request.form("__EVENTTARGET").indexof("idDDL") > 0 then
datagrid.gotohell ;)
end if
end if

un peu plus propre, je sais pas si tu peux passer un commandName ainsi qu'un commandArgument. si oui, tu pourras alors recuperer dans
(PS : request.form("__EVENTARGUMENT") te retourne le commandargument dans ce cas ;))

sub dg_commandname()

if e.item.commandName = "DGGotoHell" then
dg.goToHell()
end if

end sub

enfin si tu veux une méthode propre :

tu dérive un dropdownlist, tu lui rajoutes commandname, etc... blablabla : la routine ;)


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
cs_aurelie Messages postés 87 Date d'inscription lundi 22 avril 2002 Statut Membre Dernière intervention 12 octobre 2006
13 juil. 2005 à 10:48
ta dropdownlist dans ta datagrid, doit se présenter comme ça :















ajoute la méthode OnSelectedIndexChanged=DpType_SelectedIndexChanged dans la dropdownlist



ensuite dans ton code crées la fonction

public void DpType_SelectedIndexChanged(object sender, System.EventArgs e)

{

DropDownList dptype = (DropDownList) sender;

DataGrid dg = (DataGrid) dptype.Parent.Parent.Parent;

// et ensuite tu mets ce que tu veux faire

if(dg != null){

dg.Columns.RemoveAt(dg.Columns.Count-1);

}

}



je ne peux pas tester, mais j'espère t'avoir aidé.

Aurélie
0
cabbry Messages postés 100 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 27 janvier 2006 1
13 juil. 2005 à 11:20
Hello,



je commence par Cyril:



je sais encore et encore ce malheureux Datagrid...(qui me gave, soit dit en passant)

Ta technique crade franchement je l'aime bien, un bon truc de barbare comme j'aime...

On ne peut pas, par contre, mettre un commandName et un commandArgument

à un dropdownlist à part la dériver,comme tu le dis si bien...

Mais j'avoue que j'ai d'autres chats à fouetter...

et me sort pas un truc du genre CCCF, le comité contre les chats fouetter :)



Pour aurelie,

il manque un .Parent dans



DataGrid dg = (DataGrid) dptype.Parent.Parent.Parent;



ma_dropdownlist -> TableCell -> DataGridIem -> DataGridTable -> Datagrid

donc il faut 4 .Parent (truc de fou ça aussi)







Mais le problème, c'est que malgre toutes ces techniques, je n'arrive pas à enlever

ma dernière colonne...

Mon fameux:



dg.Columns.RemoveAt(dg.Columns.Count-1);



ne fais rien du tout :(



Ce qu'il faut savoir, c'est que lorsque je met ma grille en édition c'est a ce moment que j'enleve la derniere...

et c'est lorsque que je change ma valeur de dropdownlist (contenue dans
la datagrid en édition) que la colonne réapparait (alors que je ne veux
pas, vous m'avez suivi ?)



La question est: est ce que cette colonne existe lorsque je fais tout ce que vous m'avez conseillé ?



Cab
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
13 juil. 2005 à 12:27
avant de t'attaquer a un dropdownlist essaye une méthode plus classique avec un linkbuttonet commandname et regarde deja si t'arrive a supprimer la derniere colonne.

Par contre j'ai pas compris ce que tu voulais faire ?

t'as un datagrid avec 10 colonnes, tu passes en mode edition sur la ligne 5 ce qui t'affiche un drop sur cette ligne, puis quand tu changes la valeur du drop, tu veux que ca te supprimes la colonne 8 donc il resterais que 9 colonnes sur tout ton datagrid ?


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cabbry Messages postés 100 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 27 janvier 2006 1
13 juil. 2005 à 12:34
J'ai 10 colonnes, lorsque je me met en édition, j'affiche effectivement une

dropdownlist et je pulvérise la dernière colonne donc il m'en reste 9...

Lorsque je change la valeur de la dropdownlist, il me remet la dernière

colonne ce *** !

Donc je veux la repulvériser !



Cab



PS: je viens d'aller sur ton blog, et je viens de m'apercevoir

que je programme comme un ***** !

C'est moche, mais j'ai appris plein de truc !
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
13 juil. 2005 à 13:02
Hum ... donc en normal tu as 10 colonnes en edition tu en a que 9 ?

je vois pas à quoi sert ton drop dans ce cas la :-/

Sinon avant de faire ca avec un drop essayes deja de cacher la derniere colonne avec un linkbutton par exemple ou autre chose, car je suis pas sur qu'en faisant comme ca tu puisses supprimer la derniere colonne ...

Ta quoi dans ta colonne à cacher ?


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
cabbry Messages postés 100 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 27 janvier 2006 1
13 juil. 2005 à 14:11
Oui en normal j'ai 10 colonnes et en édition plus que 9 ...





La dropdownlist sert juste a sélectionner des produits (elle ne sert



pas a supprimer des colonnes <-- tu as du mal comprendre)



mais je dois tout de meme utiliser le postback car cette dropdownlist est liée a une autre dropdownlist.



Quand je change la 1ere ddl, ca change le contenu de la deuxieme...







La dernière colonne est la colonne qui a les bouttons de suppression.



Quand je me met en édition, je la fait disparaitre, pour que l'utilisateur



ne puisse pas supprimer de ligne. Je trouve ça plus esthétique que de



désactiver les bouttons.



Mais la avec ce probleme de postback, je sais pas comment je vais



m'en tirer...



Pour en revenir au:



dg.Columns.RemoveAt(dg.Columns.Count-1);



Il marche bien. C'est la commande que j'utilise pour enlever la dernière colonne au



moment ou je passe en édition...



J'ai tout dit ce coup-ci, c'est pas évident a expliquer....



Cab
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
13 juil. 2005 à 14:20
donc le drop n'a rien à avoir avec la suppression de la derniere colonne ? en relisant ta premiere question j'avais compris que t'avais un datagrid avec un drop, et quand tu changeais tu voulais supprimer une colonne :p

donc la t'as un datagrid, avec 10 colonnes, la derniere possede des boutons de suppression, puis quand tu cliques sur le lien d'edition ta ligne passe en mode edit et tu supprimes la derniere colonne sur toutes les lignes de ton datagrid ? en plus en mode edition tu as 2 dropdownlist qui sont liés ?

donc maintenant, ou est le problème ? t'as réussis à me perdre mais completement :p


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
cabbry Messages postés 100 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 27 janvier 2006 1
13 juil. 2005 à 14:39
Tout ce qui tu viens de dire est ok, c'est exactement ça...



Le probleme est que lorsque je change la valeur de la 1ere dropdownlist
(qui a un autopostback a true), cela change les valeurs de ma 2eme ddl
(donc ça c'est cool)

mais ça fait aussi réapparaitre la colonne de bouttons de suppression (ça c'est PAS cool)...



Le voila le probleme...



Cab
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
13 juil. 2005 à 14:46
OK : j'ai compris :D (on va y arriver ;))

maintenant que j'ai compris le problème il nous reste plus qu'a comprendre une solution ;)

je peux voir le code pour quand tu supprimes ta ligne, puis quand tu réagis au drop ?


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
cabbry Messages postés 100 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 27 janvier 2006 1
13 juil. 2005 à 15:05
V'la un peu de code pour Mr Cyril:



Ca c'est ma 1ere ddl dans ma page aspx:



<EditItemTemplate>

</EditItemTemplate><EditItemTemplate>





</EditItemTemplate>



Dans ma page cs:



protected void ddlDivision_SelectedIndexChanged2(object sender, EventArgs e)

{

DropDownList ddl = (DropDownList) sender;

int IDtype = Convert.ToInt32(ddl.SelectedItem.Value);

DataGridItem dgi = (DataGridItem) ddl.Parent.Parent;

DropDownList ddlUpparam = (DropDownList) dgi.FindControl("ddlUpprod");



//changement de valeur de ma 2eme ddl

chargerDdl_param(ddlUpparam, ddl, IDtype );



//j'essaie de faier sauter la derniere colonne mais ca marche pas

DataGrid dg = (DataGrid) ddl.Parent.Parent.Parent.Parent;

if(dg != null){


dg.Columns.RemoveAt(dg.Columns.Count-1);


}

}




Ma colonne de boutton suppression:















Et dans le code associé, il y a rien de spécial, j'appelle la base et j'effectue ma requete...un grand classique...

D'ailleurs ma requete marche...si je ne me met pas en édition, je supprime sans probleme...





Je te mets le code au moment de l'édition



public void ItemsGrid_EditHandler(object sender, DataGridCommandEventArgs e)

{

ItemsGrid.Columns.RemoveAt(ItemsGrid.Columns.Count-1);

ItemsGrid.EditItemIndex = e.Item.ItemIndex;

chargerGrille();

}




ce code arrive bien a enlever ma derniere colonne...





Ca suffit ou autre chose ?



Cab
0
Rejoignez-nous