我有一个控件,上面有几个更新面板。然后将控件加载到(非模态)JQueryUI 对话框中。在大多数情况下,这可以正常工作——我可以让控件上的按钮触发和更新控件的部分,这些部分最终将作为 JQueryUI 对话框的一部分显示给用户。
当事情混在一起时,问题就来了。在我的主页上,有一个链接可以重新打开主对话框并调用它以前的状态。最终这调用了一个简单的javascript:
function openDialog(id, name)
{
// Tell asp.net code behind what we're trying load
var formField = document.getElementById('<%= userControl1.idField.ClientID %>');
formField.value = id;
// Tell asp.net to refresh the contents
__doPostBack('<%= userControl1.documentUpdatePanel.ClientID %>', '');
$("#dialog-editDoc").dialog
({
width: 400,
resizable: true,
open: function ()
{
// This is impotant for ASP.NET
$(this).parent().appendTo($("form:first"));
$(this).dialog("option", "title", "Editing Document - " + name);
}
});
}
这似乎工作正常,我PageLoad()
在我的用户控件代码中得到了事件,并且我能够适当地更改内容。但是,当对话框出现时,刚刚更改为PageLoad()
.
奇怪的是,单击用户控件上的按钮,事件正确触发,并且我能够在显示对话框时进行更改。在显示之前(或显示状态)让对话框“更改状态”似乎有些困难。
那么,有没有人知道解决这个问题的方法?我尝试过的其他事情:
- 进入函数——同样的问题
__doPostBack(...)
。open:
编辑:
以下是用户控件在页面上的加载方式(它不在更新面板中,更新面板在文档编辑器控件内):
<div id="dialog-editDoc" class="dialogContent" title="{Context Sensitive}">
<mylib:DocEditor ID="userControl1" runat="server" />
</div>