2011-03-29 38 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關閉自己,也許這並不理想,但它可能會對問題進行分類。