|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Remplacer les boutons Edit, Update, Cancel par des boutons graphiques [ Archives ASP & ASP.NET / ASP.net ] (martok)
Informations & options pour cette discussion
mercredi 30 novembre 2005 à 18:30:53 |
Remplacer les boutons Edit, Update, Cancel par des boutons graphiques

martok
|
Bonjour tout le monde,
C'est un peu long, mais j'ai essayé d'être le plus clair possible ...
Je cherche à remplacer un boutons Edit, Update, Cancel par des boutons graphiques qui auraient le même comportement.
BasicInstinct (d'ailleurs merci, tu m'as bien aiguillé) m'a conseillé d'utiliser des TemplateColumn, ce que j'ai fait. Ca marche très bien pour le delete, qui est un "bouton normal", mais pour EditCommandColumn, qui a un comportement plus complexe, j'y arrive pas.
Mon idée est de remplacer les boutons par des ImageButton. Voici mes templates : le premier c'est pour le bouton qui me pose problème, le second d'est pour le delete qui marche.
J'ai créé un écouteur pour l'évènement _ItemCommand. Donc quand on clique sur n'importe quel bouton: Edit, Delete etc ... cet évènement est levé et intercepté par dgDataGridAff_ItemCommand.
Voici le code :
private void dgDataGridAff_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e){
if (e.CommandName.Equals("imgbtnSuppr")){
//this.lblMessageUser.Text = "C'est le bon";
this.deleteRow(source, e);
}
if (e.CommandName.Equals("imgbtnEdit")){
//this.lblMessageUser.Text = "C'est le bon";
this.editRow(source, e);
}
}
Quand je clique sur Edit, on passe dans le deuxième IF et j'appelle la méthode editRow qui suit. En résumé, l'idée est de parcourir la collection de contrôles de ma cellule pour trouver le BoutonImage "Edit". Une fois que je l'ai, je le rends invisible.
Je créé ensuite 2 boutons images, que je vais ajouter à la collection de contrôles de ma cellule : les boutons Update et Cancel. Je les rends visible et tout et tout, je les ajoute à la collection. La ligne nbCtl = "" + e.Item.Cells[0].Controls.Count; me dit bien que j'ai 5 contrôles dans la collection (3 boutons images et 2 autres controles (des LiteralControl)). Donc à priori c'est bon ...
dgDataGridAff.EditItemIndex = e.Item.ItemIndex; Affiche les zones de saisies
bindGrid(); Recharge le DataSet pour mettre à jour le datagrid.
Le problème, c'est que quand l'écran est mis à jour, les zones de saisies sont bien visibles (normal), mais mon imgbtnEdit qui devrait être invisible apparaît. De plus, les 2 ImagesBoutons créés précédemment n'apparaissent pas.
Je reclique sur le bouton Edit (là on est en mode édition). Ca réexécute tout. Quand on arrive sur la première ligne de la méthode editRow : string nbCtl = "" + e.Item.Cells[0].Controls.Count; Je m'apperçoit qu'il n'y a que 3 contrôles dans la collection. Quelqu'un a-il une idée ?
private void editRow(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e){
//AVEC IMAGES DEBUT
string nbCtl = "" + e.Item.Cells[0].Controls.Count;
//On rend invisible le bouton imgbtnEdit
for (int i = 0 ; i < e.Item.Cells[0].Controls.Count ; i++){
string strIdBled = "" + e.Item.Cells[0].Controls[i].ID;
if (strIdBled.Equals("imgbtnEdit")){
e.Item.Cells[0].Controls[i].Visible = false;
}
}
//Bouton Update
ImageButton imgbtnUpdate = new ImageButton();
imgbtnUpdate.ID = "Update";
imgbtnUpdate.CommandName = "Update";
imgbtnUpdate.ImageUrl = @"C:\Inetpub\wwwroot\GestionnaireMetaDonnees\img\edit3.gif";
imgbtnUpdate.Visible = true;
e.Item.Cells[0].Controls.Add(imgbtnUpdate);
Session.Add("imgbtnUpdate",imgbtnUpdate);
//Bouton Cancel
ImageButton imgbtnCancel = new ImageButton();
imgbtnCancel.ID = "Cancel";
imgbtnUpdate.CommandName = "Cancel";
imgbtnCancel.ImageUrl = @"C:\Inetpub\wwwroot\GestionnaireMetaDonnees\img\retour.jpg";
imgbtnCancel.Visible = true;
e.Item.Cells[0].Controls.Add(imgbtnCancel);
Session.Add("imgbtnCancel",imgbtnCancel);
//Nb de controles : vérif
nbCtl = "" + e.Item.Cells[0].Controls.Count;
//AVEC IMAGES FIN
dgDataGridAff.EditItemIndex = e.Item.ItemIndex;
bindGrid();
}
Pour info voici la méthode bindGrid :
private void bindGrid(){
if (this.cxConnection.State != ConnectionState.Open){
this.cxConnection.Open();
}
int nblgaj = daDataAdapter.Fill(dsDataSet);
dgDataGridAff.DataBind();
if (this.cxConnection.State != ConnectionState.Closed){
this.cxConnection.Close();
}}
|
|
|
Cette discussion est classé dans : boutons, item, controls, cells, imgbtnupdate
Répondre à ce message
Sujets en rapport avec ce message
2 Boutons, 1 Colonne [ par elpens ]
Bonjour,J'ai a nouveau une petite embrouille.J'aimerai avoir dans 1 colonne de mon datagrid 2 boutons différents, en fonction de la valeur de la proch
Datagrid OnItemCommand HELP ! [ par lamagnifik ]
Bonjour tout le monde,je suis à bout avec mon datagrid et j'ai vraiment besoin de votre aide !Je souhaite mettre à jour les données contenues dans mon
treeview CrapStuff Probl images [ par rabbiwan ]
SalutCa va?Voila j'ai trouvé un treeview qui s'appel CrapStuff, vous pouvez le trouvé sur le site :http://crapstuff.craponne.org/Mais le problème c'es
[ASPX][C#] treeview blocage affichage bouton [ par rabbiwan ]
Bonjour,j'ai un petit problème : J'ai un Treeview qui fonctionne à merveille, sauf qu'il me bloque mes boutons; je m'explique. Mes boutons qui sont en
Datagrid item command [ par Luspha ]
Voila je developpe une application en vb.net sur mircosoft visual studio. Et j'aimerais savoir comment nous pouvons faire pour pouvoir gérer l'eveneme
téléchargement de web controls [ par infolie ]
bonjour,je débute en asp.net, et je voudrais bien utilliser les tabstrip seulement voila je ne sais pas ou est ce que je pourrais télécharger le .dll
Probleme d'update [ par hudon77 ]
J'ai un bouton edit dans un datagrid. Quand je met de nouvelle valeur dans mes champs en mode edition et que je clique sur update il fait mon updatem
Confirmation d'une supression [ par hudon77 ]
J'ai un bouton supprimer que je créer dans mon page_load et il fonctionnait tres bien avant que je mettre un if not ispostback mais si j'enleve le
Erreur Temp [ par softghost ]
bonjourj'ai des probleme avec cette erreur : Erreur d'exécution Microsoft VBScript erreur '800a000d' Type incompatible: 'Temp' /essai/addcaddie.asp,
[ASP.Net] Insérer une valeur nulle dans un dataset [ par kallahan03 ]
Bonjour à tousj'ai un datagrid complet (insert, update, delete) dans lequel je liste avec un dataset des produits qui ont chacun un prix normal et un
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|