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

Object Data Binding with ReportItem.DataObject

1 Answer 630 Views
General Discussions
This is a migrated thread and some comments may be shown as answers.
Tim
Top achievements
Rank 1
Tim asked on 27 Jun 2016, 12:14 PM

Hello,

I am attempting to pass cached data to a report. The data is cached in memory and retrieved. The report is designed using Report Designer and stored as .trdx. I create a dataobject that retrieves the data from the cache. I want to bind a table to a list of view models which match the described schema identically and contain all fields in the same order same spelling case sensitive. The header item is binding fine to reportitem.dataobject, but I cannot get the table to bind to the underlying List. it is saying that it contains LeadStatus that is not defined. However I have it defined in the XML

I load the report like so.

string reportsPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Reports");
            string reportName = reportsPath + @"\LeadsActivity.trdx";
             
            System.Xml.XmlReaderSettings settings = new System.Xml.XmlReaderSettings();
            settings.IgnoreWhitespace = true;
            //read the .trdx file contents
            using (System.Xml.XmlReader xmlReader = System.Xml.XmlReader.Create(reportName,settings))
            {
                Telerik.Reporting.XmlSerialization.ReportXmlSerializer xmlSerializer = new Telerik.Reporting.XmlSerialization.ReportXmlSerializer();
                //deserialize the .trdx report XML contents
                Telerik.Reporting.Report report = (Telerik.Reporting.Report) xmlSerializer.Deserialize(xmlReader);
                var dataobjs = new LeadsActivityDataProvider(cacheKey);
                report.DataSource = dataobjs;
                string mimType = string.Empty;
                string extension = string.Empty;
                Encoding encoding = null;
 
                // call Render() and retrieve raw array of bytes
                // write the pdf file
                byte[] buffer = Telerik.Reporting.Processing.ReportProcessor.Render(
                "PDF", report, null, out mimType, out extension, out encoding);
                // create a new file on disk and write the byte array to the file
                FileStream fs = new FileStream(reportsPath + @"\TestRpt.pdf", FileMode.Create);
                fs.Write(buffer, 0, buffer.Length);
                fs.Flush();
                fs.Close();
            }
            return reportsPath + @"\TestRpt.pdf";

[DataObject]
public class LeadsActivityDataProvider
{
    private ReportDataCache cache = new ReportDataCache();
    public string TestTitle { get; set; }
    public List<LeadActivityReportViewModel> TableData { get; set; }
    public LeadsActivityDataProvider(string cacheKey)
    {
        TestTitle = "Test Title";
        TableData = cache.Get<List<LeadActivityReportViewModel>>(cacheKey);
    }       
}

 

This  element works

<TextBox Width="7.9999213218689in" Height="0.499999980131786in" Left="0.0000394185371988in" Top="0in" Value="= ReportItem.DataObject.TestTitle" Name="Arial">
          <Style TextAlign="Center">
            <Font Name="Calibri" Size="12pt" Bold="False" />
          </Style>
        </TextBox>

However this table is giving me an Error

