By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
445,923 Members | 1,997 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 445,923 IT Pros & Developers. It's quick & easy.

XML fed Treeview - NULL Reference Exception

P: n/a
Hi folks,

A bizarre problem I am having.

I have a treeview which is bound to an XmlDataSource. The
XMLDataSource.Data property is set to the result of a function that
generates an XML document from a SQL Query. The problem is that the
Treeview renders correctly and expands with the appropriate hierarchy
but clicking anything but the very top node gives me a NULL Reference
Exception. I haven't even got to the stage of doing anything with the
tree apart from populate it, so there is no other code involved at
present.

Below is the code behind, the stored procedure, the XML document
generated by the procedure and the source view extract of the treeview
control
CODE BEHIND:

protected void Page_Load(object sender, EventArgs e) {
dsXmlContent.Data = GetXmlDoc().OuterXml;
}

protected XmlDocument GetXmlDoc() {
SqlConnection cn = new SqlConnection(@"data source=server;
database=database; user id=user; password=password");
SqlCommand cmd = new SqlCommand("procContent_GetContentMap", cn);
cn.Open();
XmlReader xr = cmd.ExecuteXmlReader();
XmlDocument doc = new XmlDocument();
doc.Load(xr);

xr.Close();
cn.Close();

return doc;

}

STORED PROCEDURE

Create PROCEDURE [dbo].[procContent_GetContentMap]

AS
BEGIN
SET NOCOUNT ON;

select
1 tag,
null parent,
null [Section!1!Section],
null [Sections!2!SectionID],
null [Sections!2!SectionName],
NULL [Pages!3!PageID],
NULL [Pages!3!PageName],
NULL [Contents!4!ContentID],
NULL [Contents!4!Html]

union all

select
2 tag,
1 parent,
null,
ID,
SectionName,
NULL,
NULL,
NULL,
NULL

from
Section

union all

select
3,
2,
null,
Section.ID,
null,
Page.ID,
Page.PageName,
NULL,
NULL

from
Section, Page

where
Section.ID = Page.SectionID

union all

select
4,
3,
null,
Section.ID,
null,
Page.ID,
null,
[Content].ID,
[Content].Html

from Section, Page, [Content]

where Section.ID = Page.SectionID
and Page.ID = [Content].PageID

order by [Section!1!Section], [Sections!2!SectionID],
[Pages!3!PageID], [Contents!4!ContentID]

for xml explicit

end

GENERATED XML DOCUMENT

<Section>
<Sections SectionID="1" SectionName="Test Section 1">
<Pages PageID="1" PageName="Section 1 Page 1">
<Contents ContentID="1" Html="Section 1 Page 1 content" />
</Pages>
<Pages PageID="2" PageName="Section 1 Page 2">
<Contents ContentID="2" Html="Section 1 Page 2 content" />
</Pages>
</Sections>
<Sections SectionID="2" SectionName="Test Section 2">
<Pages PageID="3" PageName="Section 2 Page 1">
<Contents ContentID="3" Html="Section 2 Page 1 content" />
</Pages>
<Pages PageID="4" PageName="Section 2 Page 2">
<Contents ContentID="4" Html="Section 2 Page 2 content" />
</Pages>
</Sections>
</Section>

SOURCE EXTRACT OF THE TREEVIEW CONTROL

<asp:TreeView ID="tvNav" runat="server" Style="position: relative"
PathSeparator="." DataSourceID="dsXmlContent" ExpandDepth="0"
ImageSet="XPFileExplorer" NodeIndent="15">
<DataBindings>
<asp:TreeNodeBinding DataMember="Sections" ValueField="SectionID"
TextField="SectionName" />
<asp:TreeNodeBinding DataMember="Pages" ValueField="PageID"
TextField="PageName" />
<asp:TreeNodeBinding DataMember="Contents" ValueField="ContentID"
TextField="Html" />
</DataBindings>
</asp:TreeView>

Any help greatly appreciated

Simon

Oct 23 '06 #1
Share this Question
Share on Google+
2 Replies


P: n/a
Just realised that the stack trace would be useful.

STACK TRACE

[NullReferenceException: Object reference not set to an instance of an
object.]
System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean
preserveWhitespace) +39
System.Xml.XmlDocument.Load(XmlReader reader) +159

System.Web.UI.WebControls.XmlDataSource.PopulateXm lDocument(XmlDocument
document, CacheDependency& dataCacheDependency, CacheDependency&
transformCacheDependency) +388
System.Web.UI.WebControls.XmlDataSource.GetXmlDocu ment() +206
System.Web.UI.WebControls.XmlHierarchicalDataSourc eView.Select() +42
System.Web.UI.WebControls.TreeView.DataBindNode(Tr eeNode node) +477
System.Web.UI.WebControls.TreeView.PopulateNode(Tr eeNode node) +44
System.Web.UI.WebControls.TreeView.LoadPostData(St ring postDataKey,
NameValueCollection postCollection) +972

System.Web.UI.WebControls.TreeView.System.Web.UI.I PostBackDataHandler.LoadPostData(String
postDataKey, NameValueCollection postCollection) +36
System.Web.UI.Page.ProcessPostData(NameValueCollec tion postData,
Boolean fBeforeLoad) +897
System.Web.UI.Page.ProcessRequestMain(Boolean
includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
+2549

Oct 23 '06 #2

P: n/a
Required a databind call in code behind. Now I have a bizarre collapse
problem but I'll sort that out me thinks :)

Oct 23 '06 #3

This discussion thread is closed

Replies have been disabled for this discussion.