Champ caché de perdre de sa Valeur sur la publication
J'ai un ascx page où je suis à l'aide d'un champ caché pour stocker la valeur de la liste déroulante, comme il est généré en utilisant une adresse de google finder. Mon problème est que lorsque je tente de stocker la valeur directement dans le champ caché:
hfDdlVerifyID.Value = ddlVerifySS.SelectedValue;
dans le cas d'un clic sur un bouton, la valeur est stockée, mais sur la publication est encore perdu. Alors que, si j'essaie d'utiliser Scriptmanager de le faire, rien n'est stocké.
getBuild.AppendLine("$get('" + hfDdlVerifyID.ClientID + "').value = $get('" + ddlVerifySS.ClientID + ").value;");
ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "storeHidden", getBuild.ToString(), true);
// Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "storeHidden", getBuild.ToString(), true);
string test = hfDdlVerifyID.Value.ToString();
La ascx page :
<asp:UpdatePanel ID = ddlUpdate runat="server">
<ContentTemplate>
<asp:Panel ID="pVerify" runat="server">
<br />
<fieldset>
<legend>
<asp:Literal ID="lVerify" runat="server" />
</legend>
<asp:CheckBox
ID ="cbVerify"
runat ="server"
Text ="Use the value from the following list, (Uncheck to accept address as it is)."
Checked ="true" />
<br />
<asp:DropDownList ID="ddlVerifySS" runat="server"
onselectedindexchanged="ddlVerifySS_SelectIndexChange" />
<asp:HiddenField id="hfDdlVerifyID"
runat ="server" />
</fieldset>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
<padrap:Button ID ="bVerify"
runat ="server"
CssClass ="btn"
OnClick ="bVerify_Click"
Text ="Verify Address" />
<asp:Button ID ="btnSubSite"
runat ="server"
text ="Save"
CssCLass ="btn"
OnClick ="save_btn_Click_subSite"
onLoad="ddlVerify_Load" />
OriginalL'auteur Ratan | 2010-06-07
Vous devez vous connecter pour publier un commentaire.
Vous devriez envisager d'utiliser Viewstate.
Espérons que cela aide
http://msdn.microsoft.com/en-us/library/bb386448.aspx#Y2000
OriginalL'auteur Anubhav Ranjan
L'asp bouton qui invoque l'appel ajax devrait être en ajax panneau. Placer le bouton dans le panneau de mise à jour puis essayez à nouveau. J'espère que vous allez obtenir la valeur du champ caché.
OriginalL'auteur Adil
En général, quand j'ai des problèmes comme celui-ci(après le post de retour, j'ai perdu les données) je finis de découvrir que j'ai oublié de mettre la fonction dans laquelle j'ai réinitialiser les données sur les champs à l'intérieur d'un
if(!IsPostback)
OriginalL'auteur Nuno Agapito
Votre ce code fonctionne si vous retirez de l'UpdatePanel?
Aussi, le code que vous avez posté pour le getBuild appel manque un guillemet simple fermeture de l'appel à $obtenez de l'élément ddlVerifySS.ClientID. Est-ce une faute de frappe en entrant ici, ou un problème dans votre code? Si c'est le dernier, cela pourrait expliquer pourquoi vous ne verrez pas la valeur copiée lorsque vous utilisez le gestionnaire de script.
OriginalL'auteur Steven Raines
Dans le passé, j'ai eu un peu assez complexe à des pages web qui largement utilisé Ajax. J'aime HiddenFields en raison de la facilité d'utilisation et la fonctionnalité intellisense. Dans un cas, récemment, j'ai trouvé que, comme vous, mon HiddenField étais en train de perdre de la valeur sur les publications. Alors j'ai triché un peu...
J'ai utilisé le HiddenFields événement Init et Décharger événement pour initialiser et de capturer sa valeur dans la Session. Une meilleure solution serait de soit réparer pourquoi il perdait de l'état ou de passer à la Session. J'ai été en utilisant la valeur de manipuler un Multiview ActiveViewState propriété dans un tas de domaines différents et ne veulent pas avoir à recâbler ou faire un en profondeur de la trace de débogage. Le temps a été un problème.
Donc la première le chargement de la page le HiddenField est initialisé avec la valeur 0, puis sur d'autres initialisations il charge la valeur de la Session.
Cela peut ne pas être la plus jolie ou la plus intelligente de la solution. Mais cela a fonctionné pour ma situation.
~Ian
OriginalL'auteur Ian B
J'ai eu le même problème il ya quelques semaines. Je l'ai résolu en utilisant des textbox et CSS. Essayez d'utiliser asp:TextBox et de la propriété CSS display: none;
Ce n'est que mon avis et il m'a aidé.
Espère que ça va vous aider!
OriginalL'auteur Slava