Meilleur auteur de réponses
passage d'une web part à une autre

Question
-
bonjour à tous
j'ai mis ce post dans un autre forum mais n'ai pas obtenu e réponse et vraiment je suis coincé ...
qq pourrait til me conseillé pour le pb suivant :
en gros j'ai une webpart(1) qui ramène des données via linq et j'affiche cela dans un datagrid. j'ai ajouté une colonne dans laquelle j'ai mis un bouton "détail", le but etant vous l'avez deviné d'acceder à toutes les infos detail de la dite ligne J'ai créé une seconde webpart(2) qui me ramène les infos détalsl en faisant une requete sur l'id de la ligne cliquée. ce que j'arrive pas écrire c'est le bout de code qui va sur l'évènement clic de mon bouton "détail" . ci dessous un bout de code test qui écrit simplement dans une textbox, le nom de la ligne à éditer : Code :
Comment passer à partir de là sur webpart2 ??? j'ai essayé response.redirect mais je suis "hors contexte" ???void mygrid_AccesDetail(object sender, DataGridCommandEventArgs e) { lblMessage.Width = 750; lblMessage.Text = "Ligne a editer en page detail : " + e.Item.Cells[2].Text + " " + e.Item.Cells[3].Text; }
je pense que je dois creer deux webPart séparés et ensuite les inclure dans mes pages sharepoint mais je sais pas comment coder ^ce passage d'une page à l'autre
désolé car ça doit vraiment être simple mais je coince .... Merci à vous tous Bonne journée Alain
Réponses
-
Bonsoir,
Je pensais que vous vouliez mettre ces webparts dans la même page...
Si vous voulez les mettre dans des pages différentes, une solution est de passer l'id dans l'url :
Ajoutez un query string pour que l'URL de destination soit la suivante :
http://.....detail.aspx?id=[ID]
Vous pourrez ainsi récupérer cet id dans la page détail en lisant tout simplement la valeur du QueryString.
Donc :
Page "donnees.aspx" :
sur le click du bouton, rediriger vers la page detail.aspx?id=[ID]
[ID] étant l'id de l'élément sélectionné
Page "detail.aspx" ;
Au chargement de la page, récupérer l'id en utilisant le QueryString:
Page.Request.QueryString["id"]
En esperant que ça vous aide,
Sylvain- Proposé comme réponse Sylvain ReverdyEditor mardi 27 octobre 2009 21:17
- Marqué comme réponse algeox mercredi 28 octobre 2009 11:44
Toutes les réponses
-
Bonjour,
Pour passer des données d'une webpart à une autre, un mécanisme existe déjà :
Il s'agit des connexions entre webpart.
Vous allez définir une interface (ou en utiliser une existante) contenant une déclaration de propriété avec la donnée à échanger
ex :
public Interface IMyDataInterface
{
int SelectedDataId{get;}
}
puis faire implémenter cette interface par votre webpart(1)
Et utiliser cette interface dans la webpart(2)
Il faut par contre, quand la webpart(2) se charge, que la webpart(1) sache quelle ligne est sélectionnée.
Un exemple tout simple ici : http://ablog.apress.com/?p=1300
Plus d'explications ici : http://stephaneey.developpez.com/tutoriel/sharepoint/webpartavances/
Explication Microsoft : http://msdn.microsoft.com/fr-fr/library/ms469765.aspx
Bonne journée,
Sylvain- Proposé comme réponse Sylvain ReverdyEditor mardi 27 octobre 2009 10:56
-
-
re bonsoir Sylvain ..
faut il vraiment passer par toute cette complexité pour joindre deux pages ???????????????????
ne serait il pas plus simple de :
1/ faire une webpart(1) qui recupere toute une table et installer cette webpart dans une page "MES DONNEES EN LISTE" du site sharepoint
2/ faire une procedure stockée avec un parametre en entree (l'id de la ligne selectionnée sur la page 1)
integrer cette procedure dans une webpart(2) via linq etc .... et l'installer sur une page "PAGE DETAIL"
3/ faire un lien depuis la page "MES DONNEES EN LISTE" ver la page "DETAIL" en lui passant l'id de la ligne selectionée 'en colonne masqueé par exemple) ????
ET DANS CE CAS ? Comment appeler la page "detail" ???
Merci pour votre aide
Alain -
Bonsoir,
Je pensais que vous vouliez mettre ces webparts dans la même page...
Si vous voulez les mettre dans des pages différentes, une solution est de passer l'id dans l'url :
Ajoutez un query string pour que l'URL de destination soit la suivante :
http://.....detail.aspx?id=[ID]
Vous pourrez ainsi récupérer cet id dans la page détail en lisant tout simplement la valeur du QueryString.
Donc :
Page "donnees.aspx" :
sur le click du bouton, rediriger vers la page detail.aspx?id=[ID]
[ID] étant l'id de l'élément sélectionné
Page "detail.aspx" ;
Au chargement de la page, récupérer l'id en utilisant le QueryString:
Page.Request.QueryString["id"]
En esperant que ça vous aide,
Sylvain- Proposé comme réponse Sylvain ReverdyEditor mardi 27 octobre 2009 21:17
- Marqué comme réponse algeox mercredi 28 octobre 2009 11:44
-
bonjour Sylvain
ok pour votre reponse .... je connaissais bien ce principe mais la le pb c'est que jsuis dans une webpart (donc page .cs et non aspx )
dans le datagrid (mygrid) que j'utilise pour recuperer mes données j'ai utilisé cette definition
ButtonColumn mybut = new ButtonColumn();
pour ajouter le bouton "détail " dans mon datagrid
ensuite, je gere le clic sur le bouton detail en y asscociant un evenement de cette façon
mygrid.ItemCommand += (mygrid_AccesDetail);
et à partir de cette fonction mygrid_AccesDetail , je voudrais faire un lien sur une seconde page. Le pb étant que je n'ai acces à aucune methode de redirection à partir du bouton mybut
ceci passe tres bien
void mygrid_AccesDetail(object sender, DataGridCommandEventArgs e) { lblMessage.Text = "Ligne a editer en page detail : " + e.Item.Cells[2].Text + " " + e.Item.Cells[3].Text; }
je recupere bien l'identifiant à passer dans ma zone texte de test, mais à partir de quel objet dois-je je utiliser la redirection ??
le bouton mybut. xxxxx ne propose rien de plausible ...
merci
Alain -
Sylvain
j'ai trouvé !!! en vous ecrivant le mail precedent je me suis rendu compte que je ne partais peut être pas du bon objet et du coup , en repartant de ll'instance mygrid de mon datagrid je retrouve bien page.response.redirect à laquelle je n'ai qu'a rajouter l'identifiant de la ligne.
Merci bcp pour votre aide
cordialement
Alain