2012-03-28 68 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