2011-03-29 71 views
0

所以我玩弄EXT.net(ASP.NET),我有以下情况:asp.net/ext.net:UserControl通知父母操作成功或失败?

ParentPage.aspx - 包含打开一个Ext.net“窗口”的按钮;一个使用Javascript完成的Popup。在那个窗口中,我放置一个UserControl(Customer.ascx)。这种用户控件可以创造顾客,它并因此使用Ext.NET DirectMethod在代码隐藏,Customer.ascx.cs

Customer.ascx - 包含一些Ext.net控件和代码来创建客户的用户控件目的。

现在,当我拨打DirectMetod CreateNewCustomer时,Customer按预期方式创建,但现在我希望ParentPage知道这个成功(或失败)的操作并采取相应的行动。

因此,如果操作失败 - 客户因某种原因无法创建 - 窗口(弹出窗口)应保持原位并显示错误。但是,如果操作成功,那么窗口应该关闭,并且应该更新/刷新列表。

我不能/应该在UserControl中放置任何“OnSuccess”代码,因为UserControl并不真正知道它是否放置在Window或其他地方,并且它不应该由UserControl来决定是否应该显示或者不。

所以我需要通知父页面发生了什么。我的脊柱反应是在用户控件中有一个事件,但这当然没有工作,因为它是一个异步操作,我不能将消息推送到Web浏览器。

也许你可以在UserControl调用的父页面中放置一个Javascript方法,但这有点丑陋。 UserControl应该能够以“安全的方式”通知父页面。它不知道Javascript方法是否存在,所以它可能会调用一个不存在的方法?

任何想法,想法等,将不胜感激=)

+0

我已经看过ScriptManager,并想在我的DirectControl中的UserControl中使用“RegisterStartupScript”。该脚本应检查另一个名为“CustomerReportCallback”的Javascript方法,如果存在,请调用该方法。这样我可以检查Parent是否有一个Javascript方法,可以在操作成功后用于“回调”。但没有成功 - 看起来“RegisterStartupScript”只能在Page_Load中? – Ted 2011-03-29 14:40:40

回答

0

现在,当我打电话DirectMetod CreateNewCustomer创建客户如预期,但现在我想的ParentPage知道这成功(或失败)操作并据此采取行动。

所以,如果操作失败 - 客户不能创建一些 的原因 - 窗口(弹出)应保持原位,并应显示一个错误 。

我将如何做到这一点,将是下列属性适用于我DirectMethod:

[DirectMethod(ShowMask = true, SuccessFn = "showSuccessMessage", FailureFn = "showFailureMessage", Msg = "Creating Customer...", RethrowException = true)] 

,然后写客户端JS功能的成功DirectMethod的/失败,一个像你说的,要关闭窗口,可以这样做,以便如果该窗口不存在,则当您将UC放在其他位置时,它不会做任何事情以避免任何异常情况。

不幸的是这迫使UC关闭自己,也许这并不理想,但它可能会对问题进行分类。