2012-03-28 14 views
0

Ich habe ein Problem Ich versuche, das übergeordnete Textfeld aus dem modalen Popup zu setzen.Steuertext in übergeordnetem Formular aus modalem Popup setzen

Obwohl ich die Kontrolle aus dem modalen Popup mit dem folgenden Code gefunden DirectCast(Parent.Page.Form.FindControl("ContentPlaceHolder1").FindControl("myAccordion").FindControl("txtTo"), TextBox).Text = str

Diese auf dem Knopf klicken aufgerufen werden, wenn der Benutzer fertig ist aus dem CheckBoxList auswählen.

Wenn die übergeordnete Seite erneut angezeigt wird, obwohl das Textfeld leer ist.

Das Szenario meiner Benutzerkontrolle ist, dass ein Benutzer aus einer Checkbox-Liste auswählen soll, die eine Liste von E-Mails ist.

Wenn fertig, wurde geklickt, dann ist es erforderlich, dass die ausgewählten E-Mails an die übergeordnete Webseite weitergeleitet werden.

Dann wird die To Textbox in diesem Fall mit den E-Mails gefüllt, die der Benutzer ausgewählt hat.

+0

Wo ist Ihr ModalPopupExtender befindet und wo müssen Sie die Textbox zugreifen? –

+0

Es befindet sich in einem Benutzersteuerelement und das übergeordnete Element des Benutzersteuerelements ist wo das Textfeld befindet – Enzero

+0

So haben Sie ein CheckBoxList 'SelectedIndexChanged' Ereignis in Ihrem Benutzersteuerelement, möchten das Steuerelement schließen und den" Öffner "informieren, dass ein Wert war ausgewählt, die in einer TextBox auf dieser Seite angezeigt werden müssen? Welche Art von Informationen werden in der TextBox angezeigt? (Bitte um eine aussagekräftige Antwort) –

Antwort

0

Sie sollten eine öffentliche Eigenschaft in Ihrem UserControl für das ausgewählte Element in der ListBox bereitstellen. Dies erleichtert das Abrufen (oder Festlegen) von der Seite.

Sie sollten auch ein Ereignis deklarieren, das Sie vom Ereignis "SelectedIndexChanged" der ListBox auslösen können. Auf diese Weise kann die Seite dieses Ereignis behandeln und den Text der TextBox entsprechend einstellen.

Zum Beispiel (in Usercontrol mit 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 

In Seite:

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

Ich habe den von Ihnen angegebenen Code ausprobiert und die Textbox ist noch leer – Enzero

+0

@Enzero: Wo befindet sich die Textbox Ihrer Seite? Ist es in irgendeiner Art von datengebundenen Kontrolle (wie FormView), die Sie von der Datenbank auf Postbacks (z. B. in PageLoad) zurückbinden? Ist es in einem UpdatePanel? Dann könnten Sie versuchen, seinen UpdateMode auf 'Conditional' zu setzen und 'UpdatePanel.Update()' von Codebehind aufzurufen, nachdem Sie den Text geändert haben. –

+0

Die Textbox ist in einem Akkordeon, wie man sehen kann, als ich die Frage zum ersten Mal stellte. – Enzero