begin process at 2012 05 27 17:37:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

ASP.NET

 > 

WebForms

 > 

WebControl

 > 

comment lier un detailsview à un gridview


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

comment lier un detailsview à un gridview

dimanche 1 mars 2009 à 00:12:14 | comment lier un detailsview à un gridview

coccolata

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

protectedvoid Page_Load(object sender, EventArgs e)

{

 

if (!IsPostBack)

{

string message = "impossible de charger la liste de pointage";

string mat = Session["matricule"].ToString();

string firstName = Session["prenom"].ToString();

string lastName = Session["nom"].ToString();

DataSet ds = newDataSet();

DataAccess.

DBRequests db = new DataAccess.DBRequests();

ds = db.Select(

"SELECT * FROM pointages WHERE pMatricule=" + mat);

 

Response.Write(

"bonjour " + firstName + " " + lastName);

// chargement de la liste des pointages

if (ds.Tables[0].Rows.Count > 0)

{

GVpointageE.DataSource = ds.Tables[0];

GVpointageE.DataBind();

DetailsView1.DataSource = ds;

DetailsView1.DataBind();

-------------------------
et puis
 

protectedvoid GVpointageE_SelectedIndexChanged(object sender, EventArgs e)

{

DetailsView1.PageIndex = GVpointageE.SelectedIndex;

DetailsView1.DataBind();

-----------------------
mais ça marche pas
merci en avance
dimanche 1 mars 2009 à 01:38:30 | Re : comment lier un detailsview à un gridview

RougailSaucisse

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. Asp.net/learn par exemple)
dimanche 1 mars 2009 à 09:17:38 | Re : comment lier un detailsview à un gridview

coccolata

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 = newstring[]{"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

dimanche 1 mars 2009 à 12:03:49 | Re : comment lier un detailsview à un gridview

RougailSaucisse

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 ^^
dimanche 1 mars 2009 à 13:55:42 | Re : comment lier un detailsview à un gridview

coccolata

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 ;

protected void GVpointageE_SelectedIndexChanged( object sender, EventArgs e)

{

DetailsView1.PageIndex = GVpointageE.SelectedIndex;

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!!!!!!!!

dimanche 1 mars 2009 à 23:44:28 | Re : comment lier un detailsview à un gridview

RougailSaucisse

Premièrement, tu peux bien sur utiliser un Dataset avec objectdatasource control: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.objectdatasource.aspx

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):

<asp:GridView ID="myGv" runat="server" AutoGenerateSelectButton="true" OnSelectedIndexChanged="myGv_SelectedIndexChanged" DataKeyNames="ProductID">
</asp:GridView>
<asp:DetailsView ID="myDetailView" runat="server" />

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.
lundi 2 mars 2009 à 01:17:40 | Re : comment lier un detailsview à un gridview

coccolata

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:

protectedvoid GVpointageE_SelectedIndexChanged(object sender, EventArgs e)

{

//DetailsView1.PageIndex = GVpointageE.SelectedIndex;

//DetailsView1.DataBind();

 

//DetailsView1.PageIndex = GVpointageE.PageIndex * (GVpointageE.PageSize) + (GVpointageE.SelectedIndex);

//DetailsView1.DataBind();

 

DataSet ds1 = new DataSet ();

//GVpointageE.DataKeyNames = new string[] { "id" };

//GVpointageE.DataKeyNames = "id";

DataAccess.

DBRequests db = new DataAccess. DBRequests ();

ds1 = db.Select(

"SELECT * FROM pointages WHERE id=" + GVpointageE.SelectedValue);

DetailsView1.DataSource = ds1.Tables[0].DefaultView ;

DetailsView1.DataBind();

 

}


le code aspx:

< asp : GridView ID ="GVpointageE" runat ="server" DataKeyNames ="id" CellPadding ="4" ForeColor ="#333333"

GridLines ="Horizontal" Width ="319px" Caption ="Liste de pointage" Font-Overline ="False" Font-Strikeout ="False" CellSpacing ="1" OnSelectedIndexChanged ="GVpointageE_SelectedIndexChanged">

< FooterStyle BackColor ="#507CD1" Font-Bold ="True" ForeColor ="White" />

< RowStyle BackColor ="#EFF3FB" />

< EditRowStyle BackColor ="#2461BF" />

< SelectedRowStyle BackColor ="#D1DDF1" Font-Bold ="True" ForeColor ="#333333" Wrap ="True" />

< PagerStyle BackColor ="#2461BF" ForeColor ="White" HorizontalAlign ="Center" />

< HeaderStyle BackColor ="#507CD1" Font-Bold ="True" ForeColor ="White" />

< AlternatingRowStyle BackColor ="White" Wrap ="True" />

< PagerSettings Position ="Top" />

< EmptyDataRowStyle Font-Strikeout ="False" Font-Underline ="False" />

< Columns >

< asp : CommandField ShowSelectButton ="True" />

</ Columns >

</ asp : GridView >

<

asp:DetailsViewID="DetailsView1"runat="server"CellPadding="4"DefaultMode="Edit"Height="50px"

Width="125px"AutoGenerateEditButton="True"BackColor="White"BorderColor="#CC9966"BorderStyle="Dotted"BorderWidth="1px"Font-Bold="False"Font-Names="Calibri"Font-Overline="False"OnPageIndexChanging="DetailsView1_PageIndexChanging"AutoGenerateRows="False"DataKeyNames="id"AllowPaging="True">

<FooterStyleBackColor="#FFFFCC"ForeColor="#330099"/>

<RowStyleBackColor="White"ForeColor="#330099"/>

<PagerStyleBackColor="#FFFFCC"ForeColor="#330099"HorizontalAlign="Center"/>

<HeaderStyleBackColor="#990000"Font-Bold="True"ForeColor="#FFFFCC"/>

<EditRowStyleBackColor="#FFCC66"Font-Bold="True"ForeColor="#663399"/>

<PagerSettingsMode="NextPreviousFirstLast"/>

</asp:DetailsView>


bien sur que j'ai suivi l'exection par un breakpoint et f10 ...tout ça fonctionne

je comprends pas ou la faille dans mon code

lundi 2 mars 2009 à 01:44:13 | Re : comment lier un detailsview à un gridview

RougailSaucisse

Réponse acceptée !
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.
lundi 2 mars 2009 à 08:53:35 | Re : comment lier un detailsview à un gridview

coccolata

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


Cette discussion est classée dans : string, ds, detailsview, detailsview1, gvpointagee


Répondre à ce message

Sujets en rapport avec ce message

cacher les champs vides d'un detailsview [ par coccolata ] comment je peux cacher les champs vides d'un detailsview??j'ai essayé ça, mais ça ne fonctionne pas, lors du deboggage ça n'entre pas dans la boucle i basculer entre mode insertion et mode édition dans un detailsView [ par coccolata ] salut à tous,j'ai un gridview, en selectionnant une ligne j'aurai les details chargés dans un detailsviewmon details view est par defaut en mode inser update et isert dans un detailsView [ par coccolata ] bonsoir à tous comment se fait un update et un insert dans un detailsview je voulais savoir est ce que je dois spécifier à chaque fois la cellule de connection à une base de donnée sql server [ par coccolata ] bonjour je developpe une applicaion asp.net c# sur VS2005 , sql server 2005j'arrive pas à me connecter à la base, je m'explique:je veux ouvrir une ses envoi d'un mail automatique sous format html en asp.net c# [ par coccolata ] salut,je voudrais envoyer un mail automatique, j'utilise visual studio.net 2005 (en c#)mon problème est :1) mon email est en format html, les balises Active directory et Dll = problème d'obtention utilisateur [ par jostag ] Bonjour,je ne suis pas sur d'être a la bonne place pour le message puisque ma question concerne un application web et une non web (une dll), enfin vou Récupération d'un string du coté client [ par clavelski ] Bonjour, Donc j'ai un petit soucis avec mon string ;) . En fait du coté de mon service, j'ai 2 méthode qui me permette de concaténer 2 fichier XML.pub System.Threading.ThreadAbortException [ par thiosyiasar ] Bonjour,J'utilise une requete http en javascript, pour appeler une page aspx qui me retourne une url.Cela fonctionne bien mais visual studio affiche u éviter l'affichage des cellules vides dans un detailsview [ par coccolata ] salut à tous,comme je peux éviter l'affichage des cellules vides dans mon detailsview l'idee intuitive que j'ai eu est de jouer sur la visibilité de l Shared Ou New ? [ par jmtoulon ] Bonjour, voici ci-dessous un extrait d'un code que j'ai créer afin de vous exposer mon probleme.Depuis une page aspx, quand la page se charge, la fonc


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales