OVH Cloud OVH Cloud

creation controle datagrid

5 réponses
Avatar
Steph
Salut,

je crée un contrôle ImageButon dans une cellule d'un datagrid. Je souhaite
lui affecter un eventHandler mais lorsque je clique, ce dernier n'est jamais
utilisé ? qu'ai je donc oublié ?

Voici le code

... dans le ItemDatabound du datagris=d ...
ImageButton myIBSelect = new ImageButton();
myIBSelect.ImageUrl = "~/images/select.jpg";
myIBSelect.Click += new ImageClickEventHandler(AfficheInfo);
...
// mon handler
private void AfficheInfo(object sender, System.Web.UI.ImageClickEventArgs e)
{
Response.Write("Clic intercepté!");
}


Merci pour votre aide

St

5 réponses

Avatar
Frederic Melantois
Bonjour,

Votre code serait peut-être mieux écrit comme ceci ?

<code>

public void DataGridListe_ItemDataBound(object Source, DataGridItemEventArgs
E)
{
ImageButton myIBSelect = (ImageButton )E.Item.FindControl("IDduBouton");
myIBSelect.ImageUrl = "~/images/select.jpg";
myIBSelect.Click += new ImageClickEventHandler(AfficheInfo);

</code>

Frédéric Mélantois


"Steph" a écrit dans le message de
news:
Salut,

je crée un contrôle ImageButon dans une cellule d'un datagrid. Je souhaite
lui affecter un eventHandler mais lorsque je clique, ce dernier n'est


jamais
utilisé ? qu'ai je donc oublié ?

Voici le code

... dans le ItemDatabound du datagris=d ...
ImageButton myIBSelect = new ImageButton();
myIBSelect.ImageUrl = "~/images/select.jpg";
myIBSelect.Click += new ImageClickEventHandler(AfficheInfo);
...
// mon handler
private void AfficheInfo(object sender, System.Web.UI.ImageClickEventArgs


e)
{
Response.Write("Clic intercepté!");
}


Merci pour votre aide

St




Avatar
Steph
Merci,

mais à quel moment le bouton est créé ?

En fait je dois faire une vérification sur chaque ligne et afficher soit un
texte soit un ImageButton dans la cellule. Et si c'est un ImageButton, je
dois exécuter une action sur le clic de cet imagebutton.

Est-ce possible ?

Merci



"Frederic Melantois" a écrit dans le message de
news: co21sg$n1n$
Bonjour,

Votre code serait peut-être mieux écrit comme ceci ?

<code>

public void DataGridListe_ItemDataBound(object Source,
DataGridItemEventArgs
E)
{
ImageButton myIBSelect = (ImageButton )E.Item.FindControl("IDduBouton");
myIBSelect.ImageUrl = "~/images/select.jpg";
myIBSelect.Click += new ImageClickEventHandler(AfficheInfo);

</code>

Frédéric Mélantois


"Steph" a écrit dans le message de
news:
Salut,

je crée un contrôle ImageButon dans une cellule d'un datagrid. Je
souhaite
lui affecter un eventHandler mais lorsque je clique, ce dernier n'est


jamais
utilisé ? qu'ai je donc oublié ?

Voici le code

... dans le ItemDatabound du datagris=d ...
ImageButton myIBSelect = new ImageButton();
myIBSelect.ImageUrl = "~/images/select.jpg";
myIBSelect.Click += new ImageClickEventHandler(AfficheInfo);
...
// mon handler
private void AfficheInfo(object sender, System.Web.UI.ImageClickEventArgs


e)
{
Response.Write("Clic intercepté!");
}


Merci pour votre aide

St








Avatar
Zazar
Bonjour,

je crée un contrôle ImageButon dans une cellule d'un datagrid. Je souhaite
lui affecter un eventHandler mais lorsque je clique, ce dernier n'est


jamais
utilisé ? qu'ai je donc oublié ?

Voici le code

... dans le ItemDatabound du datagris=d ...
ImageButton myIBSelect = new ImageButton();
myIBSelect.ImageUrl = "~/images/select.jpg";
myIBSelect.Click += new ImageClickEventHandler(AfficheInfo);
...
// mon handler
private void AfficheInfo(object sender, System.Web.UI.ImageClickEventArgs


e)
{
Response.Write("Clic intercepté!");
}



Attribuez un ID constant (au sens toujours le même ID pour un bouton donné à
chaque création) à votre bouton, et recréez-le dans le page_load de votre
page (il vous faudra recréer tout le datagrid).

--
Zazar
Avatar
Frederic Melantois
Le bouton est créé dans ta page design dans le datagrid ! Dans ton premier
code (ImageButton myIBSelect = new ImageButton();), tu crées une instance
d'un bouton qui n'est pas rendu du tout.

Je te suggère par exemple de placer un control Literal et ton Bouton (tu en
profites pour y mettre l'évênement Click à moins que celui change en
fonction de tes données) dans le design de ton datagrid

Ensuite, tu récupères les instances de tes controls comme je l'ai suggéré

ImageButton myIBSelect = (ImageButton )E.Item.FindControl("IDduBouton");
Literal myText = (Literal) E.Item.FindControl("IDduLiteral");

et ensuite en fonction de tes données, tu renseignes les propriétés de ces
controls.
Dans ton cas, tu rends visible l'un ou l'autre.


Tu peux aussi mettre un PlaceHolder dans ton DataGrid, et y ajouter
dynamiquement les controls.

Frédéric Mélantois


"Steph" a écrit dans le message de
news:
Merci,

mais à quel moment le bouton est créé ?

En fait je dois faire une vérification sur chaque ligne et afficher soit


un
texte soit un ImageButton dans la cellule. Et si c'est un ImageButton, je
dois exécuter une action sur le clic de cet imagebutton.

Est-ce possible ?

Merci



"Frederic Melantois" a écrit dans le message de
news: co21sg$n1n$
> Bonjour,
>
> Votre code serait peut-être mieux écrit comme ceci ?
>
> <code>
>
> public void DataGridListe_ItemDataBound(object Source,
> DataGridItemEventArgs
> E)
> {
> ImageButton myIBSelect (ImageButton )E.Item.FindControl("IDduBouton");
> myIBSelect.ImageUrl = "~/images/select.jpg";
> myIBSelect.Click += new ImageClickEventHandler(AfficheInfo);
>
> </code>
>
> Frédéric Mélantois
>
>
> "Steph" a écrit dans le message de
> news:
>> Salut,
>>
>> je crée un contrôle ImageButon dans une cellule d'un datagrid. Je
>> souhaite
>> lui affecter un eventHandler mais lorsque je clique, ce dernier n'est
> jamais
>> utilisé ? qu'ai je donc oublié ?
>>
>> Voici le code
>>
>> ... dans le ItemDatabound du datagris=d ...
>> ImageButton myIBSelect = new ImageButton();
>> myIBSelect.ImageUrl = "~/images/select.jpg";
>> myIBSelect.Click += new ImageClickEventHandler(AfficheInfo);
>> ...
>> // mon handler
>> private void AfficheInfo(object sender,


System.Web.UI.ImageClickEventArgs
> e)
>> {
>> Response.Write("Clic intercepté!");
>> }
>>
>>
>> Merci pour votre aide
>>
>> St
>>
>>
>
>




Avatar
Steph
Merci pour le coup de main.
Tout fonctionne à présent :-))

Bonne journée

"Frederic Melantois" a écrit dans le message de
news: co42oa$7rh$

Le bouton est créé dans ta page design dans le datagrid ! Dans ton premier
code (ImageButton myIBSelect = new ImageButton();), tu crées une instance
d'un bouton qui n'est pas rendu du tout.

Je te suggère par exemple de placer un control Literal et ton Bouton (tu
en
profites pour y mettre l'évênement Click à moins que celui change en
fonction de tes données) dans le design de ton datagrid

Ensuite, tu récupères les instances de tes controls comme je l'ai suggéré

ImageButton myIBSelect = (ImageButton )E.Item.FindControl("IDduBouton");
Literal myText = (Literal) E.Item.FindControl("IDduLiteral");

et ensuite en fonction de tes données, tu renseignes les propriétés de ces
controls.
Dans ton cas, tu rends visible l'un ou l'autre.


Tu peux aussi mettre un PlaceHolder dans ton DataGrid, et y ajouter
dynamiquement les controls.

Frédéric Mélantois


"Steph" a écrit dans le message de
news:
Merci,

mais à quel moment le bouton est créé ?

En fait je dois faire une vérification sur chaque ligne et afficher soit


un
texte soit un ImageButton dans la cellule. Et si c'est un ImageButton, je
dois exécuter une action sur le clic de cet imagebutton.

Est-ce possible ?

Merci



"Frederic Melantois" a écrit dans le message
de
news: co21sg$n1n$
> Bonjour,
>
> Votre code serait peut-être mieux écrit comme ceci ?
>
> <code>
>
> public void DataGridListe_ItemDataBound(object Source,
> DataGridItemEventArgs
> E)
> {
> ImageButton myIBSelect > (ImageButton )E.Item.FindControl("IDduBouton");
> myIBSelect.ImageUrl = "~/images/select.jpg";
> myIBSelect.Click += new ImageClickEventHandler(AfficheInfo);
>
> </code>
>
> Frédéric Mélantois
>
>
> "Steph" a écrit dans le message de
> news:
>> Salut,
>>
>> je crée un contrôle ImageButon dans une cellule d'un datagrid. Je
>> souhaite
>> lui affecter un eventHandler mais lorsque je clique, ce dernier n'est
> jamais
>> utilisé ? qu'ai je donc oublié ?
>>
>> Voici le code
>>
>> ... dans le ItemDatabound du datagris=d ...
>> ImageButton myIBSelect = new ImageButton();
>> myIBSelect.ImageUrl = "~/images/select.jpg";
>> myIBSelect.Click += new ImageClickEventHandler(AfficheInfo);
>> ...
>> // mon handler
>> private void AfficheInfo(object sender,


System.Web.UI.ImageClickEventArgs
> e)
>> {
>> Response.Write("Clic intercepté!");
>> }
>>
>>
>> Merci pour votre aide
>>
>> St
>>
>>
>
>