Adding fields to the CreateUserWizard

I'm trying to add a textbox to the initial step of the CreatUserWizard.
Let's say it is tbMyTextbox.
Now when I add an event on created user, I want to get the value in the field.

I thought I could use
dim mc as textbox
mc = ctype(CreateUserWizard1.Findcontrol("tbMyTextbox"),textbox)

mc.text should be the text of the field.

But it can't find the control... so I tried

dim mystep as CreatuserWizardstep
mystep = createuserwizard1.activestep
mc = ctype(mystep.findcontrol("tbMyTextbox"),textbox)

But it also fails.
The example just uses tbMyTextbox.text which just throws a compiler error.

Anyone have any other ideas.?

[663 byte] By [MarkCrowley] at [2007-12-16]
# 1
Thank you to Federico Silva
Web Platform & Tools Team
He amswered this a while back in a bug report:

The way to get to a reference to a child control in a WizardStep is:

TextBox txtFirstName = (TextBox) CreateUserWizard1.WizardSteps[1].FindControl("FirstNameTextBox");
Profile.FirstName = txtFirstName.Text;

Your suggested approach to call CreateUserWizard1.FirstNameTextBox doesn't work because "FirstNameTextBox" is not a property of the class CreateUserWizard.

Here is one additional thing to keep in mind: if you try to access controls from our special CreateUserWizardStep (the one that automatically puts the username, password, and so forth), then the code is different to actually access the inner controls. If that is the case, then its going to be like this: CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("TextBox1"), TextBox)

I know its a little bit confusing, the thing is that there are 2 types of steps that you can add to a wizard: a WizardStep and a TemplateWizardStep. If you are trying to access controls that are in a WizardStep you use the code that I sent you first; if you are trying to access controls from a TemplateWizardStep you use the one above.

MarkCrowley at 2007-9-8 > top of Msdn Tech,Visual Basic,Visual Basic General...
# 2
My head is spinning trying to figure out how to add a few extra fields to the createuserwizard.

I think I understand how to add the text boxes I need to the form but I am lost when it comes to saving the data to a table in my sql 2000 database. I have actually added the columns I need to the aspnet users table.

Any suggestions on how to get this done?

cb3431 at 2007-9-8 > top of Msdn Tech,Visual Basic,Visual Basic General...
# 3

Hi Expert,

I encountered the OnCreatedUser Event problem when getting the UserName. System always show "" for the CreateUserWizard1.UserName.

I am trying to update the extra fields value at this event.

Please advice.

Plow at 2007-9-8 > top of Msdn Tech,Visual Basic,Visual Basic General...
# 4

Hi Guy,

I have solved my problem by doing the following within the OnCreatedUser Event function:-

Dim UserNameTxt As TextBox = _

CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("UserName"), TextBox)

I remark this original statement that always show UserName = "".

'Dim user As MembershipUser = Membership.GetUser(CreateUserWizard1.UserName.ToString())

Change to this.

Dim user As MembershipUser = Membership.GetUser(UserNameTxt.Text)

It work now.

Bye Bye

Plow at 2007-9-8 > top of Msdn Tech,Visual Basic,Visual Basic General...
# 5

Hi
Using SQLDataSource I've been successful in creating multiple additional CreateUser fields saving them to "tbl_UserDetails" table. I pass the UserId to the tbl_UserDetails as well. What I'm struggling with is retreiving the new tbl_UserDetails "Details_Id" - I want to integrate it into the Profile data. I'm not sure if the problem retreiving the Details_Id is in the SQLDSInsert_Inserted code used or if I'm not addressing the retreival in the "correct" stage of "the process". See below.
Thanks


Imports Telerik.WebControls
Imports SITE.DAL.DBAccess
Imports System.Data
Imports System.Data.SqlClient

Partial Class Site_Pages_Registration
Inherits System.Web.UI.Page
Protected WithEvents Update_Date As WebControls.HiddenField

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Session("Record") IsNot Nothing Then
CreateUserWizard1.MoveTo(CompleteWizardStep1)
End If

End Sub

Protected Sub CreateUserWizard1_CreatedUser(ByVal sender As Object, ByVal e As System.EventArgs) Handles CreateUserWizard1.CreatedUser
Dim user As MembershipUser = Membership.GetUser(CreateUserWizard1.UserName)

If user Is Nothing Then
Throw New ApplicationException("Can't find the user.")
End If

