N
news.microsoft.com
If I have an ASP.net button inside a template for a custom control and use
the code below, everything works fine and it generates the correct id and
the asp.net button calls serverside click event as it should:
_myTemplateContainer = New ContentContainer(Me)
ContentTemplate.InstantiateIn(_myTemplateContainer)
Controls.Add(_myTemplateContainer)
But if I use this code, it does not generate the unique ID and no serverside
event will be called:
Dim SB As New StringBuilder()
Dim SW As New StringWriter(SB)
Dim htmlTW As New HtmlTextWriter(SW)
_myTemplateContainer = New ContentContainer(Me)
ContentTemplate.InstantiateIn(_myTemplateContainer)
_myTemplateContainer.RenderControl(htmlTW)
If Not Me.Page.IsClientScriptBlockRegistered("MainWindow_" & Me.ID) Then
Me.Page.RegisterClientScriptBlock("MainWindow_" & Me.ID, SB.ToString)
End If
The reason I was trying to do it this way is because I need the html of the
template and some other html table code to be output to the top of the html
page no matter where the actual custom control is sited and this was the
only way I could figure out how to do that.
Do you happen to know either of these answers:
1. Is there something else I need to do to get RenderControl to generate
proper ID's for asp.net control that exist on the template I am trying to
render or is that just not possible.
2. Is there another way I can make sure the output of the template always
appears at the top of the page html?
the code below, everything works fine and it generates the correct id and
the asp.net button calls serverside click event as it should:
_myTemplateContainer = New ContentContainer(Me)
ContentTemplate.InstantiateIn(_myTemplateContainer)
Controls.Add(_myTemplateContainer)
But if I use this code, it does not generate the unique ID and no serverside
event will be called:
Dim SB As New StringBuilder()
Dim SW As New StringWriter(SB)
Dim htmlTW As New HtmlTextWriter(SW)
_myTemplateContainer = New ContentContainer(Me)
ContentTemplate.InstantiateIn(_myTemplateContainer)
_myTemplateContainer.RenderControl(htmlTW)
If Not Me.Page.IsClientScriptBlockRegistered("MainWindow_" & Me.ID) Then
Me.Page.RegisterClientScriptBlock("MainWindow_" & Me.ID, SB.ToString)
End If
The reason I was trying to do it this way is because I need the html of the
template and some other html table code to be output to the top of the html
page no matter where the actual custom control is sited and this was the
only way I could figure out how to do that.
Do you happen to know either of these answers:
1. Is there something else I need to do to get RenderControl to generate
proper ID's for asp.net control that exist on the template I am trying to
render or is that just not possible.
2. Is there another way I can make sure the output of the template always
appears at the top of the page html?