HiddenField Valeur de la propriété de retour à vide lors de la “publication” à l'aide d'AJAX UpdatePanel
J'ai travaillé avec ce problème pendant des heures et ne peux pas trouver une solution.
Maintenant, je travaille dans une Application web et mon premier problème a été que j'ai voulu créer un XML dynamiquement...Puis j'ai réalisé qu'après la publication, le Xml a été resseting. Ensuite, j'ai juste bien, "ok, permet de créer un HiddenField et conserver les nœuds en tant que chaîne de caractères dans la HiddenField valeur de la propriété, de sorte que à la fin je viens de créer un nouveau XmlElement, créer un fragment de document avec un InnerXml de la HiddenField.De la valeur et de fixer le fragmentto XmlElement"...Mais HiddenField.La valeur est également réinitialisée chaque fois que vous cliquez sur un bouton... je viens de tester cette méthode avec une étiquette et IL FONCTIONNE...
Fondamentalement, j'ai une page divisée en deux avec la AJAXControlToolKit TabContainer de Contrôle. La première forme est pour l'utilisateur de données principal, tandis que le second onglet a une forme qui est destiné à remplir le formulaire autant de fois que l'utilisateur veut, car sa pour le stockage des membres de la famille. Ainsi, le processus consiste à remplir un membre de la famille de données, cliquez sur le bouton et de le stocker dans le HiddenField.Valeur, remplir le deuxième membre de la famille de données et cliquez sur nouveau pour ajouter un nouveau membre de la famille et de les enchaîner à la HiddenField.De la valeur...Mais j'ai réalisé que, après le premier clic sur le Chargement de la Page, la méthode d'HiddenField.La valeur est de nouveau vide...
Peut-être pas si important que cela, mais Sur l'UpdatePanel il y a juste Le bouton et une zone de liste pour indiquer certaines données de tous les membres de la famille que l'utilisateur a enregistrées, de sorte que le seul objet qui actualise sur le clic est la zone de liste.
Que je viens de dire, si au lieu d'utiliser un HiddenField.Valeur-je utiliser une Étiquette.Le Texte, Tout Fonctionne...
<%@ Page Language="c#" MasterPageFile="/Plantilla.master" AutoEventWireup="true" Inherits="alta_personal_interno" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="cc1" %>
<asp:Content runat="server" id="contentDefault" ContentPlaceHolderId="ContentPlaceHolderPagina">
<div align="left">
<table style="width: 100%; background-color: maroon">
<tbody>
<tr>
<td>
<span id="ctl00_ContentPlaceHolder1_lblTitulo" class="EtiquetaMedianoBlanco">
<asp:Label ID="lblTituloPExt" runat="server" Text="Alta de Personal Interno" />
</span>
</td>
</tr>
</tbody>
</table>
</div>
<cc1:TabContainer runat="server">
<cc1:TabPanel runat="server" HeaderText="Titular">
<ContentTemplate>
<--!Code with Form Elements-->
<asp:Button ID="btnAgregarNvo" runat="server" Text="Guardar" onclick="btnAgregarNvo_Click"/>
</ContentTemplate>
</cc1:TabPanel>
<cc1:TabPanel runat="server" HeaderText="Familia">
<ContentTemplate>
<asp:HiddenField runat="server" id="hidFamiliares"></asp:HiddenField>
<!--Code with Form Elements-->
<asp:UpdatePanel runat="server" id="upFamiliares">
<ContentTemplate>
<asp:Button ID="btnAgregarFamiliar" runat="server" Text="Agregar" onclick="btnAgregarFamiliar_Click"/>
<asp:Button ID="btnQuitarFamiliar" runat="server" Text="Quitar" onclick="btnQuitarFamiliar_Click"/>
<br/>
<asp:ListBox runat="server" ID="lbFamiliares"/>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</cc1:TabPanel>
</cc1:TabContainer>
//------------------------------CODE BEHIND------------------------------------
private XmlDocument objXML;
protected void Page_Load(object sender, EventArgs e){
objXML = new XmlDocument();}
protected void btnAgregarFamiliar_Click(object sender, EventArgs e){
XmlElement xmlFamiliar = objXML.CreateElement("familiar");
AddAttribute("nombre",txtNombreF.Text,xmlFamiliar);
AddAttribute("apaterno",txtApF.Text,xmlFamiliar);
hidFamiliares.Value+=xmlFamiliar.InnerXml;}
private void AddAttribute(string name, string val, XmlElement parent){
XmlAttribute at = objXML.CreateAttribute(name);
at.Value = val;
parent.SetAttributeNode(at);}
Juste de l'ajouter, merci
OriginalL'auteur Symphonicmind | 2012-01-18
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr quelle en est la cause, vous pourriez avoir à essayer un simple scénario pour résoudre les problèmes.
Si votre méthode fonctionne avec un
Label
de contrôle, vous pouvez toujours utiliser un invisible au lieu d'unHiddenField
?J'ai eu le même problème et vous la solution a fonctionné pour moi. Je dois dire que c'est très étrange.
OriginalL'auteur Brissles
Peu de deviner.
Mais par les regards du code, lorsque vous soumettez un bouton de l'événement au sein de la
UpdatePanel
, il recharge le panneau, mais il ne recharge pas la valeur de votreHiddenField
, de sorte que lorsque leUpdatePanel
chargement du contenu, il voit toujours leHiddenField
comme vide.Emballage de la
HiddenField
dans le mêmeUpdatePanel
pourrait fonctionner. Ou vous pourriez essayer en l'enveloppant dans son propreUpdatePanel
alors appelUpdatePanel.Update()
au sein de votre bouton de l'événement, s'assurer que leUpdateMode
est fixé à'Conditional'
sur le panneau.OriginalL'auteur Dan Ellis