coccolata
Messages postés86Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention26 mai 2010
-
1 mars 2009 à 00:12
coccolata
Messages postés86Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention26 mai 2010
-
2 mars 2009 à 08:53
salut,je veux éditer mon gridview pour cette raison je vex employer un detailsview qui chargera la ligne sélectionnée du gridview
mais le problème je sais pas comment le faire
ni quels evements dois-je utiliser ni comment basculer entre les mode du detailsview
que sera mon datasource du detailsview??? j'ai fait dans form_load
RougailSaucisse
Messages postés118Date d'inscriptionlundi 16 février 2009StatutMembreDernière intervention 6 décembre 20101 2 mars 2009 à 01:44
lol je crois savoir d'ou viens ton probleme.
Dans ton detailsview tu as mis AutoGenerateRows="false", donc il ne va rien générer du tout. Donc soit tu met la propriété a true (par défaut), soit tu définis un template en prenant les champs que tu veux afficher.
Ca devrait fonctionner maintenant (et aussi avec la manière que tu utilisais auparavant (SelectedIndex) bien que je trouve "dommage" de bind toutes les données à la fois sur gridview et detailsview ca fait bcp de données enfin bon a toi de voir mais une maniere ou l'autre ca devrait etre ok maintenant.
RougailSaucisse
Messages postés118Date d'inscriptionlundi 16 février 2009StatutMembreDernière intervention 6 décembre 20101 1 mars 2009 à 01:38
as-tu réellement besoin de bind toutes tes données sur la gridview ET la detailsview dans le page_load?
Si non, tu pourrais faire comme ceci:
dans ton SelectedIndexChanged tu executes une requete sur la database db.Select
("SELECT * FROM pointages WHERE xxxx=" + GVpointageE.SelectedValue) en prenant soin de preciser un datakey (correspondant a l'id de la table généralement) pour ta gridview (DataKeyNames="xxxx").
Sinon tu pourrais considerer l'utilisation des objectdatasources (ou sqldatasources mais bon...) plutot que de passer par des dataset et tout faire a la mano. Ainsi tu pourrais choisir ta requete de selection du detailsview et lui attribuer comme parametre de filtrage un controlId correspondant au selectedvalue de ta gridview (cf. [as-tu réellement besoin de bind toutes tes données sur la gridview ET la detailsview dans le page_load? Si non, tu pourrais faire comme ceci: dans ton SelectedIndexChanged tu executes une requete sur la database db.Select("SELECT * FROM pointages WHERE xxxx=" + GVpointageE.SelectedValue) en prenant soin de preciser un datakey pour ta gridview bien sur(DataKeyNames="xxxx"). Asp.net/learn] par exemple)
coccolata
Messages postés86Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention26 mai 2010 1 mars 2009 à 09:17
merci d'abord de m'avoir répondu assez vite
j'ai besoin de bind des données de GridView mais pour le detailview j'ai besoin seulement des donnée de la ligne selectionnée du GV, pour avoir la main de faire des modification
bref j'ai fait ceci:
j'ai enlevé le chargement du detailview dans le load et j'ai modifié GVpointageE_SelectedIndexChanged
protected
void
GVpointageE_SelectedIndexChanged(
object
sender,
EventArgs
e){
DataSet
ds =
new
DataSet
();
//GVpointageE.DataKeyNames = "id"; celle ci ne marche pas car GVpointageE.DataKeyNames renvoie un tableau de string qui ne peut pas etre conerti en string, donc j'ai déclaré mon id comme si un tableau de 1 elt
GVpointageE.DataKeyNames = new
string[]{
"id"} ;
DataAccess.
DBRequests db =
new DataAccess.
DBRequests();ds = db.Select(
"SELECT * FROM pointages WHERE id="+ GVpointageE.SelectedRow.Cells[1]);DetailsView1.DataSource = ds;
DetailsView1.DataBind();
}
cela m'a généré une erreur : plusieurs identifiants bound impossible
RougailSaucisse
Messages postés118Date d'inscriptionlundi 16 février 2009StatutMembreDernière intervention 6 décembre 20101 1 mars 2009 à 12:03
pour commencer tu peux tout simple mettre GvpointageE.SelectedValue c'est plus "simple" ^^, quant à l'id j'avoue que je comprend pas pkoi il te dit que tu as plusieurs identifiants. Es-tu sur de n'en avoir pas déclaré directement dans la gridview dans ton code asp?
Pour ma part j'ai fait un test la de cette manière sauf qu'au lieu de déclarer le DataKeyNames en code behind je le met directement dans le code asp et cela fonctionne parfaitement. Essaye de ton coté de la mm manière (dans le code asp) et si ca ne fonctionne, ben...on verra ^^
Vous n’avez pas trouvé la réponse que vous recherchez ?
coccolata
Messages postés86Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention26 mai 2010 1 mars 2009 à 13:55
pour le probleme précédent c'est réglé, plus de bugs en fait j'ai oublié de mettre .Text (GVpointageE.SelectedRow.Cells[1].Text)
quand je selectionne la ligne que je vourdrais afficher en détails je detailsview ne se charge pas : il est vide, je m'explique : il y'a affichage seulement de 2 links ( Mettre à jour Annuler)
apropos
quand j'ai cherché sur le net une solution est proposé est ;
DetailsView1.DataBind();
}
mais encore ça marche pas
quelques part j'ai trouvé que je dois insérer un objet data source dans le code aspx mais j'arrive pas a le faire car j'ai programmé la couche metier a part (dans un module) qui me renvoi seulement un dataset donc le data source ça sera pas reconnu...
je me sens égarée, rien ne fonctionne, et j'ai épuisé toutes mes idées
je comprends pas pourquoi le detailsview ne se charge pas!!!!!!!!
Sinon pour le fait que ca ne marche pas dans ton cas je ne vois vraiment pas, car moi ici cela fonctionne (code fait a la va-vite mais bon pour le principe encore une fois):
protected void myGv_SelectedIndexChanged(object sender, EventArgs e)
{
using (SqlConnection conn = new SqlConnection(@"Server=.\SQLExpress;Database=AdventureWorks;UID=myUser;PWD=myPassword;"))
{ string requete "SELECT * FROM Production.Product WHERE ProductID " + myGv.SelectedValue;
SqlDataAdapter dataAdapter = new SqlDataAdapter(requete, conn);
DataSet ds = new DataSet();
dataAdapter.Fill(ds);
myDetailView.DataSource = ds.Tables[0].DefaultView;
myDetailView.DataBind();
}
}
Au pire met un breakpoint dans ton selectedindechanged et verifier que myGv.SelectedValue retourne bien ce qu'elle devrait retourner.
coccolata
Messages postés86Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention26 mai 2010 2 mars 2009 à 01:17
vraiment je comprends rien! mon code est similaire à le tien..je l'ai meme modifié comme ta version mais en vain le meme probleme persisite encore!!!!
voila exactement ce que j'ai écrit:
coccolata
Messages postés86Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention26 mai 2010 2 mars 2009 à 08:53
bonjour je suis super contente merciiiiiiiiiiiiiiiiiii merciiiiiiiiiiiiii merciiiiiiii finalment ça fontionnee
en fait vous avez raison j'aurais pa du commettre cette betise! j'ai pensé que en mettant
AutoGenerateRows
="False" le detailsview ne sera pas généré automatiquement mais sera déclenché seulement par l'evenement SelectedIndexChanged lors de la selection de ligne du gridview
j'ai tort car le chargement automatique est la tache de load!
merci une autre fois RougailSaucisse pour ton aide