Dim DetailsInsert As SqlDataSource = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("SQLDSInsert"), SqlDataSource)
Dim UserId As Guid = DirectCast(user.ProviderUserKey, Guid)
Session("NewUserId") = UserId
Dim Details_FirstName As TextBox = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_FirstName"), TextBox)
Dim Details_LastName As TextBox = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_LastName"), TextBox)
Dim Details_MI As TextBox = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_MI"), TextBox)
Dim Details_Title As TextBox = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_Title"), TextBox)
Dim Details_Company As TextBox = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_Company"), TextBox)
Dim Details_1Comm As Telerik.WebControls.RadMaskedTextBox = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_1Comm"), Telerik.WebControls.RadMaskedTextBox)
Dim Details_1CommType As Telerik.WebControls.RadComboBox = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_1CommType"), Telerik.WebControls.RadComboBox)
Dim Details_2Comm As Telerik.WebControls.RadMaskedTextBox = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_2Comm"), Telerik.WebControls.RadMaskedTextBox)
Dim Details_2CommType As Telerik.WebControls.RadComboBox = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_2CommType"), Telerik.WebControls.RadComboBox)
Dim Details_Address As TextBox = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_Address"), TextBox)
Dim Details_City As TextBox = CType(CreateUserWizardStep0.ContentTemplateContainer.FindControl("Details_City"), TextBox)
Dim Details_State As Telerik.WebControls.RadComboBox = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_State"), Telerik.WebControls.RadComboBox)
Dim Details_Zip As Telerik.WebControls.RadMaskedTextBox = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_Zip"), Telerik.WebControls.RadMaskedTextBox)
Dim Details_UserTypeId As Telerik.WebControls.RadComboBox = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_UserTypeId"), Telerik.WebControls.RadComboBox)
Dim Details_ReceiveEmail As CheckBox = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_ReceiveEmail"), CheckBox)

DetailsInsert.Insert()

Dim UserType As Telerik.WebControls.RadComboBox = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_UserTypeId"), Telerik.WebControls.RadComboBox)
Session("UserType") = UserType.SelectedValue.ToString
End Sub

Protected Sub SQLDSInsert_Inserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceCommandEventArgs)
Dim user As MembershipUser = Membership.GetUser(CreateUserWizard1.UserName)

