Jquery 对话框中的 UpdatePanel 与 form:first.



我有这个dialog里面有updatepanel,我试图弄清楚SelectedIndexChanged解雇后如何关闭它

    <script>
$("[id*=senderBtnPopup]").click(function () {
            $("#senderDialog").dialog({
                title: "Sender Addresses",
                resizable: true,
                width: 1000,
                dialogClass: 'cssDialog'
            });
            //$("#senderDialog").parent().appendTo(jQuery("form:first"));
            return false;
        });
    </script>

<div id="senderDialog" style="display: none;">
<asp:UpdatePanel runat="server" ID="senderUpdatePanel" UpdateMode="Conditional">
                <ContentTemplate>
                    <asp:GridView runat="server" ID="clientAddresses" CssClass="tablecs"
                        AutoGenerateColumns="false" Width="100%" AllowPaging="true" PageSize="5"
                        OnPageIndexChanging="clientAddresses_PageIndexChanging" AllowSorting="true" OnSorting="clientAddresses_Sorting"
                        DataKeyNames="Id,DefaultAddress" AutoGenerateSelectButton="true"
                        OnSelectedIndexChanged="clientAddresses_SelectedIndexChanged" 
                        OnRowDataBound="clientAddresses_RowDataBound">
                        <Columns>
                            <asp:BoundField DataField="ContactName" HeaderText="Name" SortExpression="ContactName" />
                            <asp:BoundField DataField="PhoneNo" HeaderText="Phone" SortExpression="PhoneNo" />

                            <asp:TemplateField>
                                <ItemTemplate>
                                    <asp:CheckBox runat="server" ID="defaultAddressChk" AutoPostBack="true" OnCheckedChanged="defaultAddress_CheckedChanged" />
                                </ItemTemplate>
                            </asp:TemplateField>
                        </Columns>
                    </asp:GridView>
                </ContentTemplate>
            </asp:UpdatePanel>
</div>

protected void clientAddresses_SelectedIndexChanged(object sender, EventArgs e)
        {
           //some lines..
//this one doesn't work.
            senderUpdatePanel.Update();
            //ScriptManager.RegisterStartupScript(this, GetType(), "dialog", "$(function(){closeDialog();});", true);
        }

你可以做这样的事情:

在客户端脚本中添加更新面板的结束请求句柄:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);

将参数添加到选定索引中的脚本管理器已更改服务器端句柄

protected void clientAddresses_SelectedIndexChanged(object sender, EventArgs e)
{
  //some lines..
  ScriptManager1.RegisterDataItem(clientAddresses, "OnSelectedIndexChanged");
}

管理结束请求客户端

function EndRequestHandler(sender, args)
            {
                 var dataItems = args.get_dataItems()['<%= clientAddresses.ClientID %>'];
                 if (dataItems != null && dataItems == 'OnSelectedIndexChanged')
                 //close here your modal
                 $(function(){closeDialog();});
            }

最新更新