This is a migrated thread and some comments may be shown as answers.

Populating Radgrid with xml document

1 Answer 183 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Henry
Top achievements
Rank 1
Henry asked on 07 Nov 2011, 10:58 PM
I am having trouble reading this xml file into Telerik  Ajax RadGrid. The problem is that the xml file is in a weird format that Telerik does not seem to recognize.  Here is an example from the xml file that I want to read into my grid. Does anyone have any suggestions? Thanks
 

<Attribute>
     <Object>
         <Id>27</Id>
         <Type>212</Type>
    </Object>
   <AttributeDef>
        <Id>38</Id>
  </AttributeDef>
  <RowId>0</RowId>
  <StringValue/>
  <DecimalValue xsi:nil="true"/>
  <DateTimeValue xsi:nil="true"/>
  <LongStringValue/>
  <IsLinked>Y</IsLinked>
  <MayModify>Y</MayModify>
  <ValueDescription/>
</Attribute>

1 Answer, 1 is accepted

Sort by
0
Elliott
Top achievements
Rank 2
answered on 08 Nov 2011, 03:43 PM
I'd use XPath navigator to massage the data to a format that the grid will process
kode from a straightforward XML update

        <telerik:RadGrid ID="rgEmailAddress" DataSourceID="xdsEmailAddress" Skin="Office2007" Width="660px" runat="server" GridLines="None" >
        <MasterTableView DataKeyNames="Type" AutoGenerateColumns="false" EditMode="InPlace" GridLines="Both" >
        <Columns>
            <telerik:GridBoundColumn UniqueName="Type" DataField="Type" ReadOnly="true" HeaderText="Type" >
                <HeaderStyle CssClass="body_text_black_BOLD" Width="50px" />
                <ItemStyle CssClass="body_text_black" />
            </telerik:GridBoundColumn>
            <telerik:GridTemplateColumn UniqueName="Value" HeaderStyle-CssClass="body_text_black_BOLD" HeaderText="Email Address" >
                <ItemTemplate>
                    <asp:Label ID="lblEmailAddress" Text='<%#Eval("Value") %>' CssClass="body_text_black" width="400px" runat="server" />
                </ItemTemplate>
                <EditItemTemplate>
                    <telerik:radTextBox ID="rtbEmailAddress" Text='<%#Eval("Value") %>' Mask="" CssClass="body_text_black" Width="400px" runat="server" >
                    </telerik:radTextBox>
                    <asp:RegularExpressionValidator ID="revEmailAddress" ControlToValidate="rtbEmailAddress" ValidationExpression="^[\w\.\-]+@[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]{1,})*(\.[a-zA-Z]{2,3}){1,2}$" ErrorMessage="#" runat="server" />
                </EditItemTemplate>
            <HeaderStyle CssClass="body_text_black_BOLD" />
            </telerik:GridTemplateColumn>
            <telerik:GridEditCommandColumn HeaderText="Edit" HeaderStyle-CssClass="body_text_black_BOLD" />
        </Columns>
        </MasterTableView>
        </telerik:RadGrid>
 
...
    <asp:XmlDataSource ID="xdsEmailAddress" DataFile="~/App_Data/UserParameters.xml" 
        XPath="/Root/EmailAddresses/EmailAddress" runat="server"></asp:XmlDataSource>
Protected Sub rgEmailAddress_UpdateCommand(ByVal sender As Object, ByVal e As GridCommandEventArgs) Handles rgEmailAddress.UpdateCommand
    Dim gdItem As GridDataItem = Nothing
    Dim myNode As XmlNode = Nothing
    Dim rtbEmailAddress As RadTextBox = Nothing
    Dim EmailAddressType, EmailAddressValue As String
    Dim sb As StringBuilder = Nothing
 
    If TypeOf e.Item Is GridDataItem Then
    Else
        Exit Sub
    End If
    gdItem = DirectCast(e.Item, GridDataItem)
    EmailAddressType = CStr(gdItem.OwnerTableView.DataKeyValues(gdItem.ItemIndex)("Type"))
    rtbEmailAddress = gdItem.Cells(3).FindControl("rtbEmailAddress")
    sb = New StringBuilder("/Root/EmailAddresses/EmailAddress")
    sb.Append("[@Type='")
    sb.Append(EmailAddressType)
    sb.Append("']")
    myNode = xdsEmailAddress.GetXmlDocument().SelectSingleNode(sb.ToString)
    rtbEmailAddress = DirectCast(gdItem.Cells(3).FindControl("rtbEmailAddress"), RadTextBox)
    EmailAddressValue = rtbEmailAddress.Text
    myNode.Attributes("Value").Value = EmailAddressValue
    xdsEmailAddress.Save()
End Sub
<?xml version="1.0" encoding="utf-8"?>
<Root>
  <EmailAddresses>
    <EmailAddress Type="Express" Value="helpdesk@xpress.com" />
    <EmailAddress Type="JaneDoe" Value="JaneDoe@BowlingBallGroup.com" />
    <EmailAddress Type="From" Value="consultant@dickens.com" />
  </EmailAddresses>
</Root>

Tags
Grid
Asked by
Henry
Top achievements
Rank 1
Answers by
Elliott
Top achievements
Rank 2
Share this question
or