Hello Telerik Team,
I am trying to bind the xml to the Grid but having issues rendering the child nodes from the xml properly.
Please have a look at my xml and code snippet and help me in resolving the issue.
I have referred this blog to achieve this functionality
Below is my code snippet:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                                I am trying to bind the xml to the Grid but having issues rendering the child nodes from the xml properly.
Please have a look at my xml and code snippet and help me in resolving the issue.
I have referred this blog to achieve this functionality
<?xml version="1.0" encoding="utf-8"?><root>  <Products>    <Product>      <Items ItemID="1" ItemNo="1232">        <Description ManufactureDate="2010/05/26" ID="11"></Description>      </Items>      <Items ItemID="2" ItemNo="1231">        <Description ManufactureDate="2010/05/12" ID="12"></Description>      </Items>      <Items ItemID="3" ItemNo="1270">        <Description ManufactureDate="2010/05/1" ID="21"></Description>      </Items>      <Items ItemID="4" ItemNo="1129">        <Description ManufactureDate="2010/05/4" ID="30"></Description>      </Items>    </Product>  </Products></root>Below is my code snippet:
Imports Telerik.Web.UIImports System.XmlImports System.IOPublic Class Test    Inherits System.Web.UI.Page    Dim xmlDoc As New System.Xml.XmlDocument()    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load        DefineGridStructure()        Dim Grid1 As RadGrid = CType(PlaceHolder1.FindControl("RadGrid1"), RadGrid)        RadAjaxManager1.AjaxSettings.AddAjaxSetting(Grid1, Grid1)        If Not IsPostBack Then            Grid1.SelectedIndexes.Add(1, 0, 0)            Grid1.DataBind()            '  Grid1.MasterTableView.Items(0).Expanded = True        Else        End If                 Grid1.DataBind()    End Sub    Private Sub DefineGridStructure()        Dim RadGrid1 As RadGrid = New RadGrid        RadGrid1.ID = "RadGrid1"        xmlDoc.Load(Server.MapPath("test.xml"))        xmlDoc.SelectSingleNode("//Product").Attributes.RemoveAll()        Dim ndlSingleParentNode As XmlNodeList = xmlDoc.SelectNodes("//Product/node() [descendant::node()][position()=1]")        Dim ndl As XmlNodeList = xmlDoc.SelectNodes("//Product/node()[descendant::node()]")        RadGrid1.DataSource = ConvertXmlNodeListToDataTable(ndlSingleParentNode, ndl, RadGrid1)        RadGrid1.DataBind()        Me.PlaceHolder1.Controls.Add(RadGrid1)        ' Dim ndList As System.Xml.XmlNodeList = xmlDoc.SelectNodes("//Product/node()")     End Sub    Private Function ConvertXmlNodeListToDataTable(ByVal ndlProduct As XmlNodeList, ByVal ndl As XmlNodeList, ByVal RadGrid1 As RadGrid) As Object        Dim dt As DataTable = New DataTable()        Dim TempColumn As Integer = 0        For Each ndSubChild As XmlNode In ndlProduct            For attrCoun As Integer = 0 To ndSubChild.Attributes.Count - 1 Step 1                TempColumn = TempColumn + 1                Dim dc As DataColumn = New DataColumn(ndSubChild.Attributes(attrCoun).Name, System.Type.GetType("System.String"))                If dt.Columns.Contains(ndSubChild.Attributes(attrCoun).Name) Then                    dt.Columns.Add(dc.ColumnName = dc.ColumnName + TempColumn.ToString())                Else                    dt.Columns.Add(dc)                End If            Next        Next        Dim ColumnsCount As Integer = dt.Columns.Count        Dim ndCount As Integer = 0        For ndlCount As Integer = 0 To ndl.Count - 1 Step 1            Dim dr As DataRow = dt.NewRow()            For ndCount = 0 To ColumnsCount - 1 Step 1                If Not ndl(ndlCount).Attributes(ndCount).Value = "" Then                    dr(ndCount) = ndl(ndlCount).Attributes(ndCount).Value                Else                    dr(ndCount) = ndl(ndlCount).Attributes(ndCount).Value                End If            Next            dt.Rows.Add(dr)        Next        Dim tableView As GridTableView = New GridTableView(RadGrid1)        Dim childGrid As New RadGrid()        Dim boundColumn As GridBoundColumn        For ndlCount As Integer = 0 To ndl.Count - 1 Step 1            Dim dsChild As New DataSet            Dim attrCount As Integer = 0            If ndl(ndlCount).ChildNodes.Count > 0 Then                'Dim gridtempCol As GridTemplateColumn = New GridTemplateColumn()                'gridtempCol.DataField = "test"                'gridtempCol.HeaderText = "test"                'gridtempCol.ItemTemplate.InstantiateIn(childGrid)                'RadGrid1.MasterTableView.TemplateControl.LoadTemplate(gridtempCol.ToString())                Dim ndSelect As XmlNodeList = xmlDoc.SelectNodes("//Product/node()[@RowID=" & ndlCount + 1 & "]")                Dim ndSelectNode As XmlNode = xmlDoc.SelectSingleNode("//Product/node()[@RowID=" & ndlCount + 1 & "]")                tableView.AutoGenerateColumns = False                'dsChild.ReadXml(New StringReader(ndSelectNode.InnerXml))                'childGrid.DataSource = dsChild                'childGrid.DataBind()                For Each tableViewNode As XmlNode In ndl(ndlCount).ChildNodes                    For attrCount = 0 To tableViewNode.Attributes.Count - 1 Step 1                        boundColumn = New GridBoundColumn                        boundColumn.DataField = tableViewNode.Attributes(attrCount).Name                        boundColumn.AllowSorting = True                        boundColumn.ShowSortIcon = True                        boundColumn.HeaderText = tableViewNode.Attributes(attrCount).Name                        tableView.Columns.Add(boundColumn)                    Next                    tableView.DataBind()                Next                ' tableView.DataSource = dsChild            End If        Next        ' tableView.Controls.Add(childGrid)        RadGrid1.MasterTableView.DetailTables.Add(tableView)        RadGrid1.DataBind()        Session.Add("dt", dt)        Session.Add("ctrlListing", RadGrid1)        Return dt    End FunctionEnd Class
