2012-01-18 22 views
4

私はこの問題を数時間にわたって解決し、解決策を見つけることができませんでした。 今私はWebアプリケーションで作業しています。私の最初の問題はXMLを動的に作成したかったということでした...そして、ポストバック後にXMLが再設定されていることに気がつきました。しかし、私はちょうど "OK、HiddenFieldを作成し、HiddenFieldの値プロパティに文字列としてノードを保存しておきます。最後に、新しいXmlElementを作成し、HiddenField.ValueのInnerXmlでドキュメントフラグメントを作成し、フラグメント化されたXmlElement "...しかし、HiddenField.Valueもボタンのクリックをリセットします...私はラベルとIT WORKSでこのメソッドをテストしました...HiddenField ValueプロパティAJAX UpdatePanelを使用している "ポストバック"のときに空白に戻る

基本的に私は2つのページをAJAXControlToolKit TabContainerコントロール。最初のフォームはユーザーのメインデータ用ですが、2番目のタブは、フォームをユーザーが望む数だけフォームを入力するように意図されたフォームを持ち、家族のメンバーを格納するためです。したがって、家族のメンバーデータを入力し、ボタンをクリックしてHiddenField.Valueに格納し、2番目のファミリメンバーデータを入力してもう一度クリックして新しいファミリメンバーを追加し、HiddenField.Valueに連結するプロセスですロードページメソッドの最初のクリック後、HiddenField.Valueが再度空白になっていることに気付きました。

多分それほど重要ではないかもしれませんが、UpdatePanelにはボタンとリストボックスがあります。ユーザーが保存した家族のメンバーであるため、クリックで更新される唯一のオブジェクトはリストボックスです。

代わりに私がLabel.Text、すべての動作を使用HiddenField.Valueを使用している場合、私はちょうど、言ったように...

<%@ 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);} 
+1

説明するのではなく、コードを表示してください。 – Brissles

+0

ちょうどそれを追加しました、ありがとう – Symphonicmind

答えて

7

私はそれを引き起こしているものをわかりませんよ、トラブルシューティングのために簡単なシナリオを試す必要があります。

Labelコントロールではメソッドが機能する場合は、HiddenFieldの代わりに不可視のメソッドを使用できますか?

<asp:Label runat="server" id="hidFamiliares" style="display:none;"/> 
+0

これは私の必要と同じように動作します...しかし、私はまだHiddenField does notの仕事で混乱しています... 2つのテストの間にadditinalラインはありません... – Symphonicmind

+0

私は同じ問題を抱えていました。あなたのソリューションは私のために働いた。これは非常に奇妙だと言わなければならない。 –

1

推測のビット。

しかし、あなたはUpdatePanel以内にボタンイベントを送信すると、コードのルックスで、それはパネルをリロードするが、それはあなたのHiddenFieldの値をリロードしませんので、ときUpdatePanelコンテンツが読み込まれると、それはまだ見てHiddenFieldが空です。

HiddenFieldを同じUpdatePanelで囲んでも動作する可能性があります。または、自分でUpdatePanelにラップしようとすると、UpdateModeがパネルの'Conditional'に設定されていることを確認して、ボタンイベント内でUpdatePanel.Update()に電話してください。

+0

これを数秒で試してみましょう...ラベルのTextプロパティは、HiddenFieldのValueプロパティとは違っていますか? – Symphonicmind

関連する問題