2009-09-11 9 views
1

J'ai un contrôle de l'assistant dans lequel j'ajoute un contrôle utilisateur contenant un tableau simple avec certains champs de saisie en fonction de l'entrée des utilisateurs du nombre d'enfants qu'ils ont. ex: combien d'enfants avez-vous donc j'ajoute le contrôle utilisateur ascx basé sur cette boucle qui va à l'étape 5 de mon assistant qui est également dans une page maître. Puis j'utilise findcontrol pour atttempt l'obtenir à ces boîtes de saisie afin que je puisse enregistrer les données dans ma base de données, findcontrol revient à zéro, même si l'utilisateur contrôle dans visible et recréé à la page de chargement après la publication.FindControl ne trouve pas le contrôle utilisateur dynamiquement ajouté dans le contrôle de l'assistant

toute aide grandement appréciée. bouton de commande de trouvaille: protégée Sub Button1_Click (expéditeur de ByVal comme objet, ByVal e comme System.EventArgs) Poignées Button1.Click

Dim numbchildren As Integer = CInt(Howmanychildren.Text) 

    For i As Integer = 1 To numbchildren - 1 

     Dim textbox As TextBox = TryCast(Me.Wizard1.FindControl("WizardStep5").FindControl("Minor_1_Child_Name"), TextBox) 
     'Dim textbox2 As TextBox = TryCast(Me.Wizard1.FindControl("WizardStep5").FindControl("Howmanychildren"), TextBox) 


     If textbox IsNot Nothing Then 

      Response.Write("Found TextBox1 <br>") 
      Dim val As String = textbox.Text 
      Response.Write(val & "<br>") 

     Else 
      Response.Write("not found" & "<br>") 
     End If 

     ' Insert into DB 
     'SaveValueToDatabase(val) 
    Next 

End Sub 

Ajout de la fonction de contrôle de l'utilisateur sur la liste déroulante:

protégé Sous Doyouhavechildren_SelectedIndexChanged (expéditeur ByVal comme objet, ByVal e comme System.EventArgs) Poignées Doyouhavechildren.SelectedIndexChanged

Dim numbchildren As Integer = CInt(Howmanychildren.Text) 
    Dim cnt As Integer = 1 


    'Panel1.Controls.Clear() 

    Select Case Doyouhavechildren.SelectedIndex 
     Case 0 



      ViewState.Add("Doyouhavechildren", numbchildren) 


      Do While cnt <= numbchildren 

       Dim uc As Web.UI.UserControl = DirectCast(Page.LoadControl("MinorChild.ascx"), Web.UI.UserControl) 
       uc.ID = "Minor_" + cnt.ToString() 
       Wizard1.ActiveStep.Controls.Add(uc) 



       cnt = cnt + 1 
      Loop 
      Exit Select 
     Case 1 

      Exit Select 
    End Select 

End Sub 

contrôle utilisateur:

<% @ Control Language = "VB" AutoEventWireup = "false" CodeFile = "MinorChild.ascx.vb" Inherits = "MinorChild" %>

Nom

Âge

SS #

date de naissance

les travaux de contrôle de trouver dans le champ howmanychildren qui est statique

Répondre

1

je me suis dit dehors moi-même basiquement, vous devez référances le conteneur, thats ce que tout le monde partout d'autre où dire mais j'ai gardé ignorer la réponse le code correct est

Dim textbox As TextBox = TryCast(Me.Wizard1.FindControl("WizardStep5").FindControl("Minor_1").FindControl("Child_Name"), TextBox) 

Vous devez d'abord référencer le nom du contrôle utilisateur, puis effectuer une recherche en son sein, même si la source du client est inaperçue.