e.Command.Parameters("@UserId").Value = user.ProviderUserKey
e.Command.Parameters("@Details_FirstName").Value = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_FirstName"), TextBox).Text
e.Command.Parameters("@Details_LastName").Value = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_LastName"), TextBox).Text
e.Command.Parameters("@Details_MI").Value = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_MI"), TextBox).Text
e.Command.Parameters("@Details_Company").Value = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_Company"), TextBox).Text
e.Command.Parameters("@Details_Title").Value = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_Title"), TextBox).Text
e.Command.Parameters("@Details_1Comm").Value = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_1Comm"), Telerik.WebControls.RadMaskedTextBox).Text
e.Command.Parameters("@Details_1CommType").Value = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_1CommType"), Telerik.WebControls.RadComboBox).SelectedValue
e.Command.Parameters("@Details_2Comm").Value = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_2Comm"), Telerik.WebControls.RadMaskedTextBox).Text
e.Command.Parameters("@Details_2CommType").Value = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_2CommType"), Telerik.WebControls.RadComboBox).SelectedValue
e.Command.Parameters("@Details_Address").Value = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_Address"), TextBox).Text
e.Command.Parameters("@Details_City").Value = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_City"), TextBox).Text
e.Command.Parameters("@Details_State").Value = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_State"), Telerik.WebControls.RadComboBox).SelectedValue
e.Command.Parameters("@Details_Zip").Value = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_Zip"), Telerik.WebControls.RadMaskedTextBox).Text
e.Command.Parameters("@Details_UserTypeId").Value = Int32.Parse(CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_UserTypeId"), Telerik.WebControls.RadComboBox).SelectedValue)
e.Command.Parameters("@Details_ReceiveEmail").Value = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_ReceiveEmail"), CheckBox).Checked
End Sub


Protected Sub CompleteButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim user As MembershipUser = Membership.GetUser(CreateUserWizard1.UserName)

Dim pb As ProfileBase = ProfileBase.Create(user.UserName)
pb.SetPropertyValue("FirstName", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_FirstName"), TextBox).Text)
pb.SetPropertyValue("LastName", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_LastName"), TextBox).Text)
pb.SetPropertyValue("UserName", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("UserName"), TextBox).Text)
pb.SetPropertyValue("Record", Session("Record"))
pb.SetPropertyValue("Company", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_Company"), TextBox).Text)
pb.SetPropertyValue("Title", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_Title"), TextBox).Text)
pb.SetPropertyValue("Comm1", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_1Comm"), Telerik.WebControls.RadMaskedTextBox).Text)
pb.SetPropertyValue("Comm1Type", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_1CommType"), Telerik.WebControls.RadComboBox).SelectedValue)
pb.SetPropertyValue("Comm2", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_2Comm"), Telerik.WebControls.RadMaskedTextBox).Text)
pb.SetPropertyValue("Comm2Type", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_2CommType"), Telerik.WebControls.RadComboBox).SelectedValue)
pb.SetPropertyValue("Address", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_Address"), TextBox).Text)
pb.SetPropertyValue("City", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_City"), TextBox).Text)
pb.SetPropertyValue("State", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_State"), Telerik.WebControls.RadComboBox).SelectedValue)
pb.SetPropertyValue("Zip", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_Zip"), Telerik.WebControls.RadMaskedTextBox).Text)

pb.Save()

Dim lblRegisterCompleteName As Label = CreateUserWizard1.CompleteStep.FindControl("lblRegisterCompleteName"), Label
lblRegisterCompleteName.Text = Profile.FirstName & " " & Profile.LastName
Dim Muser As MembershipUser = Membership.GetUser(CreateUserWizard1.UserName)
If Muser Is Nothing Then
Throw New ApplicationException("Can't find the user.")
End If
Muser.IsApproved = False
End Sub

Protected Sub btnTeamProfile_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim user As MembershipUser = Membership.GetUser(CreateUserWizard1.UserName)

Dim pb As ProfileBase = ProfileBase.Create(user.UserName)
pb.SetPropertyValue("FirstName", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_FirstName"), TextBox).Text)
pb.SetPropertyValue("LastName", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_LastName"), TextBox).Text)
pb.SetPropertyValue("UserName", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("UserName"), TextBox).Text)
pb.SetPropertyValue("Record", Session("Record"))
pb.SetPropertyValue("Company", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_Company"), TextBox).Text)
pb.SetPropertyValue("Title", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_Title"), TextBox).Text)
pb.SetPropertyValue("Comm1", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_1Comm"), Telerik.WebControls.RadMaskedTextBox).Text)
pb.SetPropertyValue("Comm1Type", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_1CommType"), Telerik.WebControls.RadComboBox).SelectedValue)
pb.SetPropertyValue("Comm2", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_2Comm"), Telerik.WebControls.RadMaskedTextBox).Text)
pb.SetPropertyValue("Comm2Type", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_2CommType"), Telerik.WebControls.RadComboBox).SelectedValue)
pb.SetPropertyValue("Address", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_Address"), TextBox).Text)
pb.SetPropertyValue("City", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_City"), TextBox).Text)
pb.SetPropertyValue("State", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_State"), Telerik.WebControls.RadComboBox).SelectedValue)
pb.SetPropertyValue("Zip", CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Details_Zip"), Telerik.WebControls.RadMaskedTextBox).Text)

pb.Save()
Response.Redirect("Profile.aspx")
End Sub

Protected Sub CompleteWizardStep1_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles CompleteWizardStep1.PreRender
Dim btnTeamProfile As Button = CType(CompleteWizardStep1.ContentTemplateContainer.FindControl("btnTeamProfile"), Button)
If Session("UserType") = "2" Then
btnTeamProfile.Visible = True
Else
btnTeamProfile.Visible = False
End If
End Sub

Protected Sub SQLDSInsert_Inserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceCommandEventArgs)
Dim DetailsInsert As SqlDataSource = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("SQLDSInsert"), SqlDataSource)
Dim Record As Integer = DetailsInsert.InsertParameters.Add("@Details_Id", System.Data.ParameterDirection.ReturnValue)
'Dim Record As Integer = e.Command.ExecuteScalar
Session("Record") = Record.ToString

Response.Redirect("Registration.aspx")
End Sub


End Class

jonnyO at 2007-9-8 > top of Msdn Tech,Visual Basic,Visual Basic General...