【发布时间】:2011-03-29 13:03:28
【问题描述】:
我正在玩 EXT.net (ASP.NET),我遇到以下情况:
ParentPage.aspx - 包含一个打开Ext.net“窗口”的按钮;使用 Javascript 完成的弹出窗口。在那个窗口中,我放置了一个 UserControl (Customer.ascx)。该 UserControl 可以创建客户,并且它使用 Ext.NET DirectMethod 在代码隐藏 Customer.ascx.cs 中这样做
Customer.ascx - 包含一些 Ext.net 控件和创建 Customer 对象的代码的 UserControl。
现在,当我调用 DirectMetod CreateNewCustomer 时,将按预期创建客户,但现在我希望 ParentPage 知道此成功(或失败)操作并采取相应措施。
因此,如果操作失败 - 由于某种原因无法创建客户 - 窗口(弹出窗口)应保持原位并显示错误。但如果操作成功,则应关闭窗口并更新/刷新列表。
我不能/应该在 UserControl 中放置任何“OnSuccess”代码,因为 UserControl 并不真正知道它是放置在窗口中还是其他地方,并且它不应该由 UserControl 来决定是否它应该显示或不显示。
所以我需要通知 ParentPage 发生了什么。我的脊椎反应是在 UserControl 中有一个事件,但这当然不起作用,因为它是一个异步操作并且我无法将消息推送到网络浏览器。
也许可以在 UserControl 调用的 ParentPage 中放置一个 JavaScript 方法,但这有点难看。 UserControl 应该能够以“安全方式”通知父页面。它真的不知道Javascript方法是否存在,所以它可能正在调用一个不存在的方法?
我可以尝试哪些方法?
【问题讨论】:
-
我查看了 ScriptManager 并希望在 UserControl 的 DirectMethod 中使用“RegisterStartupScript”。该脚本应检查另一个名为“CustomerReportCallback”的 Javascript 方法,如果存在,则调用该方法。这样我就可以检查父级是否有一个 Javascript 方法,可以在操作成功后用于“回调”。但没有成功 - 似乎“RegisterStartupScript”只能在 Page_Load 中?
标签: javascript asp.net user-controls ext.net