ansoesil’s blog

“Learning is experience. Everything else is just information.” – Albert Einstein

Data Drilling in Intersoft Presenter™ Manager

with 7 comments

Hi all,

In the March 2009 CTP we introduce a declarative data drilling concept to Intersoft Presenter™. Data Drilling is one of the most wanted feature for a LOB application, so we thrive to make it easy to implement in our Intersoft Presenter™.

We have two main concepts for Data Drilling:

The Synchronized Data Drilling concept is implemented for Intersoft Presenter Manager, and the Hybrid Data Drillign concept is implemented for the Intersoft Presenters (Icon Presenter, List Presenter and Grid Presenter) along with other classes that implements IDataPresenter (which includes WebCoverFlow later on).

In this post, i’ll discuss the first concept first which is Synchronized Data Drilling in Intersoft Presenter Manager.

Synchronized Data Drilling

Pre-requisites:

In Presenter Manager, when you drill down  a data or drill up to its parent, you’ll see the data visualized in the same presenter. So whenever you switch the visualiation in any level, if you go down or up , you’ll see the drill down / drill up data in the same visualiation (synchronized).

To enable the Data Drilling in Presenter Manager, you need to specify child presenter manager in a property called ChildPresenterManager

Open Child Presenter Manager collection

Open Child Presenter Manager collection

synchronizeddatadrilling_childpresentermanager2

Fill detail for 1st Level Child

Fill detail for 2nd Level Child

Fill detail for 2nd Level Child

In the XAML you’ll see something like this:

synchronizeddatadrilling_childpresentermanager4

Basically this is just the thing you need to enable data drilling. However you also need to set up the DataSource control so it can provide our Presenter with the data, and also you need to set up the appearance for each presenter that attached to Presenter Manager. Let start with configuring Astoria Data Source.

When you have ADO.NET Data Service up and running, you only need to specify the necessary information to Astoria Data Source as follows

Configuring Astoria Data Source

Configuring Astoria Data Source

Then you need to configure what are the data that you want to retrieve at each service level.

synchronizeddatadrilling_astoriaconfiguration2

Specify the detail at each Data Service level

After you got the Astoria Data Source control configured, what you need to do is just set the Data Member and Data Source ID.

Set DataSourceID and DataMember

Set DataSourceID and DataMember

Lastly what you need to configure is the Presenter’s appearance. But i won’t go detail on this to make the topic more focus, so I’m just gonna give the binding field to Icon Presenter and List Presenter so you can see the data binding works.

synchronizeddatadrilling_childpresentermanager6

Ok we almost finished. Just one more thing, the Presenters (Grid Presenter, List Presenter, IconPresenter) are going to be reused in each level, therefore we need to update the binding information when necessary so that it still display the correct data.

For example:

BindingTextField, in Customers level we might want to set it to ContactName, however in Orders level or OrderDetails we want to set it to another field. To do this we provide a feature called property setters.

Open property setters for Root Level

Open property setters for Root Level

Fill in the Details, in this case we want to change BindingTextField property's value to Contact Name for IconPresenter1 and ListPresenter1

Fill in the Details, in this case we want to change BindingTextField property's value to Contact Name for IconPresenter1 and ListPresenter1

Do the same things for all its children

Do the same things for all its children

In the XAML you’ll see something like:

synchronizeddatadrilling_propertysetters4

After this you can have the Data Drilling feature in Presenter Manager enabled already. Try running your project and see what happens when you double click an item. You can grab my sample project from this link.

To Drill Up, you can click the indicator at the top left.

synchronizeddatadrilling_sample

Important Notes

  • When we request a data drilling (drill down) to ADO.NET Data Service, what its actually do is load parent with the specified ID then expand its child. E.g.    http://…./NorthwindDataService.svc/Customers(‘ALFKI’)$expand=Orders
  • When you drill down all the previous structure history will be kept (Grouping, Column Reordering, Sorting)
    So let say you drill down to Orders from Customers (ALFKI), perform grouping, column re-ordering and sorting. Then drill up, select another customer then drill down , all the grouping, column positioning and sorting states will be kept. But of course its showing the new data.

That’s all for now.
I’ll dicuss the other Data Drilling concept in the next post.
To experience the real application i suggest you to go to http://sirius2.intersoftpt.com/presenter and explore the samples there.

Regards

Andry

Sample Link

Btw you can also incorporate your custom view to perform data drilling later on, by implementing our interfaces. Like what just we do to our CoverFlow. Here’s are some snapshot coverflow in action.

synchronizeddatadrilling_coverflow

Written by ansoesil

March 10, 2009 at 11:55 am

7 Responses

Subscribe to comments with RSS.

  1. Andry, great post!

    Showing the property settings in XAML and Blend looks very good. The presenter series are shaping up very nicely!

    ..Ben

    Ben Hayat

    March 10, 2009 at 9:47 pm

  2. [...] Data Drilling in Intersoft Presenter™ Manager Conceptual and implementation of Intersoft Presenter’s built-in data drilling. [...]

  3. how to change row color in Intersoft GridPresenter
    i cant see anywhere to do that, can u help me in this regard …

    Thanks,

    ravi

    March 31, 2009 at 11:15 pm

  4. Hi Ravi,

    Unfortunately this customization is not ready in the March 2009 CTP bit, but we’ve provided some approach for user to modify the styles on demand (through an event handler) or by default (declarative and will be applied to all rows) in the latest development which you can try in our beta release soon.

    Thanks,
    Andry

    ansoesil

    April 1, 2009 at 7:11 am

  5. Hi Andry,

    Thkz for updating me. I hv one more Q’n Can i use GridPresenter refresh button with out those DataSource binding at deisgn time .. i didnt find any event handlers for the refresh button which lies at bottom of the grid ..

    Thanks,
    Ravi

    ravi

    April 1, 2009 at 3:48 pm

    • Hi ravi,

      Hmm we don’t have the event handler yet because we previously don’t think it might be needed. But since you asked this, i think it makes a lot of sense in many scenarios. So we will add the event, which you can force to cancel the default behavior and perform your own logic.

      Thanks again :)
      If you have any more difficulties, concern, suggestion just drop by, we’ll see how we can accommodate it.

      Regards
      Andry

      ansoesil

      April 1, 2009 at 5:08 pm


Leave a Reply