Welcome to Pete Brown's 10rem.net

First time here? If you are a developer or are interested in Microsoft tools and technology, please consider subscribing to the latest posts.

You may also be interested in my blog archives, the articles section, or some of my lab projects such as the C64 emulator written in Silverlight.

(hide this)

Announcing: Silverlight Reporting on CodePlex

Pete Brown - 11 June 2010

Last month, I wrote a post with some ideas on how to create a report writer in Silverlight 4. At the time, I mentioned that I would upload the source to CodePlex and create a project out of it.

So, here it is. Silverlight Reporting!

 

image

The initial source code release contains pretty much the same code I wrote in the mentioned blog post. Subsequent releases will fold in more of what David did. David had some awesome ideas and approaches for dealing with all sorts of content, whereas I focused just on tabular data. David also had some good approaches to ensure Blendability, something I definitely need to incorporate.

At this point, I don't know where we'll take this project; it's nothing official, just something David and I are doing for the community. Feel free to take the source and use it in your own projects, commercial or otherwise.

We're not accepting community contributions at this point, but definitely accepting comments and ideas. Let us know if this is useful to you, and what the key things are that you want to see in this space in Silverlight.

   
posted by Pete Brown on Friday, June 11, 2010
filed under:    

6 comments for “Announcing: Silverlight Reporting on CodePlex”

  1. Jason Stevensonsays:
    Pete / Mark:

    I added a method to generate the Visuals to use as an On Screen Print Preview before printing.

    Calling the method produces a list of UIElements that I then display in an ItemsControl with a Pager control to browse the output.

    Thanks for the base of code to start with, its great!

    public List<UIElement> GenerateReportPreview(UIElement reportVisualContainter)
    {
    List<UIElement> pages = new List<UIElement>();

    bool hasMorePages = true;

    CurrentPageNumber = 0;

    int pageIndex = 0;

    while (hasMorePages)
    {
    if (pageIndex == 0)
    {
    BuildReport(reportVisualContainter.DesiredSize);
    TotalPageCount = _pageTrees.Count;
    CurrentPageNumber = 0;
    }

    if (_pageTrees.Count > 0)
    {
    CurrentPageNumber++;
    pages.Add(_pageTrees[pageIndex]);
    }

    hasMorePages = pageIndex < _pageTrees.Count - 1;

    pageIndex++;
    }

    return pages;
    }

Comment on this Post

Remember me