<Table Width="7.97916757624932in" Height="1.21770811465888in" Left="0.0208326975504557in" Top="0in" Name="table2">
          <Body>
            <Cells>
              <TableCell RowIndex="3" ColumnIndex="0" RowSpan="1" ColumnSpan="1">
                <ReportItem>
                  <TextBox Width="1.40624906538in" Height="0.203993031202274in" Left="3.3999605178833in" Top="0.100000063578288in" Value="=Fields.EventDate" Format="{0:d}" Name="textBox33">
                    <Style BackgroundColor="White" />
                  </TextBox>
                </ReportItem>
              </TableCell>
              <TableCell RowIndex="3" ColumnIndex="1" RowSpan="1" ColumnSpan="1">
                <ReportItem>
                  <TextBox Width="2.25000140574025in" Height="0.203993031202274in" Left="3.3999605178833in" Top="0.100000063578288in" Value="=Fields.FollowUpDate" Format="{0:d}" Name="textBox34">
                    <Style BackgroundColor="White" />
                  </TextBox>
                </ReportItem>
              </TableCell>
              <TableCell RowIndex="1" ColumnIndex="0" RowSpan="1" ColumnSpan="1">
                <ReportItem>
                  <TextBox Width="1.40624906538in" Height="0.236979214728681in" Left="0in" Top="0in" Value="=LeadStatus" Name="textBox37" StyleName="">
                    <Style BackgroundColor="White">
                      <Font Bold="True" />
                    </Style>
                  </TextBox>
                </ReportItem>
              </TableCell>
              <TableCell RowIndex="1" ColumnIndex="1" RowSpan="1" ColumnSpan="1">
                <ReportItem>
                  <TextBox Width="2.25000140574025in" Height="0.236979214728681in" Left="0in" Top="0in" Value="=Fields.CustomerName" Name="textBox38" StyleName="">
                    <Style BackgroundColor="White">
                      <Font Bold="True" />
                    </Style>
                  </TextBox>
                </ReportItem>
              </TableCell>
              <TableCell RowIndex="1" ColumnIndex="2" RowSpan="1" ColumnSpan="1">
                <ReportItem>
                  <TextBox Width="2.83333372958235in" Height="0.236979214728681in" Left="0in" Top="0in" Value="=Fields.SourceName" Name="textBox39" StyleName="">
                    <Style BackgroundColor="White">
                      <Font Bold="True" />
                    </Style>
                  </TextBox>
                </ReportItem>
              </TableCell>
              <TableCell RowIndex="1" ColumnIndex="3" RowSpan="1" ColumnSpan="1">
                <ReportItem>
                  <TextBox Width="1.48958337554672in" Height="0.236979214728681in" Left="0in" Top="0in" Value="= Fields.QuoteNumber" Name="textBox40" StyleName="">
                    <Style BackgroundColor="White">
                      <Font Bold="True" />
                    </Style>
                  </TextBox>
                </ReportItem>
              </TableCell>
              <TableCell RowIndex="2" ColumnIndex="0" RowSpan="1" ColumnSpan="1">
                <ReportItem>
                  <TextBox Width="1.40624906538in" Height="0.236979462490679in" Left="0in" Top="0in" Value="Event" Name="textBox1" StyleName="">
                    <Style BackgroundColor="White">
                      <Font Bold="False" Underline="True" />
                    </Style>
                  </TextBox>
                </ReportItem>
              </TableCell>
              <TableCell RowIndex="2" ColumnIndex="1" RowSpan="1" ColumnSpan="1">
                <ReportItem>
                  <TextBox Width="2.25000140574025in" Height="0.236979462490679in" Left="0in" Top="0in" Value="Follow Up" Name="textBox11" StyleName="">
                    <Style BackgroundColor="White">
                      <Font Bold="False" Underline="True" />
                    </Style>
                  </TextBox>
                </ReportItem>
              </TableCell>
              <TableCell RowIndex="2" ColumnIndex="2" RowSpan="1" ColumnSpan="1">
                <ReportItem>
                  <TextBox Width="2.83333372958235in" Height="0.236979462490679in" Left="0in" Top="0in" Value="Details" Name="textBox29" StyleName="">
                    <Style BackgroundColor="White">
                      <Font Bold="False" Underline="True" />
                    </Style>
                  </TextBox>
                </ReportItem>
              </TableCell>
              <TableCell RowIndex="2" ColumnIndex="3" RowSpan="1" ColumnSpan="1">
                <ReportItem>
                  <TextBox Width="1.48958337554672in" Height="0.236979462490679in" Left="0in" Top="0in" Name="textBox31" StyleName="">
                    <Style BackgroundColor="White">
                      <Font Bold="False" Underline="True" />
                    </Style>
                  </TextBox>
                </ReportItem>
              </TableCell>
              <TableCell RowIndex="4" ColumnIndex="0" RowSpan="1" ColumnSpan="1">
                <ReportItem>
                  <TextBox Width="1.40624906538in" Height="0.216145749138395in" Left="0in" Top="0in" Value="=Fields.EventCompletedBy" Format="{0}" Name="textBox42" StyleName="">
                    <Style BackgroundColor="White" />
                  </TextBox>
                </ReportItem>
              </TableCell>
              <TableCell RowIndex="4" ColumnIndex="1" RowSpan="1" ColumnSpan="1">
                <ReportItem>
                  <TextBox Width="2.25000140574025in" Height="0.216145749138395in" Left="0in" Top="0in" Value="=Fields.SalesmanName" Name="textBox43" StyleName="">
                    <Style BackgroundColor="White" />
                  </TextBox>
                </ReportItem>
              </TableCell>
              <TableCell RowIndex="3" ColumnIndex="2" RowSpan="2" ColumnSpan="2">
                <ReportItem>
                  <TextBox Width="4.32291710512907in" Height="0.420138771518487in" Left="0in" Top="0in" Value="=Fields.EventDetails" Name="textBox30">
                    <Style BackgroundColor="White" />
                  </TextBox>
                </ReportItem>
              </TableCell>
              <TableCell RowIndex="0" ColumnIndex="0" RowSpan="1" ColumnSpan="1">
                <ReportItem>
                  <TextBox Width="1.40624906538in" Height="0.104166595363224in" Left="0in" Top="0in" Name="textBox8" StyleName="">
                    <Style BackgroundColor="White">
                      <Font Bold="True" />
                    </Style>
                  </TextBox>
                </ReportItem>
              </TableCell>
              <TableCell RowIndex="0" ColumnIndex="1" RowSpan="1" ColumnSpan="1">
                <ReportItem>
                  <TextBox Width="2.25000140574025in" Height="0.104166595363224in" Left="0in" Top="0in" Name="textBox9" StyleName="">
                    <Style BackgroundColor="White">
                      <Font Bold="True" />
                    </Style>
                  </TextBox>
                </ReportItem>
              </TableCell>
              <TableCell RowIndex="0" ColumnIndex="2" RowSpan="1" ColumnSpan="1">
                <ReportItem>
                  <TextBox Width="2.83333372958235in" Height="0.104166595363224in" Left="0in" Top="0in" Name="textBox10" StyleName="">
                    <Style BackgroundColor="White">
                      <Font Bold="True" />
                    </Style>
                  </TextBox>
                </ReportItem>
              </TableCell>
              <TableCell RowIndex="0" ColumnIndex="3" RowSpan="1" ColumnSpan="1">
                <ReportItem>
                  <TextBox Width="1.48958337554672in" Height="0.104166595363224in" Left="0in" Top="0in" Name="textBox12" StyleName="">
                    <Style BackgroundColor="White">
                      <Font Bold="True" />
                    </Style>
                  </TextBox>
                </ReportItem>
              </TableCell>
            </Cells>
            <Columns>
              <Column Width="1.40624906538001in" />
              <Column Width="2.25000140574025in" />
              <Column Width="2.83333372958235in" />
              <Column Width="1.48958337554672in" />
            </Columns>
            <Rows>
              <Row Height="0.104166603885721in" />
              <Row Height="0.236979028603148in" />
              <Row Height="0.236979518525301in" />
              <Row Height="0.203992951132829in" />
              <Row Height="0.216145760447272in" />
            </Rows>
          </Body>
          <Corner />
          <Style>
            <Font Name="Calibri" Size="11pt" />
          </Style>
          <RowGroups>
            <TableGroup Name="leadStatus1">
              <ChildGroups>
                <TableGroup Name="leadStatus">
                  <ChildGroups>
                    <TableGroup Name="group5" />
                    <TableGroup Name="group11" />
                    <TableGroup Name="group18" />
                    <TableGroup Name="detailTableGroup1">
                      <ChildGroups>
                        <TableGroup Name="group19" />
                        <TableGroup Name="group20" />
                      </ChildGroups>
                      <Groupings>
                        <Grouping />
                      </Groupings>
                    </TableGroup>
                  </ChildGroups>
                  <Groupings>
                    <Grouping Expression="=Fields.CustomerName" />
                  </Groupings>
                  <Sortings>
                    <Sorting Expression="=Fields.CustomerName" Direction="Asc" />
                  </Sortings>
                </TableGroup>
              </ChildGroups>
              <Groupings>
                <Grouping Expression="=Fields.LeadStatus" />
              </Groupings>
              <Sortings>
                <Sorting Expression="=Fields.LeadStatus" Direction="Asc" />
              </Sortings>
            </TableGroup>
          </RowGroups>
          <ColumnGroups>
            <TableGroup Name="tableGroup3">
              <ReportItem>
                <TextBox Width="1.40624906538in" Height="0.194444241854954in" Left="0in" Top="0in" Value="Status" Name="textBox3" StyleName="">
                  <Style>
                    <BorderStyle Bottom="Solid" />
                    <BorderColor Bottom="Black" />
                    <BorderWidth Bottom="1pt" />
                    <Font Name="Calibri" Size="11pt" Bold="True" />
                  </Style>
                </TextBox>
              </ReportItem>
              <ChildGroups>
                <TableGroup Name="group1">
                  <ReportItem>
                    <TextBox Width="1.40624906538in" Height="0.0250000016262168in" Left="0in" Top="0in" Name="textBox2" StyleName="">
                      <Style BackgroundColor="Black" />
                    </TextBox>
                  </ReportItem>
                  <ChildGroups>
                    <TableGroup Name="group14" />
                  </ChildGroups>
                </TableGroup>
              </ChildGroups>
            </TableGroup>
            <TableGroup Name="tableGroup4">
              <ReportItem>
                <TextBox Width="2.25000140574025in" Height="0.194444241854954in" Left="0in" Top="0in" Value="Customer" Name="textBox6" StyleName="">
                  <Style>
                    <BorderStyle Bottom="Solid" />
                    <BorderColor Bottom="Black" />
                    <BorderWidth Bottom="1pt" />
                    <Font Name="Calibri" Size="11pt" Bold="True" />
                  </Style>
                </TextBox>
              </ReportItem>
              <ChildGroups>
                <TableGroup Name="group2">
                  <ReportItem>
                    <TextBox Width="2.25000140574025in" Height="0.0250000016262168in" Left="0in" Top="0in" Name="textBox4" StyleName="">
                      <Style BackgroundColor="Black" />
                    </TextBox>
                  </ReportItem>
                  <ChildGroups>
                    <TableGroup Name="group15" />
                  </ChildGroups>
                </TableGroup>
              </ChildGroups>
            </TableGroup>
            <TableGroup Name="tableGroup5">
              <ReportItem>
                <TextBox Width="2.83333372958235in" Height="0.194444241854954in" Left="0in" Top="0in" Value="Source of Lead" Name="textBox36" StyleName="">
                  <Style>
                    <BorderStyle Bottom="Solid" />
                    <BorderColor Bottom="Black" />
                    <BorderWidth Bottom="1pt" />
                    <Font Name="Calibri" Size="11pt" Bold="True" />
                  </Style>
                </TextBox>
              </ReportItem>
              <ChildGroups>
                <TableGroup Name="group3">
                  <ReportItem>
                    <TextBox Width="2.83333372958235in" Height="0.0250000016262168in" Left="0in" Top="0in" Name="textBox5" StyleName="">
                      <Style BackgroundColor="Black" />
                    </TextBox>
                  </ReportItem>
                  <ChildGroups>
                    <TableGroup Name="group16" />
                  </ChildGroups>
                </TableGroup>
              </ChildGroups>
            </TableGroup>
            <TableGroup Name="group">
              <ReportItem>
                <TextBox Width="1.48958337554672in" Height="0.194444241854954in" Left="0in" Top="0in" Value="Quote #" Name="textBox41" StyleName="">
                  <Style>
                    <BorderStyle Bottom="Solid" />
                    <BorderColor Bottom="Black" />
                    <BorderWidth Bottom="1pt" />
                    <Font Name="Calibri" Size="11pt" Bold="True" />
                  </Style>
                </TextBox>
              </ReportItem>
              <ChildGroups>
                <TableGroup Name="group4">
                  <ReportItem>
                    <TextBox Width="1.48958337554672in" Height="0.0250000016262168in" Left="0in" Top="0in" Name="textBox7" StyleName="">
                      <Style BackgroundColor="Black" />
                    </TextBox>
                  </ReportItem>
                  <ChildGroups>
                    <TableGroup Name="group17" />
                  </ChildGroups>
                </TableGroup>
              </ChildGroups>
            </TableGroup>
          </ColumnGroups>
          <Bindings>
            <Binding Path="DataSource" Expression="ReportItem.DataObject.TableData" />
          </Bindings>
        </Table>

 

Here is the view model

public class LeadActivityReportViewModel : ViewModelBaseActive {
         
    public string   CacheID          {get; set;}
    public string   CustomerName     {get; set;}
    public string   EventCompletedBy {get; set;}
    public DateTime EventDate        {get; set;}
    public string   EventDetails     {get; set;}
    public DateTime FollowUpDate     {get; set;}
    public string   LeadStatus       {get; set;}
    public string   QuoteNumber      {get; set;}
    public int      Row              {get; set;}
    public string   SalesmanName     {get; set;}
    public string   SourceName       {get; set;}
         
}

 

 

 

 

 

1 Answer, 1 is accepted

Sort by
0
Katia
Telerik team
answered on 28 Jun 2016, 11:58 AM
Hi Tim,

Test using ObjectDataSource component as it is not recommended to bind report's DataSource directly to the business object. Instead, you can retrieve the data into an ObjectDataSource component and set it as report's DataSource.

Also, check if TableData collection items are retrieved successfully using the provided logic.


Regards,
Katia
Telerik
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
Tags
General Discussions
Asked by
Tim
Top achievements
Rank 1
Answers by
Katia
Telerik team
Share this question
or