Label dans un datagrid

cs_grome Messages postés 25 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 3 mai 2005 - 29 avril 2005 à 09:31
dibouched Messages postés 219 Date d'inscription samedi 21 août 2004 Statut Membre Dernière intervention 17 juillet 2007 - 3 mai 2005 à 15:45
Bonjour à tous,





Je mets en oeuvre un datagrid pour la consultation et la mise à jour
d'une base de données. Ce Datagrid contient une colonne modèle. En mode
affichage il y a un label pour afficher les données et mode édition
c'est une dropdownlist. Pour mettre en oeuvre ce Datagrid je me suis
appuyé sur un exemple vb.net que j'ai traduis en C#. Seulement voilà il
y a une instruction que je n'arrive pas à traduire malgré mes
recherches. Cette instruction est dans le source html de la page qui
contient le datagrid. Ci dessous l'instruction en VB.NET dans le code
de définition du datagrid que je voudrais traduire en C#. J'ai essayé
les crochets mais sans succès.





Merci d'avance.





<Columns>








">


<EditItemTemplate>

</EditItemTemplate>






</Columns> <Columns>








">


<EditItemTemplate>

</EditItemTemplate>





</Columns><Columns>



























</gras>'>





<EditItemTemplate>



</EditItemTemplate>





















</Columns>




grome
grome

16 réponses

dibouched Messages postés 219 Date d'inscription samedi 21 août 2004 Statut Membre Dernière intervention 17 juillet 2007 2
29 avril 2005 à 09:52
#Container.DataItem.Row.GetParentRow("PubsTitles")("pub_name")

tu la remplace par
<%#DataBinder.Eval(Container,"DataItem.ProductName") %>
<%#DataBinder.Eval(Container,"DataItem.ProductName") %>#DataBinder.Eval(Container,"DataItem.non_du_champ_que_tu_veux_l'afficher")

ca va marcher


DiBou
email:dibouched@yahoo.fr
0
dibouched Messages postés 219 Date d'inscription samedi 21 août 2004 Statut Membre Dernière intervention 17 juillet 2007 2
29 avril 2005 à 09:54
tu utilise quoi comme source pour ton datagrid



DiBou
email:dibouched@yahoo.fr
0
cs_grome Messages postés 25 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 3 mai 2005 2
29 avril 2005 à 16:56
J'utilise un dataset pour alimenter mon datagrid. Ce dataset est
composé de deux tables publisher et titles de la base de données
d'exemple PUBS de sql server. J'ai dans mon dataset une relation
pubstitles. Le but est d'afficher dans le datagrid le publisher de
chaque title au travers de la relation définit dans le dataset. La
colonne en question est basée sur un modèle.



j'ai essayé ta solution en codant ceci.<%#DataBinder.Eval(Container, "DataItem.pub_name")


j'obtiens ceci



Détails de l'exception: System.Web.HttpException: DataBinder.Eval :
'System.Data.DataRowView' ne comporte pas de propriété appelée pub_name.




grome
0
dibouched Messages postés 219 Date d'inscription samedi 21 août 2004 Statut Membre Dernière intervention 17 juillet 2007 2
29 avril 2005 à 17:01
s'il te pali me le code de ta requete
est ce que tu as un champ qui s'appelle pub_name
dans la table que tu mets ces valeurs dans la dataset
si non ou bien tu utilise un datatable ou bien
envoyer moi le resultat d'execution de ton requete en mode sql je vais te guider



DiBou
email:dibouched@yahoo.fr
0

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

Posez votre question
dibouched Messages postés 219 Date d'inscription samedi 21 août 2004 Statut Membre Dernière intervention 17 juillet 2007 2
29 avril 2005 à 17:03
je susi désolé pour pour lma langue farasaise
j'ai voulu dire
metter sur le fiurm le code de la requette sql
et son execution



DiBou
email:dibouched@yahoo.fr
0
dibouched Messages postés 219 Date d'inscription samedi 21 août 2004 Statut Membre Dernière intervention 17 juillet 2007 2
29 avril 2005 à 17:13
je suis désolé pour pour ma langue farncaise
j'ai voulu dire
metter sur le forum le code de la requette sql
et le resultat de son execution





DiBou
email:dibouched@yahoo.fr
0
cs_grome Messages postés 25 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 3 mai 2005 2
29 avril 2005 à 17:43
ok mon dataset est rempli comme cela



System.Data.OleDb.OleDbConnection oledbCN = new System.Data.OleDb.OleDbConnection();

oledbCN.ConnectionString = Session["ChaineConnexion"].ToString();

oledbCN.Open();



// remplit le DataTable titles

System.Data.OleDb.OleDbDataAdapter daTitles = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM TITLES",oledbCN);

daTitles.Fill(ds,"Titles");



//remplit le datatable Publishers (avec les champs voulus)

