Modification d'une gridview (donc de la bdd) depuis le code c#

gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007 - 17 févr. 2006 à 14:29
gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007 - 17 févr. 2006 à 23:58
Bonjour,

Tout est dans le titre, je voudrais modifier la valeur d'un champ de ma gridview mais aussi que ça modifie se valeur dans la bdd. Je voudrais que ça se produise quand je selectionne la ligne.

Merci de votre aide

9 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 févr. 2006 à 14:50
Bonjour,

il te faut autoriser la selection dans la gridview et tu n'as plus qu'a t'abonner à l'event Select de ta grdview

PS : evite les titres qui commencent par URGENT !!!


<HR>
Cyril - MVS - MCP ASP
0
gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007
17 févr. 2006 à 15:28
oui mais je ne trouve quelle fonction utiliser dans mon code C# pour mettre à jour le gridview.

Voici mon code :


protected
void GridView1_SelectedIndexChanged(
object sender,
EventArgs e)


{


}



protected
void GridView1_RowDataBound(
object sender,
GridViewRowEventArgs e)


{



if (e.Row.DataItemIndex == -1)



return;


e.Row.Attributes.Add(
"onMouseOver",
"this.style.cursor='hand';");


e.Row.Attributes.Add(
"onclick",
this.GetPostBackClientEvent(GridView1 ,
"Select$" + e.Row.RowIndex.ToString()));



if (
DataBinder.Eval(e.Row.DataItem,
"Lu").ToString() ==
"False")


{


e.Row.Font.Bold =
true;


}


}

je pense que c'est dans la fonction GridView1_SelectedIndexChanged qu'il faut que j'insere le code mais je ne sais pas quoi mettre pour mettre à jour ma gridview.

Merci de ton aide.

PS : désolé pour le urgent
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 févr. 2006 à 16:03
Il faut faire un :

drigview1.datasource = tonnouveaudatasource
gridview1.databind()

Si tu utilises un sqlDataSource ou mieux encore un DatasourceObject et que lui spécifie les requetes de mis à jour & co le gridview va tout faire tout seul :)

PS : je ne comprend pourquoi tu veux que la bdd se modifie lorsque tu selectionnes une ligne, c'est plutot de l'edition que tu veux faire ?

regarde du coté du coach asp.net il y a pleins d'exemple interessant :)


<HR>
Cyril - MVS - MCP ASP
0
gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007
17 févr. 2006 à 16:48
ben en fait j'ai une liste de message gérer par la gridview et dans la bdd il y a un flag permettant de savoir si le message est lu ou non. Quand le message est non lu ça apparait en gras et donc des que le message est lu (donc qu'on le selectionne) il faut changer ce flag.

donc avec ton exemple ça change simplement de datasource mais ça ne change pas les données de la base si?
à moins que je cré une datasource qui fasse simplement l'update et pui ensuite je recharge la datasource qui selectionne les données mais c'est p-e un peu lourd.

ps : c koi coach asp.net?

merci de ton aide
0

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

Posez votre question
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 févr. 2006 à 17:12
coach asp.net =>> http://www.microsoft.com/france/msdn/aspnet/coach.mspx

Oui il faudra faire un update sur la bdd et refaire une requete


<HR>
Cyril - MVS - MCP ASP
0
gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007
17 févr. 2006 à 17:49
c'est super lourd comme manip'

je pensais quand même qu'il y avait une maniere plus elegante de faire ça. meme en php c'est moins sale c'est dire !!!

y a pas une fonction du genre gridview.selectedindex.update ("nomduchamp","nouvellevaleur")?
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 févr. 2006 à 18:03
disons que j'ai pas trés bien compris ce que t'essaie de faire ...


<HR>
Cyril - MVS - MCP ASP
0
cs_azra Messages postés 425 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 13 juillet 2007 1
17 févr. 2006 à 18:24
Ah non, c'est très propre de faire un update sur le dataset au contraire.
C'est le principe d'ADO.NET, le mode déconnecté (de la base), les lignes modifiées dans ton dataset son flagged et elles seules vont être mises à jour au niveau de la base.
Donc si tu modifies une ligne dans ton dataset, cela revient au même que de faire un update sur une seule ligne.

Enfin j'ai peut être rien compris au problème aussi


<HR>
Azra (Florent) - MVS - MCAD.NET
0
gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007
17 févr. 2006 à 23:58
alors je vais etre aussi clair que possible...

alors je veux faire un systeme de messagerie interne. avec dans une gridview la liste des messages reçu. en gras sont les messages non lus. donc des qu'on lit un message, il ne faut qu'il apparaisse en gras.dans la table messages, il a un champs de type bit qui prend true quand le message est lu et qui est à false par defaut quand le message est non lu.

je me suis abonné à l'evenement clic sur une ligne qui correspond à un select. mais je veux qu'en plus ça modifie la valeur du booleen dans la table de façon à le marquer comme etant lu.

est ce que c'est plus clair?

merci de votre aide
0
Rejoignez-nous