jquery uiダイアログを使用していて、テキストボックスとボタンが表示されるように設定しています。基本的に、テキストボックスに何かを入力してボタンをクリックすると、データベースからいくつかの値が取得され、ラジオボタンリストが読み込まれます。HTMLマークアップは次のようになります。
<div id="dialog" title="Select Address">
<asp:UpdatePanel ID="upNewUpdatePanel" UpdateMode="Conditional" ChildrenAsTriggers="true" runat="server">
<ContentTemplate>
<div id="search" style="width:100%; text-align:center;">
<asp:TextBox ID="txtFindSearch" runat="server"></asp:TextBox>
<asp:Button ID="btnFindSearch" runat="server" Text="Search"
onclick="btnFindSearch_Click" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
<div id="searchresults" style="width:100%;">
<asp:RadioButtonList ID="rbSearchResults" runat="server" AutoPostBack="True"
CellSpacing="10" RepeatColumns="4" RepeatDirection="Horizontal"
ToolTip="Select an address."
onselectedindexchanged="rbSearchResults_SelectedIndexChanged">
</asp:RadioButtonList>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
背後のコードでは、次のように選択した値を取得できます。
protected void rbSearchResults_SelectedIndexChanged(object sender, EventArgs e)
{
Label1.Text = rbSearchResults.SelectedValue.ToString();
}
私の問題は、ラジオボタンリストから選択した後、jqueryダイアログボックスを閉じる方法がわからないことです。私はjqueryでこのようなことをしようとしました:
$('#MainContent_rbSearchResults input').click(function () {
$('#dialog').hide();
});
そこにアラートをスローしても、アラートは表示されません。ページソースを表示すると、divコンテナは表示されますが、radiobuttonlistが表示されません。これは、更新パネルにラップされているためでしょうか。
値を取得した後(radiobuttonlistをクリック)、jquery uiダイアログを閉じるにはどうすればよいですか?
編集
私はこれで試しました:
protected void rbSearchResults_SelectedIndexChanged(object sender, EventArgs e)
{
Label1.Text = rbSearchResults.SelectedValue.ToString();
this.txtShipToName.Text = Label1.Text;
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "closedialog", "$(function(){$('#dialog').dialog('close');});", true);
}
これでダイアログが閉じますが、テキストボックスtxtShipToNameが値を取得することはありません。デバッグをステップスルーしても、値が割り当てられているのがわかります。