Web user control dans un gridview, postback problème Container.DataItem

Signaler
Messages postés
1
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
24 juillet 2007
-
Messages postés
219
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
7 septembre 2009
-
Bonjour,

Je dois dire d'habite je trouve en cherchant mais là ! je suis sur un os. Merci d'avance.
Ma question est très simple j'ai un gridview où je place un web user control dans un templatefield. Voici un exemple :

<asp:GridView
ID= "GridView1"
runat="server"
DataSourceID="SqlDataSource1"
AutoGenerateColumns="False">

<Columns>

<asp:TemplateField>

<ItemTemplate><

asp:TextBoxID="TextBox1"Text='<%# Bind("music_track_filename") %>'runat="server"></asp:TextBox>

<TT:test
ID="test"
runat="server"
prop='<%# Bind("music_track_filename") %>
'
Visible="true"
/>

</ItemTemplate>

</asp:TemplateField>

</Columns>
Et un bouton  ....

<asp:Button
ID="Button1"
runat="server"
Text="Button"
/>

Voici le ascx :

Imports

System

Imports System.ComponentModel

Imports System.Web.UI

Imports System.Web

Imports System.Web.UI.WebControls
Partial

Class test

Inherits System.Web.UI.UserControl

Dim _properties
As
StringTrue), Category(
"Appearance"), DefaultValue(
"")>
Property [prop]()
As
String

   Get
   Return _properties

   End
Get

   Set(
ByVal Value
As
String)
   _properties = Value

End
Set

End
Property

Protected
Sub Page_PreRender(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles
Me.PreRender

   Dim Controltest
As TextBox =
New TextBox
   Controltest.Text = _properties

   Me.Controls.Add(Controltest)

End
SubEnd

Class

Mon problème est le suivant, je charge la page, nickel ... les valeurs se place dans le textbox "TextBox1" et dans le user control .. mais lorsque je clique sur le bouton ... ! je garde le viewstate de mon textbox1 mais pas mon user control !...

certainement évident ... mais pas moyen de trouver la solution ..

j'ai essaye plein de chose, je pense que le problème proviens du fait que c'est un control ajouté dans un user control .... mais bon je voudrais pouvoir y arriver.

Merci d'avance.

1 réponse

Messages postés
219
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
7 septembre 2009

tu dois utiliser le ViewState dans tes déclarations de variables, et supprimer ta variable private :

Property [prop]() AsString

   Get
   Return ViewState["myProperty"]
   EndGet

   Set(ByVal Value AsString)
   ViewState["myProperty"] = Value
   EndSet

Vérifies le null pour le return et adapte, je fais ca de tete et je pratique que C#.

<hr />
I love .net