System.Data.OleDb.OleDbDataAdapter daPubs = new
System.Data.OleDb.OleDbDataAdapter("SELECT pub_id , pub_name FROM
PUBLISHERS",oledbCN);

daPubs.Fill(ds,"Publishers");



// ferme la connexion

oledbCN.Close();



// cree la relation entre les deux tables

ds.Relations.Add("PubsTitles", ds.Tables["Publishers"].Columns["Pub_id"], ds.Tables["Titles"].Columns["pub_id"]);



le dataset est correctement rempli, l'erreur se déclenche sur le
chargement de la page qui contient le datagrid. Cette erreur est
provoquée à cause de la ligne <%Container.DataItem.Row.GetParentRow("PubsTitles")("pub_name")%> C'est un ligne VB alors que je voudrais l'ecrire en C#.



Ensuite pour remplir le DataGrid j'utilise ceci



void BindDataGrid()

{

//lie la source de données au datagrid.

dgrTitles.DataSource = ds.Tables["Titles"];

dgrTitles.DataKeyField = "title_id";

dgrTitles.DataBind();



//Si on est en mode édition on lie également le contrôle ddlPublishers.

if (dgrTitles.EditItemIndex >= 0 )

{


//récupère une référence au controle ddlPublishers...


System.Web.UI.WebControls.DataGridItem dgi =
dgrTitles.Items[dgrTitles.EditItemIndex];


System.Web.UI.WebControls.DropDownList ddlPublishers
= (DropDownList) dgi.FindControl("ddlPublishers");



//... et le lie au datatable publishers

ddlPublishers.DataSource = ds.Tables["Publishers"];

ddlPublishers.DataTextField = "pub_name";

ddlPublishers.DataValueField = "pub_id";

ddlPublishers.DataBind();

int i = ddlPublishers.Items.Count;



//met en évidence l'éditeur pour le titre en cours.

System.Data.DataRow dr;


dr =
GetDataRow(dgrTitles.DataKeys[dgrTitles.EditItemIndex].ToString());




SelectItemFromValue(ddlPublishers,
dr["pub_id"].ToString());

}

}



grome
0
dibouched Messages postés 219 Date d'inscription samedi 21 août 2004 Statut Membre Dernière intervention 17 juillet 2007 2
29 avril 2005 à 17:54
dgrTitles.DataSource = ds.Tables["Titles"].defaultview;
ensuite pour le deux premiers dataset
tu utilise une seule requetté et comme ca tu utilse
. <%#DataBinder.Eval(Container, "DataItem.pub_name")

pour que tu teste ton resultat et tu comprend mieu
essaye de faire uniquement ce qui suit ensuite c'est toi qui va tout comprendre
//remplit le datatable Publishers (avec les champs voulus)
System.Data.OleDb.OleDbDataAdapter daPubs = new System.Data.OleDb.OleDbDataAdapter("SELECT pub_id , pub_name FROM PUBLISHERS",oledbCN);
daPubs.Fill(ds,"Publishers");
et
.<%#DataBinder.Eval(Container, "DataItem.pub_name")

essaye ca uniquement ensuite tu vas comprendre comment tu fais
maintenant j'ai pas assez de temps ,je rentre maintenant
au lundi
mais essaye ca tous simplement tu va arrive

DiBou

email:dibouched@yahoo.fr
0
cs_grome Messages postés 25 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 3 mai 2005 2
2 mai 2005 à 10:04
<%#DataBinder.Eval(((System.Data.DataRowView)Container.DataItem).Row.GetParentRow("PubsTitles"), "pub_name") %>



Avec cette instruction je devrais pas être
loin mais cela ne fonctionne pas. Normalement l'opérande
Container.DataItem retourne un objet DataRowView, qui ne permet pas de
traverser les relations. Cependant, il expose la propriété Row, qui
retourne un objet DataRow correspondant et permet d'utiliser la méthode
GetParentRow afin de choisir le nom de l'éditeur au travers de la
relation PubsTitles.


grome
0
dibouched Messages postés 219 Date d'inscription samedi 21 août 2004 Statut Membre Dernière intervention 17 juillet 2007 2
2 mai 2005 à 10:18
stp essaye ce que je te dis
ca devrai fonctionner
j'ai acune ideé pour ton dernier code



DiBou
email:dibouched@yahoo.fr
0
cs_grome Messages postés 25 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 3 mai 2005 2
2 mai 2005 à 13:48
Ce que tu m'as demandé de faire fonctionne.



DataBinder.Eval(Container, "DataItem.pub_name")

grome
0
dibouched Messages postés 219 Date d'inscription samedi 21 août 2004 Statut Membre Dernière intervention 17 juillet 2007 2
2 mai 2005 à 13:51
alors qu'est ce que ce qui ne va pas maintenant ?
tu as deux table essaye d'utiliser une seule requette afin de former un enregistement qui ciontient l'ensemble de tes champ et affiche ce que tu veux



DiBou
email:dibouched@yahoo.fr
0
cs_grome Messages postés 25 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 3 mai 2005 2
3 mai 2005 à 13:58
Si je fais cela ca fonctionne mais uniquement pour l'affichage.

Est ce que tu veux voir tout mon code ? Tu auras peut être une idée ...

grome
0
dibouched Messages postés 219 Date d'inscription samedi 21 août 2004 Statut Membre Dernière intervention 17 juillet 2007 2
3 mai 2005 à 14:01
ok sans problème
tu as mon email
tu m'envoie le code



DiBou
email:dibouched@yahoo.fr
0
cs_grome Messages postés 25 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 3 mai 2005 2
3 mai 2005 à 15:39
En fait c'est bon je viens de m'en sortir j'ai écrit ceci dans le code html



'>







Ensuite j'ai créé une
fonction



public string GetPubName(DataRow dr)

{

string
spubname = dr.GetParentRow("pubstitles").ItemArray[1].ToString() ;


return spubname;

}



çà fonctionne très bien, par contre je n'ai pas réussi à l'écrire en une seule ligne avec le DataBinder.Eval()



Merci beaucoup pour ton aide. Tu m'as bien aidé.






grome
0
dibouched Messages postés 219 Date d'inscription samedi 21 août 2004 Statut Membre Dernière intervention 17 juillet 2007 2
3 mai 2005 à 15:45
je suis a votre service
a+



DiBou
email:dibouched@yahoo.fr
0
Rejoignez-nous