Hi, the below Default.aspx page(code behind is given below) contains a composite control. If we assign an Id to this composite control,while page rendering it creates multiple "ID" attribute for its child controls like "". Removing obj.ID = "MyCompositeControl" creates a single id for all child controls, but we can't set our own name. Could you please check the below code and let me know how to resolve this?
Partial Class _Default Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim obj As New DynamicControl()
obj.ID = "MyCompositeControl"
PlaceHolder1.Controls.Add(obj)
End Sub
End Class
Public Class DynamicControl : Inherits CompositeControl Implements INamingContainer
Private oStringWriter As System.IO.StringWriter
Private oHtmlTextWriter As System.Web.UI.HtmlTextWriter
Private _lastTagField As Boolean = False
Private _ChildControlList As New List(Of Control)
Private _ControlMethodList As New Hashtable
Protected Overrides Sub OnLoad(ByVal e As EventArgs)
Dim oStringWriter As New System.IO.StringWriter
Dim oHtmlTextWriter As New System.Web.UI.HtmlTextWriter(oStringWriter)
RenderControls(oHtmlTextWriter)
End Sub
''' <summary>
''' To render all the controls in the custom control
''' </summary>
''' <param name="oHtmlTextWriter"></param>
''' <remarks></remarks>
Protected Overrides Sub Render(ByVal oHtmlTextWriter As HtmlTextWriter)
AddAttributesToRender(oHtmlTextWriter)
For Each IndControl As Control In _ChildControlList
If Not IsNothing(IndControl) Then
IndControl.RenderControl(oHtmlTextWriter)
End If
Next
End Sub
Private Sub RenderFieldControls(ByVal objControl As WebControl, ByVal id As String)
objControl.ID = id
'AddProperties(objControl, UIIndControl.UI_Property)
_ChildControlList.Add(objControl)
Me.Controls.Add(objControl)
'If Not IsNothing(UIIndControl.UI_Event) Then
' RegisterEvent(objControl, UIIndControl.UI_Event, Me.ID & ApplicationConstants._UNDERSCORE & UIIndControl.ID, UIIndControl.ControlType)
'End If
End Sub
Private Sub RenderControls(ByVal oHtmlTextWriter As System.Web.UI.HtmlTextWriter)
Dim objtxt As New TextBox()
RenderFieldControls(objtxt, "ID1")
Dim objbutton As New Button()
RenderFieldControls(objbutton, "btn1")
End Sub
''' <summary>
''' To create the child controls
''' </summary>
''' <remarks></remarks>
Protected Overrides Sub CreateChildControls()
End Sub
End Class