begin process at 2012 05 27 21:25:52
  Trouver un code source :
 
dans
 
Accueil > Forum > 

ASP.NET

 > 

WebForms

 > 

WebControl

 > 

GridView Changer un ItemTemplate dans le code behind


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

GridView Changer un ItemTemplate dans le code behind

lundi 16 février 2009 à 14:35:19 | GridView Changer un ItemTemplate dans le code behind

sspizer

Bonjour,
j'ai :
<asp:GridViewID="_grv"OnRowDataBound="Grv_DataBound"runat="server">
<
Columns>
<asp:TemplateField> 
   <ItemTemplate>
      
<asp:TextBoxID="_txt"Value='<%# Eval("Toto") %>'runat="server"/>
   
</ItemTemplate>
</asp:TemplateField>
</Column>
</asp:GridView>

Maintenant j'aimerais dans mon code behind changer le style de ma textbox par exemple:
_txt.ReadOnly = true;

Seulement si on utilise cette synthaxe il ne trouve pas _txt et je veux absolument le faire avant qu'il commence à générer des lignes et donc ne pas le faire dans le OnRowDataBound.

Je dois m'y prendre comment ?
lundi 16 février 2009 à 15:43:43 | Re : GridView Changer un ItemTemplate dans le code behind

shogun_60

Salut,

Pourquoi ne pas le mettre dans la partie aspx comme ceci :

<
asp : GridView ID ="_grv" OnRowDataBound ="Grv_DataBound" runat
="server">
<
Columns
>
< asp : TemplateField >  
   <ItemTemplate
>
      
< asp :TextBox ID ="_txt" Value =' <%# Eval("Toto") %>' runat="server" ReadOnly="true"
/>
   
</ ItemTemplate
>
</ asp : TemplateField
>
</Column>
</asp:GridView>


Sinon essayes l'evenement rowCreated peut-être.
mardi 17 février 2009 à 07:06:27 | Re : GridView Changer un ItemTemplate dans le code behind

RougailSaucisse

bonjour,

Je ne suis pas sur d'avoir bien saisi le "je veux absolument le faire avant qu'il commence à générer des lignes". Tu ne peux bien sur pas faire cela avant de générer les lignes car justement les lignes (et donc les controles inside) n'existent pas encore ^^.
Enfin peu importe, et comme l'a dit shogun tu peux très bien utiliser l'event RowCreated (qui de toute facon sera executé avant le rowdatabound si c'est ce que tu souhaite) comme ceci par exemple:

protected void Grv_RowCreated(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        TextBox tb = e.Row.Cells[0].Controls[1] as TextBox;
        if (tb != null)
            tb.BackColor = System.Drawing.Color.Bisque;
    }
}
mercredi 18 février 2009 à 10:20:37 | Re : GridView Changer un ItemTemplate dans le code behind

sspizer

Je vais essayer d'être plus clair dans ce que je veux faire ^^ :D.
Voila en fait quand je met une textbox dans mon gridview, il va répéter cette textbox pour chaque Objet issu du DataBound.

Par exemple:

Data = 10 Rows.
J'aurai donc 10 fois ma textbox, maintenant imaginons que j'ai envie de changer une propriété de ma textbox dans mon code behind car ça dépend d'un événement qui se passe.

Par exemple quand je reçois en session (Session["mode"] = "ReadOnly"), j'aimerais dans mon code behind changer une propriété de chaque TextBox générée par le gridview, par exemple changer ça propriété ReadOnly = true.
 
Maintenant deux possibilité s'offrent à moi:

1) Utiliser l'évenement OnRowDataBound récupérer dans chaque ligne ma TextBox et changer sa propriété et donc lancer 10 fois l'évenement.

2)Changer la TextBox original avant génération et affecter sa propriété ReadOnly = true avant génération. (cependant je n'arrive pas à y accéder)

Et ce que je cherche à faire c'est justement le 2) ! 

Voila ça devrait vous aider =).
En tout cas merci mille fois pour votre aide.

mercredi 18 février 2009 à 17:34:40 | Re : GridView Changer un ItemTemplate dans le code behind

RougailSaucisse

