Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Qui peux m'aider ? Sujet : ITemplate, parseControl, et DataBinder

4 réponses
Avatar
Ced
J'essaie de faire dans la m=E9thode InstantiateIn d'un ITemplate ceci.


public class Temps : ITemplate
{
public Page MaPage;

public void InstantiateIn(Control container)
{
RepeaterItem r =3D container as RepeaterItem;

Control c =3D MaPage.ParseControl("<asp:Button Text=3D'<%#
DataBinder.Eval(Container.DataItem, \"nom\")%>' id=3Dallo
runat=3D\"server\" />");


container.Controls.Add(c);
}
}

Dans mon page load

DataTable dt =3D new DataTable();
dt.TableName=3D"test";
dt.Columns.Add("nom");
dt.Columns.Add("prenom");
dt.Rows.Add("temp","temp2");
dt.Rows.Add("ced", "boi");
dt.Rows.Add("yan", "bess");



Temps t =3D new Temps();

t.MaPage =3D this.Page;

Repeater1.ItemTemplate =3D t;
Repeater1.DataSource =3D dt;
Repeater1.DataBind();


Et j'obtient toujours l'erreur :
La valeur ne peut pas =EAtre null.
Nom du param=E8tre : expression


Ce que j'essai de faire c'est de cr=E9er un Itemplate dynamique, donc je
veux que le DataBinder.Eval ne soit connu que lorsque le control est
Parser.

Quelqu'un peux m'aider ?

Est-ce que c'est fesable. Je ne veux pas utiliser la reflexion car ce
seras trop exigeant.

4 réponses

Avatar
Paul Bacelar
>Est-ce que c'est fesable. Je ne veux pas utiliser la reflexion car ce
seras trop exigeant.



Je ne comprends pas votre critère d'"exigence".


--
Paul Bacelar
MVP VC++
Avatar
Ced
En fait ce que je veux faire c'est de créer un Repeater, qui contient
un template.

Pour ce faire j'ai du me faire une class qui utilise l'interface
ITemplate contenant la méthode IntantiateIn.

Dans cette méthode je voulais créer les controls du template
dynamiquement. Donc j'aurais intéroger ma base de donnée pour aller
chercher la liste des control à créer en String, puis j'aurais fait
un ParseControl de cette string pour ensuite l'ajouté au repeaterItem.

Ce que j'aurais voulus faire c'est lorsque je fait mon parseControl,
les control à l'intérieur contiennt déja les binding avec le
DataBinder.Eval

"<asp:Button Text='<%#
DataBinder.Eval(Container.DataItem, "nom")%>' id=allo
runat="server" />");

Est-ce plus clair ?





Paul Bacelar a écrit :

>Est-ce que c'est fesable. Je ne veux pas utiliser la reflexion car ce
>seras trop exigeant.

Je ne comprends pas votre critère d'"exigence".


--
Paul Bacelar
MVP VC++


Avatar
Paul Bacelar
Qu'est-ce que vous voulez faire de plus par rapport à l'un des exemples
suivants:
http://msdn.microsoft.com/msdnmag/issues/05/06/CuttingEdge/default.aspx
--
Paul Bacelar
MVP VC++

"Ced" wrote in message
news:
En fait ce que je veux faire c'est de créer un Repeater, qui contient
un template.

Pour ce faire j'ai du me faire une class qui utilise l'interface
ITemplate contenant la méthode IntantiateIn.

Dans cette méthode je voulais créer les controls du template
dynamiquement. Donc j'aurais intéroger ma base de donnée pour aller
chercher la liste des control à créer en String, puis j'aurais fait
un ParseControl de cette string pour ensuite l'ajouté au repeaterItem.

Ce que j'aurais voulus faire c'est lorsque je fait mon parseControl,
les control à l'intérieur contiennt déja les binding avec le
DataBinder.Eval

"<asp:Button Text='<%#
DataBinder.Eval(Container.DataItem, "nom")%>' id=allo
runat="server" />");

Est-ce plus clair ?





Paul Bacelar a écrit :

>Est-ce que c'est fesable. Je ne veux pas utiliser la reflexion car ce
>seras trop exigeant.

Je ne comprends pas votre critère d'"exigence".


--
Paul Bacelar
MVP VC++


Avatar
Ced
Je veux faire exactement l'exemple décris à l'adresse
http://msdn.microsoft.com/msdnmag/issues/05/06/CuttingEdge/default.aspx

mais dynamiquement.


Donc dans mon page load créer un template, ajouter des control à
l'intérieur et faire mes bindings sur ces control dynamiquement. Le
tout provient d'une base de donnée.



Paul Bacelar a écrit :

Qu'est-ce que vous voulez faire de plus par rapport à l'un des exemples
suivants:
http://msdn.microsoft.com/msdnmag/issues/05/06/CuttingEdge/default.aspx
--
Paul Bacelar
MVP VC++

"Ced" wrote in message
news:
En fait ce que je veux faire c'est de créer un Repeater, qui contient
un template.

Pour ce faire j'ai du me faire une class qui utilise l'interface
ITemplate contenant la méthode IntantiateIn.

Dans cette méthode je voulais créer les controls du template
dynamiquement. Donc j'aurais intéroger ma base de donnée pour aller
chercher la liste des control à créer en String, puis j'aurais fait
un ParseControl de cette string pour ensuite l'ajouté au repeaterItem.

Ce que j'aurais voulus faire c'est lorsque je fait mon parseControl,
les control à l'intérieur contiennt déja les binding avec le
DataBinder.Eval

"<asp:Button Text='<%#
DataBinder.Eval(Container.DataItem, "nom")%>' id=allo
runat="server" />");

Est-ce plus clair ?





Paul Bacelar a écrit :

> >Est-ce que c'est fesable. Je ne veux pas utiliser la reflexion car ce
> >seras trop exigeant.
>
> Je ne comprends pas votre critère d'"exigence".
>
>
> --
> Paul Bacelar
> MVP VC++