Créé dynamiquement DropDownList perd ListItems sur la Publication
J'ai une page qui contient quelques de créer dynamiquement des contrôles (zone de texte et DropDownList). Lorsqu'une publication se produit, les zones de texte conserver leurs valeurs, mais la DropDownLists perdre leur ListItems.
C'est assez déroutant, depuis le niveau de la page DropDownList garde également son ListItems. Quelqu'un peut-il voir quel est le problème avec le code ci-dessous?
Toute aide dans la résolution de ce problème serait grandement apprécié.
<%@ Page Language="VB"%>
<script runat="server">
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs)
If Not Page.IsPostBack Then
ddlFixed.Items.Add(New ListItem("12", "13"))
ddlFixed.Items.Add(New ListItem("14", "15"))
End If
Dim i As Integer
For i = 0 To 3
Dim ddl As New DropDownList
ddl.ID = "ddlPage" & i
ddl.EnableViewState = True
If Not Page.IsPostBack Then
ddl.Items.Add(New ListItem("12", "13"))
ddl.Items.Add(New ListItem("14", "15"))
End If
pnlDynamic.Controls.Add(ddl)
Dim txtBx As New TextBox
txtBx.ID = "txtPage" & i
If Not Page.IsPostBack Then
txtBx.Text = "Preset"
End If
pnlDynamic.Controls.Add(txtBx)
Next
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server" enableviewstate="true">
<div>
<br />
<br />
<a href="Default.aspx">Get-Request</a>
<br />
<br />
<asp:Panel runat="server" ID="pnlDynamic" EnableViewState="true" />
<br />
<br />
<asp:DropDownList runat="server" ID="ddlFixed" />
<asp:Button runat="server" ID="btn" Text="Postback"/>
</div>
</form>
</body>
</html>
OriginalL'auteur schudel | 2009-03-08
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la solution qui me permettra de garder le viewstate à travers les publications.
C'est à l'appel TrackViewState de la ItemCollection.
Merci à tous pour votre aide.
C'est la solution de travail:
OriginalL'auteur schudel
Un DDL va maintenir ses éléments et de sélection lors de l'état d'affichage est activé. Une zone de texte s'entretenir son contenu indépendamment de l'état d'affichage depuis le html résultant est écrit sur le serveur sur une publication.
Je trouve courious que vous avez tous ces viewstate déclarations de votre code et de balisage.
L'un des plusieurs choses qui se passe:
pourquoi toutes les manipulations de l'état d'affichage? essayez juste de l'aide de tous les paramètres par défaut.
Merci. L'idée était de discurage 'essayez d'activer le viewstate commentaires. J'ai commencé sans tous les EnableViewStates et ça ne marchait pas, alors soit.
pourquoi ne pas u suffit d'ajouter votre directive @page afin que nous puissions le voir
OriginalL'auteur andleer
Peut-être avez vous besoin de l'activer explicitement l'état d'affichage de ces DropDownLists...
EDIT: c'est Ce que je veux dire par mon dernier commentaire...
Affichage de la liste des Éléments n'ont pas de propriété viewstate. Vous ne pouvez manipuler le viewstate sur le DDL.
Merci Andrew... je pense à mon actuel de codage et dit ListView... même pas liés 🙂
Merci. Mais j'ai déjà de définir explicitement le EnableViewState sur le de créer dynamiquement des DDLs de Vrai.
Je fais toujours de mon Chargement logique sur OnPageLoad... la première fois. Peut-être que le Panneau est en modifiant vos paramètres? (Je n'ai jamais utilisé un Panneau dans mon ASP.net jamais de projets... )
OriginalL'auteur Romias
J'ai toujours utiliser
Page_Load
et n'ont jamais de problèmes de ce genre. Peut-être quelque chose que vous pourriez considérer.De manière générale, j'lier des données à des contrôles la première fois le chargement de la page, et après cela, que Viewstate poignée de publications etc. Notez qu'ils vous suggère de lier les données au cours de
Page_Load
...Découvrez http://support.microsoft.com/kb/305141
OriginalL'auteur inspite
Les éléments de la liste dans un DropDownList ne sont pas stockées dans l'état d'affichage. Vous devrez les ajouter sur chaque publication.
Ce qui est stocké dans l'état d'affichage est l'index sélectionné - ie. la "valeur" du contrôle.
Edit: eh Bien, il semble que j'ai appris quelque chose aujourd'hui. Je me tiens à corriger 🙂
pas correct. ddl éléments sont maintenus en état d'affichage. ils ont seulement besoin d'être ajouté lors de la charge initiale.
OriginalL'auteur Tor Haugen