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

linqtoXML datasource to bind to item template

1 Answer 36 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Connie
Top achievements
Rank 1
Connie asked on 16 Jul 2010, 07:22 PM
Hi there,

I'm using linq to query XML and bind to RadGrid.

Here is the test XML:
<Results>
    <Result>
        <Url>Url 2</Url>
        <Title>Title 1</Title>
        <FileExtension>PPT</FileExtension>
        <Description>Desc 1</Description>
        <Size>36KB</Size>
        <Author>L1, F1</Author>
        <WriteDate>2010-04-29</WriteDate>
        <Rank>881</Rank>
    </Result>
    <Result>
        <Url>Url 1</Url>
        <Title>Title 2</Title>
        <FileExtension>PPT</FileExtension>
        <Description>Desc 2</Description>
        <Size>72KB</Size>
        <Author>L2, F2</Author>
        <WriteDate>2010-04-30</WriteDate>
        <Rank>825</Rank>
    </Result>
</Results>

My aspx page:
<telerik:RadGrid ID="RadGrid1" Width="97%" AutoGenerateColumns="false" 
             AllowPaging="True" PageSize="15" runat="server" AllowSorting="True"
             OnNeedDataSource="RadGrid1_NeedDataSource" GridLines="None">
              <MasterTableView Width="100%" >
              <ItemTemplate>
                  <div>
                       <span>
                       <asp:HyperLink runat="server" ID="lnkResultUrl" NavigateUrl='<%#DataBinder.Eval(Container.DataItem, "Url")%> '
                            Text='<%#DataBinder.Eval(Container.DataItem, "Title")%> ' />
                       <br />
                    </span>
                    <div>
                       <asp:Label runat="server" ID="lblResultSummay1" Text='<%#DataBinder.Eval(Container.DataItem, "Description")%> '></asp:Label>
                       <br />
                    </div>
                    <p>
                       <span>
                             <asp:HyperLink runat="server" ID="lnkResult" NavigateUrl='<%#DataBinder.Eval(Container.DataItem, "Url")%> '
                            Text='<%#DataBinder.Eval(Container.DataItem, "Url")%> ' />
                       </span
                         
                       <asp:Label runat="server" ID="Label1" Text='<%#DataBinder.Eval(Container.DataItem, "Size")%> '></asp:Label>
                         
                       <asp:Label runat="server" ID="Label2" Text='<%#DataBinder.Eval(Container.DataItem, "Author")%> '></asp:Label
                         
                       <asp:Label runat="server" ID="Label3" Text='<%#DataBinder.Eval(Container.DataItem, "WriteDate")%> '></asp:Label>
                       <br />
                    </p>
                  </div>
                </ItemTemplate>
              </MasterTableView>
              <PagerStyle Mode="NextPrevAndNumeric"  PagerTextFormat="Change page: {4}  |  Displaying page {0} of {1}, items {2} to {3} of {5}"/>
                 <FilterMenu EnableTheming="True">
                    <CollapseAnimation Duration="200" Type="OutQuint" />
                </FilterMenu>
            </telerik:RadGrid>

My code behind in NeedDataSource
XElement xe= XElement.Parse(@"<Results>
                                    <Result>
                                    <Url>Url 2</Url>
                                    <Title>Title 1</Title>
                                    <FileExtension>PPT</FileExtension>
                                    <Description>Desc 1</Description>
                                    <Size>36KB</Size>
                                    <Author>L1, F1</Author>
                                    <WriteDate>2010-04-29</WriteDate>
                                    <Rank>881</Rank>
                                    </Result>
                                    <Result>
                                    <Url>Url 1</Url>
                                    <Title>Title 2</Title>
                                    <FileExtension>PPT</FileExtension>
                                    <Description>Desc 2</Description>
                                    <Size>72KB</Size>
                                    <Author>L2, F2</Author>
                                    <WriteDate>2010-04-30</WriteDate>
                                    <Rank>825</Rank>
                                    </Result>
                                </Results>");
  
var xTest = from xItem in xe.Elements("Result")
            select new
            {
                Url = xItem.Element("Url").Value,
                Title = xItem.Element("Title").Value,
                FileExtension = xItem.Element("FileExtension").Value,
                Description = xItem.Element("Description").Value,
                Size = xItem.Element("Size").Value,
                Author = xItem.Element("Author").Value,
                WriteDate = xItem.Element("WriteDate").Value,
                Rank = xItem.Element("Rank").Value
            };
                                      
RadGrid1.DataSource = xTest;

It came no result, but if I remove Item template, change AutoGenerateColumns to true, it display the two records. It looks like the data is not binded to item template correctly. I also tried <%# Bind("Size") %>, but it doesn't work, what is the correct way to bind data column?
I'm using telerik.Web.UI for .Net 3.5.
Could you please help? Thanks.

1 Answer, 1 is accepted

Sort by
0
Connie
Top achievements
Rank 1
answered on 16 Jul 2010, 08:30 PM
Please ignor my post. I found I need to define GridBoundColumn.
Tags
Grid
Asked by
Connie
Top achievements
Rank 1
Answers by
Connie
Top achievements
Rank 1
Share this question
or