3

Googleアドレスファインダーを使用して生成されたドロップダウンボックスの値を保存するために隠しフィールドを使用しているascxページがあります。私の問題は、非表示フィールドに値を直接保存しようとすると、次のようになることです。

hfDdlVerifyID.Value = ddlVerifySS.SelectedValue;

ボタンがクリックされた場合、値は保存されますが、ポストバック時に再び失われます。一方、Scriptmanager を使用して実行しようとすると、何も保存されません。

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();

ascx ページは次のとおりです。

<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" />
4

6 に答える 6

2

ajax 呼び出しを呼び出す asp ボタンは、ajax パネルにある必要があります。更新パネルにボタンを配置してから、再試行してください。隠しフィールドの値を取得していただければ幸いです。

于 2012-03-31T20:48:47.543 に答える
1

通常、このような問題が発生すると(ポストバック後にデータが失われました)、内部のフィールドにデータをリセットする関数を配置するのを忘れていることに気付きます。if(!IsPostback)

于 2011-06-06T16:50:44.120 に答える
1

Viewstate の使用を検討する必要があります。お役に立てれば

http://msdn.microsoft.com/en-us/library/bb386448.aspx#Y2000

于 2011-06-03T14:50:03.170 に答える
0

過去に、Ajaxを多用したかなり複雑なWebページがいくつかありました。使いやすさとインテリセンスのおかげで、HiddenFieldsが好きです。最近のあるケースでは、あなたのように、私のHiddenFieldがポストバックでその値を失っていることに気づきました。そこで、少し騙しました…HiddenFields InitイベントとUnloadイベントを使用して、Sessionでその値を初期化してキャプチャしました。より良い解決策は、状態が失われた理由を修正するか、セッションに切り替えることです。私はこの値を使用して、さまざまな領域でMultiview ActiveViewStateプロパティを操作していましたが、再配線したり、詳細なデバッグトレースを実行したりする必要はありませんでした。時間は問題でした。

Protected Sub HiddenFieldActiveView_Init(sender As Object, e As System.EventArgs) Handles HiddenFieldActiveView.Init
  If Not Page.IsPostBack Then
    HiddenFieldActiveView.Value = "0"
  Else
    HiddenFieldActiveView.Value = CStr(Session("ActiveViewIndex"))
  End If
End Sub

Protected Sub HiddenFieldActiveView_Unload(sender As Object, e As System.EventArgs) Handles HiddenFieldActiveView.Unload
    Session.Add("ActiveViewIndex", HiddenFieldActiveView.Value)
End Sub

したがって、ページが最初に読み込まれると、HiddenFieldは値0で初期化され、その後の初期化では、Sessionから値が読み込まれます。

これは、最も美しいまたは最も賢い解決策ではないかもしれません。しかし、それは私の状況ではうまくいきました。

〜イアン

于 2011-05-11T10:13:11.907 に答える
0

UpdatePanel を削除すると、このコードは機能しますか?

また、getBuild 呼び出し用に投稿したコードには、アイテム ddlVerifySS.ClientID の $get への呼び出しで単一引用符がありません。これはここに入力したタイプミスですか、それともコードの問題ですか? 後者の場合は、スクリプト マネージャーを使用したときにコピーされた値が表示されない理由が説明されます。

于 2010-10-11T19:47:03.900 に答える
0

私は数週間前に同じ問題を抱えていました。テキストボックスとCSSを使用して解決しました。asp:TextBox と CSS プロパティ display: none; を使用してみてください。

これは私の提案に過ぎず、私を助けてくれました。

それがあなたを助けることを願っています!

于 2012-02-14T17:11:09.550 に答える