Templatecolumn dans un datagrid

cs_moiaussi Messages postés 1 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 30 janvier 2003 - 30 janv. 2003 à 12:27
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 - 18 févr. 2005 à 10:58
j'ai créé une templatecolumn dans un datagrid
j'ai créé un itemtemplate pour remplir cette colonne

mais je n'arrive pas à affecter la valeur de cet itemtemplate par le codebehind
en fait je voudrais faire la meme chose que :
<%# databinder.eval(container.dataitem,"champ_de_ma_source") %>
mais dans le codebehind

la source de mon datagrid est un hashtable

2 réponses

SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
5 févr. 2003 à 08:04
Je ne ssias pas ce que tu as déjà implémenté pour ton itemtemplate, mais voici en gros les étapes à suivre :

Ton itemtemplate doit implémenter ITemplate et donc définir la méthode InstantiateIn

void ITemplate.InstantiateIn(Control container)
{
container.Controls.Add(new itemTemplate());
}

Ensuite, pour lier les donner, il faut qu'il sache que faire lors du DataBind, Il faut donc mettre dans ton constructeur :
this.DataBinding += new EventHandler(this.BindData);

puis définir la méthode BindData :

private void BindData(object sender, EventArgs e)
{
DataGridItem container = (DataGridItem) this.NamingContainer;
container.ItemIndex;/*Permet de trouver l'index de la ligne dans laquelle se trouve cette cellule*/
((DataRowView) container.DataItem)["DataField"] /*Permet de récupérer ce qui se trouve dans la colonne 'DataField' Du DataGrid, même si elle n'est pas visible*/
{
}

J'espère que c'est ce que tu désirais, autrement il faudra me montrer ton code pour des explications plus ciblées

A+
0
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 1
18 févr. 2005 à 10:58
En fait, je travaille en Delphi.Net et il n'y a pas beaucoup d'aide...

Je fais:
chk := CheckBox.Create;
chk.Text := 'Bonjour';
dgcOte := TemplateColumn.Create;
dgcOte.HeaderText := 'Oter';
dgcOte.ItemTemplate.InstantiateIn(chk); // Ca plante ici
dgDonnees.Columns.Add(dgcOte);
dgDonnees.DataBind;

Aurais-je oublié une étape ?
faut il réImplémenter la méthode InstantiateIn?

David, à VERSAILLES
0
Rejoignez-nous