euh dans ce cas, je dirai ptet de faire un systeme basé sur les thèmes. en fonction de ce que tu recois dans ta variable de session, tu charges un theme.
Puis dans chaque theme tu definis une textbox avec un skinID (dans un theme Textbox sans ReadOnly et dans l'autre avec) et dans ta gridview tu mets la <:asp:Textbox skinId="GvTextBox" .... />. Je ne sais pas si ca marche comme il le faudrait, mais à essayer et tu me diras.
lundi 23 février 2009 à 13:31:34 | Re : GridView Changer un ItemTemplate dans le code behind

sspizer

Pourquoi aller dans la complexité tout ce que je veux c'est accéder au control "_txt" que j'ai dans mon code là et le changer avant que le gridview commence à générer ces lignes.

En gros "_txt" est un modèle et j'aimerais que ce model soit changé avant que le GridView l'utilise.

Et il faut que ça soit fait dans le codebehind.
lundi 23 février 2009 à 16:49:10 | Re : GridView Changer un ItemTemplate dans le code behind

jagxx

Membre Club
Salut,

Essaie de le faire dans l'evenement PreInit de la page.

Jag
lundi 23 février 2009 à 20:37:53 | Re : GridView Changer un ItemTemplate dans le code behind

RougailSaucisse

Je dois mal comprendre la question decidement. comment veux-tu modifier un control qui n'existe pas encore a l'instant t?
Pour y avoir acces, il faut obligatoirement qu'il ait été crée non? (ah moins d'utiliser un systeme de theme comme je disais précédemment)
et étant donné qu'il s'agit d'un control dépendant de ta source de données liées a la datasource comment veux-tu en modifier les propriétés dans le pre-init ou autre event precedent le databound?
Franchement je ne vois pas ce qu'il y a de mal a le faire dans le rowdatabound ou rowcreated, c'est 4 lignes de code.
mardi 24 février 2009 à 10:49:45 | Re : GridView Changer un ItemTemplate dans le code behind

sspizer

Hum l'objet existe bien puisqu'on le visualise dans la page ascx. Il doit y avoir un moyen d'y avoir accès avant que le gridview commence à l'utiliser. Je pense que ca peut marcher dans le rowdatabound mais en fait mon soucis cest ca:

Si on a :
< asp:TextBox ID="_txt" Value='<%# Eval("Toto") %>' runat="server" ReadOnly="true" />


Maintneant on veut pour une raison X qu'il ne bind pas Value!
Si je le faisais dans le RowCreated ou RowDataBound, j'arriverais au moment où il aurait déjà bindé. Alors que si j'y accéde avant génération non seulement j'empeche le binding et en plus ca sera general a toutes les lignes de mon gridview

mardi 24 février 2009 à 11:41:34 | Re : GridView Changer un ItemTemplate dans le code behind

shogun_60

Salut,

A ta place je laisserais Value = "" par défaut.

Ensuite, dans l'evenement RowDataBound de ton GridView je ferais :

Dim TaTextBox As TextBox = gv.Rows(e.Row.RowIndex).FindControl("_txt")
Pour récupérer le control TextBox de ta ligne.

Une fois que tu as récupérer le control tu peux en faire ce que tu veux, par exemple :

If
taCondition = TrueThen

        TaTextBox .Text =

"Ta valeur si True"

Else

        TaTextBox .Text =

"Ta valeur si False"

Voila, j'espère que ca répond à ta question

1 2

Cette discussion est classée dans : asp, code, changer, behind, itemtemplate


Répondre à ce message

Sujets en rapport avec ce message

code behind dans asp.net [ par kenza_sana ] Salut je trouve partotu que le code behind en realite separe le fichier presentation du code donc (html et aspx)alors que je trouve parfois que ca sep ASP.Net avec Code-Behind [ par YomYom ] Cherche perle rare: hébergeur supportant des sites en ASP.Net en code-behind et base SQL server et cerise sur le gateau, à un prix abordable (c'est po ASP.net 2, code behind d'une masterpage [ par lutin2004 ] Bonjour,Je viens de passer à asp.net 2 et j'ai un soucis avec les masterpage.J'ai rajouté la balise codefile, mais il me faut aussi le inherits, mais asp.net et code behind [ par aymdeb ] Bonjour,J'ai un formulaire asp.net et lorsque je clique sur les boutons, les procédures du code behind associées aux boutons ne s'exécute pas.Quelqu'u Template Field en code behind [ par zigxag ] Bonjour !Je voudrais écrire ceci (ASP.net 2) en code behind C# 2, mais je trouve pas comment faire. Comment ajouter un templatefield à un gridview en Code behind et javascript [ par emalio13 ] Bonjour à toutes et à tous,Etant débutante en ASP.net, je rencontre quelques difficultés.En effet, je développe une application avec visual web develo Pb de variables entre ASP.NET et code behind [ par zlorg ] Bonjour, Je voudrais récupérer la valeur d'une variable définie dans mon code behind dans mon code ASP, ça ne fonctionne pas et je ne comprends p ASP.NET - Utilisation DLL C++ - Exception occasionelle [ par savage251 ] Bonjour, je me permet de poter mon problème qui me prend la tête depuis plusieurs semaines... J'ai développé une application ASP.NET en vb.net, dans quel logiciel pour debugger mon code ASP [ par assandre ] Bonjour , je voudrais configurer mon serveur IIS pour qu'il m'affiche les lignes où se situent l'erreur ; si cela n'est pas possible , pouvez vous me debugger son code ASP [ par assandre ] Bonjour , je voudrais savoir quel programme utiliser pour debuger mes codes ASP.


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales