H
Henrik Stidsen
I need to get the HTML output from a webcontrol as a string instead of
it being rendered on the page.
I have the following code:
Dim SiteMapSource As New SiteMapDataSource()
Dim TreeView1 As New TreeView()
TreeView1.DataSource = SiteMapSource
TreeView1.ShowExpandCollapse = True
TreeView1.ExpandDepth = 1
TreeView1.DataBind()
Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder()
Using tw As System.IO.StringWriter = New System.IO.StringWriter(sb)
Using hw As System.Web.UI.HtmlTextWriter = New
System.Web.UI.HtmlTextWriter(tw)
TreeView1.RenderControl(hw)
Response.Write(sb.ToString())
End Using
End Using
The line with TreeView1.RenderControl(hw) throws a
NullReferenceException with a almost unusable stacktrace:
[NullReferenceException: Object reference not set to an instance of an
object.]
System.Web.UI.Control.get_SpacerImageUrl() +59
System.Web.UI.WebControls.TreeView.RenderBeginTag(HtmlTextWriter
writer) +146
System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer)
+17
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer,
ControlAdapter adapter) +25
System.Web.UI.Control.RenderControl(HtmlTextWriter writer,
ControlAdapter adapter) +121
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +22
SiteMapTest.Page_Load(Object sender, EventArgs e) in
D:\TreeView.aspx.vb:25
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +47
System.Web.UI.Page.ProcessRequestMain(Boolean
includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
+1061
The weird part is that it works fine if I do
Page.Form.Controls.add(TreeView1) AND it works fine if I use a button
or even a Calendar control...
So, why does TreeView throw a NullReference when asked to render itself
?
it being rendered on the page.
I have the following code:
Dim SiteMapSource As New SiteMapDataSource()
Dim TreeView1 As New TreeView()
TreeView1.DataSource = SiteMapSource
TreeView1.ShowExpandCollapse = True
TreeView1.ExpandDepth = 1
TreeView1.DataBind()
Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder()
Using tw As System.IO.StringWriter = New System.IO.StringWriter(sb)
Using hw As System.Web.UI.HtmlTextWriter = New
System.Web.UI.HtmlTextWriter(tw)
TreeView1.RenderControl(hw)
Response.Write(sb.ToString())
End Using
End Using
The line with TreeView1.RenderControl(hw) throws a
NullReferenceException with a almost unusable stacktrace:
[NullReferenceException: Object reference not set to an instance of an
object.]
System.Web.UI.Control.get_SpacerImageUrl() +59
System.Web.UI.WebControls.TreeView.RenderBeginTag(HtmlTextWriter
writer) +146
System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer)
+17
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer,
ControlAdapter adapter) +25
System.Web.UI.Control.RenderControl(HtmlTextWriter writer,
ControlAdapter adapter) +121
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +22
SiteMapTest.Page_Load(Object sender, EventArgs e) in
D:\TreeView.aspx.vb:25
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +47
System.Web.UI.Page.ProcessRequestMain(Boolean
includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
+1061
The weird part is that it works fine if I do
Page.Form.Controls.add(TreeView1) AND it works fine if I use a button
or even a Calendar control...
So, why does TreeView throw a NullReference when asked to render itself
?