2012-03-28 72 views
0

我有一個問題我試圖從模態彈出窗口設置父窗口。從模態彈出窗口設置父窗體中的控制文本

雖然我發現從模式彈出與下面的代碼 DirectCast(Parent.Page.Form.FindControl("ContentPlaceHolder1").FindControl("myAccordion").FindControl("txtTo"), TextBox).Text = str

這是被稱爲上按一下按鈕,當用戶完成從CheckBoxList的選擇控制。

當父頁面再次顯示時,雖然文本框是空的。

我的用戶控件的場景是用戶要從複選框列表中選擇一個電子郵件列表。

當完成點擊後,需要將選定的電子郵件轉發到父網頁。

然後在這種情況下,文本框將填充用戶選擇的電子郵件。

+0

哪裏是你的ModalPopupExtender定位和你在哪裏需要訪問文本框? – 2012-03-28 08:01:25

+0

它在用戶控件中,並且用戶控件的父級將位於文本框所在的位置 – Enzero 2012-03-28 08:29:50

+0

因此,您的usercontrol中有一個CheckBoxList'SelectedIndexChanged'事件,要關閉該控件並通知「開啓者」該值爲選擇哪一個必須顯示在該頁面的文本框中? TextBox中顯示了哪些信息? (要求提供有意義的答案) – 2012-03-28 08:35:49

回答

0

您應該在您的UserControl中爲ListBox中的選定項目提供公共財產。這可以很容易地從頁面中檢索(或設置)它。

您還應聲明可從列表框'SelectedIndexChanged事件中引發的事件。這樣頁面就可以處理這個事件,並相應地設置文本框的文本。

例如(在用戶控件與ModalPopupExtender):

Public Class PopupControl 
    Inherits System.Web.UI.UserControl 

    Public Event ItemChanged(ByVal popup As PopupControl) 

    Public Property SelectedItem As String 

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) 
     Dim lb = DirectCast(sender, ListBox) 
     Me.Visible = False 

     Me.SelectedItem = lb.SelectedItem.ToString() 
     RaiseEvent ItemChanged(Me) 
    End Sub 
End Class 

在頁面:

Protected Sub PopupItemChanged(ByVal popup As PopupControl)Handles PopupControl1.ItemChanged 
    Me.txtTo.Text = popup.SelectedItem 
End Sub 
+0

我嘗試了您提供的代碼並且文本框仍爲空 – Enzero 2012-03-28 09:26:46

+0

@Enzero:您的頁面的文本框位於何處?它是否在任何類型的數據綁定控件(如FormView)中,您正在從數據庫重新綁定回發(在Page_Load中的f.e。)?它在UpdatePanel中嗎?然後,您可以嘗試將UpdateMode設置爲'Conditional'並在更改文本後從代碼隱藏中調用'UpdatePanel.Update()'。 – 2012-03-28 09:52:34

+0

當我第一次問這個問題時,可以看到文本框處於手風琴中。 – Enzero 2012-03-28 09:58:02