Gridview

Résolu
mimosa803 Messages postés 345 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 24 avril 2010 - 21 févr. 2008 à 11:41
mimosa803 Messages postés 345 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 24 avril 2010 - 6 mars 2008 à 15:35
    Bonjour, je débute avec gridview et j'ai rencontré quelques problèmes :
J'ai pu  afficher un gridview à partir d'une table puis j'ai ajouter les fields EDIT et DELETE et ca marche aussi.
Mais, le problème lors du la modification ("EDIT"), j'ai pas trouvé une solution pour afficher les contrôles de mon formulaire. Par défaut tous les champs sont des textbox or que mon formulaire contient des combox,....
Est ce qu'il ya un moyen de modifier les champs dans le gridview ?

29 réponses

mimosa803 Messages postés 345 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 24 avril 2010
25 févr. 2008 à 12:30
D'accord j'essayerais, mais lors de la modication je ne vois pas les champs pour saisir les nouvelles entreés.
0
mimosa803 Messages postés 345 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 24 avril 2010
25 févr. 2008 à 13:38
Les champs lors de la modification n'apparaissent pas .
0
lassaad83 Messages postés 148 Date d'inscription vendredi 28 avril 2006 Statut Membre Dernière intervention 1 décembre 2009
25 févr. 2008 à 17:26
Puisque tu as supprimé ton SqlDataSource, tu dois tout gerer toi même désormais ... 

Pour commencé tu devra ajouter dans ton GridView un CommandField, après pour chaque TemplateField tu devra ajouter unItemTemplate qui contiendra les controls de présentation ainsi qu'unEditItemTemplate dans lequel tu mettra les control qui se chargerons du mode édition. J'ai deja fait un truc de ce genre, je te donne le source et a toi de le modifier en fonction de ton besoin ok ....





<
Columns



>

<asp:CommandField
ButtonType
="image"
ShowEditButton="true"

EditImageUrl="~/Modifier.jpg"

EditText
="Modifier"
CancelImageUrl
="~/Modifier_Cancel_1.jpg"
CancelText
="Annuler"
UpdateText
="Mise a jour"
UpdateImageUrl
="~/Modifier.jpg"
/>



<
asp
:
TemplateField
>

<
ItemTemplate



>

<
asp
:
Label



ID
="CContrat"



runat
="server"





Text
='
<%# DataBinder.Eval(Container.DataItem, "Nom") %>

'>

</
asp
:
Label
>

</
ItemTemplate
>

<!-- Voila le template pour le mode édition -->

<
EditItemTemplate
>

<
asp
:
TextBox



ID
="edit_Nom"



runat
="server"





MaxLength
="10"





Text
='
<%# DataBinder.Eval(Container.DataItem, "Nom") %>

'

Width
="100">

</
asp
:
TextBox
>

</
EditItemTemplate
>

</
asp
:
TemplateField
>

<
asp
:
TemplateField



>
......
.....
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton
ID="cmdSupprime"
runat="server"

BorderWidth="0"
CommandName="supprimer"
ImageUrl="~/Supprimer.jpg"
/>
</ItemTemplate>
                                                                                                   <!-- Ici j'ai le même template pour le boutton de suppression -->
<EditItemTemplate>
<asp:ImageButton
ID="cmdSupprime"
runat="server"

BorderWidth="0"
CommandName="supprimer"
ImageUrl="~/Supprimer.jpg"
/>
</EditItemTemplate>
</asp:TemplateField>
</Columns>

Ensuite tu devra aussi prendre en charge l'événement RowEditing








protected



void
GdView_RowEditing(

object
sender,

GridViewEditEventArgs
e)
{
   GdView.EditIndex = e.NewEditIndex;
   ChargerGrid(); // Tu dois reBindé ton Grid
}

Je pense qu'en te servant de ça tu arivera à tes fin, enfin j'espere ...
0
mimosa803 Messages postés 345 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 24 avril 2010
25 févr. 2008 à 17:31
Oui merci, dans ce cas je n'ai plus besoin de l'événement Rowcommand je dois manipuler Rowdeleting et RowUpdating
0

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

Posez votre question
lassaad83 Messages postés 148 Date d'inscription vendredi 28 avril 2006 Statut Membre Dernière intervention 1 décembre 2009
25 févr. 2008 à 17:44
Moi j'ai garder les RowCommand car tou simplement lorsque je suis en EditTemplate et que je click sur boutton et bien ça declenche l'événement RowCommand et en fonction de CommandName je fait ce que j'ai a faire.



protected



void
GridView1_RowCommand(

object
sender,

GridViewCommandEventArgs
e){




switch
(e.CommandName)
{


   case



"Delete"
:


   //suppression;

   break
;


   case



"nomDeTaCommande"
:


   //traitement a faire

   //break;


   default
:


   
break
;
}


}

Après si tu trouve une autre façon beaucoup plus simple je suis preuneur ...
0
mimosa803 Messages postés 345 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 24 avril 2010
25 févr. 2008 à 17:49
Donc je vais faire deux template Update et delete et je vais coder l'evénement Rowcommand ca sera mieux mais je dois éléminer le datasource.
0
lassaad83 Messages postés 148 Date d'inscription vendredi 28 avril 2006 Statut Membre Dernière intervention 1 décembre 2009
25 févr. 2008 à 18:14
En fait, dans ton Grid pour chaque colone que tu voudra pouvoir modifier tu devra mettre dans le
TemplateField un ItemTemplate (généralement c'est un Label d'affichage) et un EditTemplate (TextBox, DropDownLIst, List) pour la modification.

Concernant le boutton de suppréssion généralement il se trouve en fin de ligne dans le Grid, met le dans un TemplateField et plus précisement dans un
ItemTemplate.

Bien entendu n'oubli de donné les CommandName et CommandArgument
qu'il faut a tout tes control de validation pour pouvoir les prendre en charge dans l'événement RowCommand.

Et oui tu devra virer de ton code le SqlDataSource....

Autre chose je te conseil d'utiliser des Procédures Stockées au lieu des requetes en dur dans ton code même si elle sont paramètré :
...
string requete = "Update PROFILE Set profile_shortname=@sh_name,Set profile_name=@name where profile_id=@profile_id";

SqlCommand cm = newSqlCommand(requete, cn);
0
mimosa803 Messages postés 345 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 24 avril 2010
29 févr. 2008 à 12:45
    Bonjour, je suis entrain de coder la modification, concernant les paramètres @sh_name,....
je vais récupérer les valeurs des textbox du grid, comment je fais ?
Merci.
0
mimosa803 Messages postés 345 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 24 avril 2010
6 mars 2008 à 15:35
Salut je fait un test sur un champ de la base s'il est égale à 'N' ou il est NULL le checkbox n'est pas sélectionné, voila le code mais ca ne marche pas avec un champ NULL :

<asp:CheckBox
ID="CheckBox4"
runat="server"
Checked='<%# (DataBinder.Eval(Container.DataItem, "ADelete").ToString()=="N") || (DataBinder.Eval(Container.DataItem, "ADelete").ToString()=="NULL")? false : true %>
'
/>
0
Rejoignez-nous