chokka
asked on
Dynamically add controls to the Form - VB.Net / VS 2005
I have VB.Net Form in VS 2005.
In which i am entering Patient's Physician or Doctor details ..!
In the form, i have kept 3 rows ..
Like
Physican Name + TextBox , Phone Number + TextBox, FaxNumber + TextBox.
Some patients have more than 3 Doctors .. so, if i need to add more than 3 rows .. i just need to press Add button, which will automatically create a new row ..
How to add more controls dynamically on run time mode ..!
In your case you have to make a 1 to many relation between patient and doctor ....
Patient will be in details ...and doctor in a datagridview....so for 1 patient many doctors...
Patient will be in details ...and doctor in a datagridview....so for 1 patient many doctors...
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
@sanket_1985 And @lucky85 Your codes for me are correct....The author is talking about Rows....I am a little bit Confused....Maybe @chokka must be more specific...Am i wrong?
ASKER
yes, like in ASP.net grid view - we have Insert template .. which add new row dynamically ..
similarly, i am looking forward to add new row dynamically .. !
similarly, i am looking forward to add new row dynamically .. !
@jtoutou agreed with your statement - probably this is just a sample code that can help to replicate three textbox. I might be wrong, might be right.
Are you using a datagridview?
@chokka - win form or web form?
Had it been ASP.NET Web Form, the sample code would have been:
Imports System.Collections.Generic
Imports System.Web.UI
Imports OfficeFileReader
Public Partial Class ResumeWizard
Inherits System.Web.UI.Page
#Region "Private Fields"
Private experienceDynamicControls As ExperienceDetailsControl()
#End Region
#Region "Event Handlers"
Protected Sub Page_PreInit(sender As Object, e As EventArgs)
Dim myControl As Control = GetExperiencePostBackControl(Me.Page)
If (myControl IsNot Nothing) Then
If (myControl.ClientID.ToString() = "wizResumeBuilder_btnAddExperience") Then
Try
Session("thisExperienceControlsCount") = Convert.ToInt32(Session("thisExperienceControlsCount")) + 1
Catch generatedExceptionName As Exception
Session("thisExperienceControlsCount") = 2
End Try
End If
End If
End Sub
Protected Overrides Sub OnInit(e As EventArgs)
MyBase.OnInit(e)
Dim experienceControlsCount As Integer = 1
Try
experienceControlsCount = Convert.ToInt32(Session("thisExperienceControlsCount"))
If experienceControlsCount = 0 Then
experienceControlsCount = 1
Session("thisExperienceControlsCount") = 1
End If
Catch generatedExceptionName As Exception
Session("thisExperienceControlsCount") = 1
End Try
experienceDynamicControls = New ExperienceDetailsControl(experienceControlsCount - 1) {}
For ctr As Integer = 0 To experienceDynamicControls.Length - 1
Dim userControl As ExperienceDetailsControl = DirectCast(Page.LoadControl("~/ResumeControls/ExperienceDetailsControl.ascx"), ExperienceDetailsControl)
userControl.ID = "ExperienceDetailsControl" & ctr.ToString()
userControl.Index = (ctr + 1)
plhExperienceDetails.Controls.Add(userControl)
experienceDynamicControls(ctr) = userControl
Dim literalBreak As New LiteralControl("<br /><br />")
plhExperienceDetails.Controls.Add(literalBreak)
Next
End Sub
Protected Sub btnAddExperience_Click(sender As Object, e As EventArgs)
End Sub
Protected Sub btnGenerateResume_Click(sender As Object, e As EventArgs)
If radFormatBW1.Checked Then
Dim experienceDetails As New List(Of JobDetails)()
For Each currentControl As EducationDetailsControl In educationDynamicControls
Dim er As New EducationRecord()
er.CourseAndDatesOfAttendance = currentControl.ClassOrDegree + "(" + currentControl.AttendanceDates & ")"
er.SchoolName = currentControl.SchoolName
er.SchoolCityState = currentControl.SchoolCityState
educationDetails.Add(er)
Next
End If
End Sub
#End Region
#Region "Private Methods"
Private Function GetExperiencePostBackControl(thePage As Page) As Control
Dim myControl As Control = Nothing
Dim ctrlName As String = thePage.Request.Params.[Get]("__EVENTTARGET")
If ((ctrlName IsNot Nothing) And (ctrlName <> String.Empty)) Then
myControl = thePage.FindControl(ctrlName)
Else
For Each Item As String In thePage.Request.Form
Dim c As Control = thePage.FindControl(Item)
If (TypeOf (c) Is System.Web.UI.WebControls.Button) Then
If c.ID = "btnAddExperience" Then
myControl = c
End If
End If
Next
End If
Return myControl
End Function
#End Region
End Class
@sanket_1985 I didn't mean anything about your code which is correct...but seems to me like i said in my first comment parent-child relation...
@jtoutou - didn't meant to offend you. Please accept my apologies if you felt so.
no worries!!!!!!!!!!!!....... .......... .I just wondered if author's question could be more clearly :)
ASKER
Ya, i am just working on it .. and also visualizing the difference between GridView and Dynamically Adding controls ..!
ASKER
Thanks
FormName.Controls.Add(atex
'change FormName To Whatever You Named Your form name where you want to create a textbox.
Try something like this.