Archive for the ‘Intersoft DataSource™’ Category
UPDATE: Intersoft WebUI Studio for Silverlight R1 SP1
Hi all,
We just released the SP1 for Intersoft WebUI Studio for Silverlight R1. For existing customers the new service pack can be obtain from Developer Network 3, under My Components, and for prospects customers you can download the new service pack from Request Trial page.
The main focus for this WebUI Studio for Silverlight SP1 is full Silverlight 3 support and .NET Ria support for all Intersoft Silverlight controls. You can perform binding to .NET Ria Services using element to element binding architecture to the following controls:
- Intersoft Presenter
- Data Presenter Manager
- Grid Presenter
- List Presenter
- Icon Presenter
- Intersoft Aqua
- Cover Flow
- Fish Eye
Note that you need .NET Ria Services installed before you can play around with this new enhancement which you can grab from this link. The latest one was July 2009 Preview.
Besides .NET Ria Support we also fix issue where Intersoft Aqua doesn’t work when opened in Silverlight Out of Browser environment.
You can check the details about this enhancement in the documentation that comes with the SP1 installer, or you can read the white paper from this link.
For full information about this new service pack you can check it here.
· Intersoft Presenter
o Data Presenter Manager
o Grid Presenter
o List Presenter
o Icon Presenter
· Intersoft Aqua
o Cover Flow
o Fish Eye
Intersoft WebUI Studio 2009 R1 for Silverlight Beta is available!
Hi all, the long awaited beta version for WebUI Studio 2009 R1 for Silverlight is up. This package includes the latest version of Intersoft Presenter for Silverlight, Intersoft WebAqua for Silverlight and Intersoft DataSource for Silverlight.
If you haven’t read the previous blog about the Intersoft Presenter and Intersoft Data Source, I suggest you do read it first, because it might help understanding the Intersoft Presenter’s concept better.
We also have the Live Demo up and running which you can explore at http://sirius2.intersoftpt.com/presenter.
Intersoft WebAqua
Intersoft WebCoverFlow as member of WebAqua family has been enhanced to natively support Intersoft Presenter’s concept and architecture so that it benefiting from the fundamental concepts of Intersoft Presenter such as:
- Data Bound Capability
- Extensibility through IDataPresenter
- Centralized Data Distribution
- Data Drilling Capability
Data Bound Capability allow Intersoft WebCoverFlow to be bind to Intersoft Data Source control declaratively. Which mean binding data source to WebCoverFlow is lots easier now, and you can connect to XML document, or WCF Data Service or ADO.NET Data Service (a.k.a Astoria Data Service)
Extensibility through IDataPresenter allow Intersoft WebCoverFlow to be attached to Data Presenter Manager and can benefiting from the Centralized Data Distribution that perform by Data Presenter Manager, where you will see the same data through out the entire presentation (for example if the data is filtered and sorted)
Data Drilling capability allow Intersoft WebCoverFlow perform two Data Drilling concept that Intersoft Presenter introduced. Synchronized Data Drilling and Hybrid Data Drilling
Intersoft Presenter™
In-line editing
Added in-line editing capability to Intersoft Presenter™ where you can perform CUD operation declaratively thanks to Intersoft Data Source™.
Follows are several options that you can play around with Intersoft Presenter™ in-line editing capability.
- AllowAdd / AllowEdit / AllowDelete
You can turn on / off the CUD capability from the above properties, and you can do it anytime by changing the value of the property. - Editing Mode
You can modify how to enter the editing mode behavior for each presenter using EditingMode property. The default behavior is second click, which mean you need to select the item first (1st click) and then perform another click (2nd click) to enter the editing mode. The other behavior is single click which mean when-ever you select the item it will directly go to editing mode.
Note: in Icon Presenter and List Presenter you need to click the text to enter the editing mode. - Lost Focus Action
You can also modify the lost focus behavior from LostFocusAction property. By default if you accidentally lost focus from the current editing mode, it will reset the data back to its original state. You can change it to AlwaysUpdate so that when ever you accidentally lost focus it will perform data updating. - Exclusive Lock
When in editing mode, the presenter will have exclusive lock to all UI interaction that might interupts the editing process. If the user accidentallyclick UI that might perform action that interupt the editing process, a warning indicator will be displayed (e.g. user click Refresh Button).

- Input Validation
You can perform your own validation before the data is committed to server using Input_Validation event handler. - Capture Error thrown by Data Service
If there’s error when performing CUD operation, the error message from Data Service will be displayed in an error box.

- In Grid Presenter, you can enter edit on key stroke by changing the property EnableEditOnKeyStroke to true.
- In Grid Presenter, you can change the “Enter” key behavior to Go to next Editable cell, or Exit Edit, or Update.
- In Grid Presenter, you can determine which column can be edited and which column isn’t from
<ISNet_Silverlight_Presenter:DataPresenterTextColumn Editable=”False” />
Keyboard Navigation
Added keyboard navigation feature to all presenter including WebCoverFlow. This feature is also incoporated with the Virtual Scroll mechanism, and Data Grouping mechanism.
Context Menu
Context Menu will be available if Enable Context Menu property is set to True, and the action that available in context menu is available.
Scroll to Last Selected Item
This feature can be enabled by changing the Property ScrollToLastSelectedItem to True in any Presenter. When this feature is enabled, anytime you perform sorting, paging, filtering, or any data operation that might put your selected item at invisible position that scrollable, it will scroll to that position.
This feature if you want to see the last selected item regardless the action that might hid it somewhere in the scroll position.
Customize Style
You can customize the style of all elements in Intersoft Presenter(tm) using Microsoft Expression Blend.
That’s all for now, if you find some possible bugs, or you feel that there are scenario that you need which is not covered yet, feel free to drop it in this blog.
Regards
Andry
Get Started: Intersoft March 2009 CTP for Silverlight
Hello,
Just wanna inform to you all that the Intersoft March 2009 CTP for Silverlight is up now. You can sign up and get the CTP from this website. It will then send you an email notification where to download the CTP directly.
Here are some key points and steps to get started with Intersoft CTP for Silverlight:
- You must have the following prerequisites installed. They are Silverlight Tools for Visual Studio 2008 SP1 and Silverlight 2.0 Client. You can grab them from here.
- Extract the downloaded file into any folder.

- The Intersoft Presenter™ assembly and Intersoft DataSource™ assembly are in Assemblies Folder.
- Run the ISNet_Silverlight_Samples.sln
- In the solutions explorer, you’ll see two projects. One is the Web Application that host the Silverlight Application which also has the Astoria Data Service connection along with the Wcf Data Service connection. And the other one is the Silverlight Application project that contains all the samples.

- To starts the demo just Run the project.
Note that the Visual Studio Development Server port is set to 15088. So if you have other project that currently running on this server you need to terminate it first.
Regards
Andry
Presenting Intersoft March 2009 CTP
Hi all, we’ve just release the Intersoft March 2009 CTP for Intersoft Presenter and Intersoft Data Source [http://www.intersoftpt.com/Corporate/Default.aspx?page=News&EventId=175]
There are lots of things in this CTP, so I’m going to give you some pointers about the new features / concept that available in this CTP. If you haven’t seen the February 2009 CTP release, i suggest you read my introduction along with others info in this blog starting from here.
You can sign up to download the CTP from here and here the getting started link to start exploring our CTP release.
Alternatively you can start exploring the live demo at http://sirius2.intersoftpt.com/presenter.
Intersoft Presenter™
What’s new in March 2009 CTP?
Revamped Action Box:
In February 2009 CTP, we have a Filter Box that contains the filter option that allows you to filter in / out particular condition. Now in March 2009 CTP we revamped it to an “Action Box” where you can also perform data grouping related actions in it as well.
We also preparing the architecture so that in the future release you’re able to insert your custom action to this action box.
Data Grouping Capability:
The grouping functionality can be accessed via the “Action Box” located on the right of every column header, by clicking the “Group” button it will group the presenter based on their own unique grouping mechanism.
You can also re-order the group column by dragging it to another location or you can remove the group by clicking the “Ungroup” button at the top of the Action Box, or simply click the (X) red button at each of the group column. Furthermore since each group column represents the actual column, you directly perform sorting to respective column by clicking the group column.
Grouping behaviors for each Presenter:
Paging:
We implement two model of paging they are Client Side Paging and Server Side Paging.
Client side paging means that it will page the data that the Presenter currently holds. So this feature is more applicable if you have relatively small amounts of data or unbound considering the data that are sent from server at first load.
Server side paging means that it will request the particular page data from the server by providing paging information such as Skip and Take along with other information such as Sorting, Filtering, and so on.
This feature is more applicable if you have large amount of data and you want the presenter shows the particular page data as fast as possible.
Client Side Filtering & Sorting:
With the same consideration with paging, we also offers client side filtering and sorting, besides the default behavior where every filtering / sorting request will look up to respective data source control.
Again the reason is to cover scenario where it’s more desired to load all the data at first load then since you have all the data it’s not necessary to request it back and forth to the server anymore, this is where Client Side Filtering & Sorting feature will come handy.
Data Drilling:
This CTP also include Data Drilling feature that you can enable declaratively (no code needed) to all Intersoft Presenter.
As shown in the pictures above, since the child presenter is a new presenter object, you can freely configure new settings for each child presenter that can be different from its parent to give different look and feel.
In this CTP to perform drill down, you need to double click the item, and to perform drill up you can use the “bread crumb” indicator at the top of the presenter.
Hybrid Data Drilling:
Hybrid Data Drilling is the unique concept that we include in our Intersoft Presenter. All the stand-alone presenters (Grid Presenter, Icon Presenter and List Presenter) can have child presenter from any of the stand-alone presenters.
Meaning that you can have Grid Presenter for your root presenter, and then you can have Icon Presenter for its child or List Presenter for the other child. Basically you can mix-around the child presenter with any type of stand-alone presenters.
This will provide you more freedom to design your user experience.
Virtual Scroll™ Mechanism Updated:
The Virtual Scroll™ mechanism is updated to support Grouping feature so it still provide smooth scrolling experience.
Everything Synchronized™ Mechanism Updated:
The Everything Synchronized™ mechanism is also updated to support Grouping feature. Now the grouping states (expanded / collapsed) are also kept when you switch between views.
New Loading Indicator:
Breaking Changes in March CTP 2009?
Grid Presenter
Grid Presenter Table is striped out from Grid Presenter, now all the settings need to be configured through Grid Presenter.
This change needed to support the Data Drilling and Hybrid Data Drilling Features
Generic.xaml
Most of the Presenter and supporting controls has their Generic.xaml updated, so for those who edit the template of any presenter needs to check and perform the changes accordingly.
Intersoft DataSource™
What’s new in March 2009 CTP?
Enable Caching
You can enable caching to any of Data Source control, when you do this the data source will save the data retrieved to cache and the next time you request the data, it will load from the cache.
You can save the cache per xaml page, or globally by defining the its behavior through CacheScope property.
Data Drilling Support
The select arguments now provide additional information to perform data drilling. Those information are
- Expand {the child data member}
- ParentKey {the key value of its parent}
XML Data Source load external XML File
The XML Data Source now has the ability to load external xml file asynchronously. You need to set the LoadingMode to LoadingMode.ExternalResource then specify the location of the file in its DataFile property. Note that you need to take care the security access so that the Silverlight Application can access the file located in DataFile property.
Behind The Scene: Astoria Data Source Control
Hi
Probably some of you are confused with the declarative configuration that you need to set up when you want to use Astoria Data Source control from Intersoft DataSource™. In this post I’ll try to elaborate the things one by one so hopefully its easier to understand how the Astoria Data Source control works.
First of all let me show you one way to select data from Astoria Data Service manually. I assumed you already know how to establish Astoria Data Service, or you can always learn it from my earlier post, or from MSDN references.
As you can see we need to do lots of things, creating the service proxy / object, create the query, call the asynchronous call. Then attached the asynchronous call back where we can grab the data then apply it to our UI control. Furthermore we’re going to need similar process for Create, Update and Delete operation which might take some time to manage it properly.
Here where Astoria Data Source tries to help, it tries to simply the CRUD operation to ADO.NET Data Service. Please see the note i put in the picture above. Those are the information we need for Astoria Data Source declarative configuration.
The Reference Namespace was defined when you set the service reference in your silverlight project.
The Service TypeName is your ADO.NET Data Service’s Object Context where you define in your MyNorthwind.svc.cs file.
The Service Host is basically the host that contains the ADO.NET Data Service file, while the Service Target is the actual ADO.NET Data Service file. Later when you deploy the project, you need to adjust the Service Host accordingly to where you host your application.
The Data Object TypeName is object type that available in your ADO.NET Data Service, in this case i used Northwind Database therefore I’ll have Customers, Products, Employees, etc as my Data Object TypeName.
Here is what its how the declarative configuration looks like:
Given this info, its enough for us to help you perform CRUD operation in more elegant way. One thing you should note that you can also specified the configuration individually per AstoriaDataService, something like:
In this configuration, the AstoriaDataService[Customers] will look to http://localhost:52026/MyNorthwind1.svc instead of http://localhost:52025/MyNorthwind.svc. So if you have multiple services you don’t need to create additional data source control and configure other integrated features, you just need to set this individual settings to each data service and you’re set.
To do Data Binding with this Astoria Data Source: Data Binding to Silverlight Data Bound Control using Intersoft Data Source(tm)
To do CRUD operation using Astoria Data Source: Performing CRUD to Silverlight Data Grid using Intersoft Data Source ™
To do Child Data Retrieval using Astoria Data Source: Performing Child Data Retrieval using Intersoft DataSource™
Next I want to show you event handlers that Astoria Data Source has, and what you can do at each event.
- Object Creating Event
This is called when Service Object is going to be created.
–> at this point
proxy = new MySilverlightApplication.MyServiceReference.NorthwindEntities(new Uri(“http://localhost:52025/MyNorthwind.svc”));
- Object Created Event
This event is called when Service Object has been created.
proxy = new MySilverlightApplication.MyServiceReference.NorthwindEntities(new Uri(“http://localhost:52025/MyNorthwind.svc”));
–> at this pointYou can grab the Service Object from the event argument, and probably change some property inside it if necessary.
- Object Disposing Event
This event is called when the Service Object is going to be disposed.
Again we passed the Service Object here, just in case you need to do additional clear up before the Service Object is disposed. - Selecting Event
This event is called before we perform asynchronous call to perform data selection. You can add / change additional select argument or supply your own query like what i did in Performing Child Data Retrieval using Intersoft DataSource™ .
–> at this point
serviceQuery.BeginExecute(new AsyncCallback(GetCustomersCompleted), serviceQuery);
- Selected Event
This event is called when the asynchronous call is finished, and the data has been retrieved.private void
GetCustomersCompleted(IAsyncResult result)
{–> at this point
In this event you can grab the data using args.ReturnValue, and probably perform additional sub query as necessary before returning it to the UI. You can also check for Exception if the ADO.NET Data Service returns an exception from args.Exception.
- Inserting Event
This event is called before the inserting process is executed, you can grab the actual object that going to be inserted at e.NewObjectInstance where you might want to change things if necessary. - Inserted Event
This event is called after the inserting process is executed, you can grab the Exception as usual if the ADO.NET Data Service returns an exception from args.Exception. You can also grab the return object from ADO.NET Data Service using args.ReturnValue. - Updating Event
This event is called before the updating process is executed, you can grab the actual object that going to be updated at e.NewObjectInstance where you might want to change things if necessary. If you supply the original object (for Concurrency checking purpose) you can grab the object using e.OldObjectInstance. - Updated Event
This event is called after the updating process is executed, you can grab the Exception as usual if the ADO.NET Data Service returns an exception from args.Exception. You can also grab the return object from ADO.NET Data Service using args.ReturnValue. - Deleting Event
This event is called before the deleting process is executed, you can grab the actual object that going to be deleted at e.OldObjectInstancewhere you might want to change things if necessary. - Deleted Event
This event is called after the deleting process is executed, you can grab the Exception as usual if the ADO.NET Data Service returns an exception from args.Exception. You can also grab the return object from ADO.NET Data Service using args.ReturnValue.
In all of this event you have e.ServiceName to distinguish operation between AstoriaDataService, so you can target the action accordingly per service.
Thats all for now.
Hope this clear things about how Astoria Data Source control works.
Regards
Andry
Performing Child Data Retrieval using Intersoft DataSource™
Hello,
I promised several of our respondents to have a sample that demonstrate capability to retrieve child collection from parent object using Intersoft Data Source™. So I’ll try to elaborate it in this post in detail with step by step approach.
- Sign up and download the Intersoft Data Source™ CTP release from here.
- Follow the steps to create Astoria (ADO.NET Data Service) connection and set the service reference to your Silverlight Application Project. (Here is the link)
- Don’t forget to add reference to ISNet.Silverlight, ISNet.SIlverlight.DataSource and System.Windows.Controls.Data.
- Lets start by creating the UI first.
In this sample I’m going to use three data grids to show Customers – Orders – Orders Details relationship. So the first Grid will show the list of Customers, the second Grid will show the Orders from selected customer in the Customers Data Grid, and the third Grid will show the Order Details from selected order in Orders Data Grid.
- Insert the Astoria Data Source and configure its settings.
- Since I want my grid to retrieve the child data when ever i select a row in the grid, I’m going to hook the SelectionChanged event in Customers Grid and Orders Grid
- Next we need to attached Selecting and Selected Event Handler in Astoria Data Source, so that we can control the data retrieval process later on.
- Everything is set, and now lets go to the code behind.
- First of all we want the Application to load the data directly when application is loaded, therefore we need to call AstoriaDataSource1.Select(“Customers”) when the application is ready.
- Remember that we attached SelectionChanged event for Customers Grid and Orders Grid? Lets put some action into it.
So we will retrieve Orders when an item in Customers Grid is selected, and we will retrieve Orders Details when an item in Orders Grid is selected.
- Now is the important part. When we call AstoriaDataSource1.Select(“Orders”) in CustomersGrid_SelectionChanged, we want it only to retrieve the Orders from selected item (Customer with specific CustomerID). So how can we handle this?
Currently you need to handle it at Astoria Data Source’s Selecting Event Handler as follows.
When you call AstoriaDataSource1.Select(“Orders”), it will asked the AstoriaDataSource to perform data retrieval process. You can interupt the process at two points which are at the beginning (Selecting) and at the ending (Selected). Since we want the AstoriaDataSource to select only Orders of current selected Customer, we need to provide advance query during Selecting event.
Customers customer = CustomersGrid.SelectedItem as Customers;
var query = from c in context.CreateQuery<Customers>(“Customers”).Expand(“Orders”)
where c.CustomerID == customer.CustomerID
select c;DataServiceQuery<Customers> serviceQuery = query as DataServiceQuery<Customers>;
e.DataServiceQuery = serviceQuery;
By providing e.DataServiceQuery with an advanced query like this, the Astoria Data Source will compile it and send it to Astoria Data Service.
- Lastly what you need to do is to handle the action when the data is retrieved at the Selected Event.
Since Astoria sends the data back as collection of EntityDescriptor, we need to do additional Linq query to get the object collection correctly.
In the query i also put additional checking c.Entity.GetType() == typeof(Orders) is to filter out parent data when we’re doing child data retrieval.
- And we’re done. Run your application and you’ll get something like this.
Regards
Andry
Performing CRUD to Silverlight Data Grid using Intersoft Data Source ™
Hi
In the last blog, i demonstrated how to do databinding to Silverlight Data Bound controls such as Data Grid, List Box and Combo Box. Continuing from that in this post I’m going to show to perform the CRUD operations which using the two ways data binding concept from silverlight.
Follows are step by steps to perform CRUD to Astoria Data Service through Intersoft Data Source control.
- Sign up and download the Intersoft Data Source™ CTP release from here.
- Follow the steps to create Astoria (ADO.NET Data Service) connection and set the service reference to your Silverlight Application Project. (Here is the link)
- Don’t forget to add reference to ISNet.Silverlight, ISNet.SIlverlight.DataSource and System.Windows.Controls.Data.
- Lets start to create the simple UI for this demo.
- First I’m going to insert the data grid and the Astoria Data Source
- After that I’m going to create several controller buttons to help the CRUD actions. These basically just buttons (Insert, Update button to launch a form, Delete button to delete the selected row, Reload button to reload the data)
- Next, I’m creating the form which contains CustomerID, ContactName and CompanyName with two ways data binding, so i just need to pass the DataContext from Grid to this Form.
- In Microsoft Expression Blend, you’ll get something like this
- After we finished with the UI, I’ll show you how to do the CRUD from the code behind.
- First of all we gonna perform the data retrieval (Read operation)
- Second, I’m inserting the event handler to the Controller.
Insert Button, will show up a form that supplied with the data context. Same goes for Update Button.
For the Delete Button, it will perform the data deletion to the current selected item in the grid (Delete operation).
- Lastly is handling the Create and Update Operation from the Form Event Handler.
- After that you can run the project, and try to insert new record, update and delete it. Note that you can’t delete the existing customers because it has relationship to another table.
Regards
Andry
Data Binding to Silverlight Data Bound Control using Intersoft Data Source(tm)
Hi
Several of our respondents interested to see how our data source control can perform data binding + CRUD operation to standard Silverlight Controls such as Data Grid, List Box and Combo Box.
So in this post, i’ll demonstrate it a bit. Follows are step by steps to perform data binding to Astoria Data Service through Intersoft Data Source control.
- Sign up and download the Intersoft Data Source™ CTP release from here.
- Create new project and use the Silverlight Application Template.
- Accept the notification to create a new ASP.NET Web Project to the solution to host Silverlight.
- Create new Astoria Data Model (ADO.NET Entity Data Model) in the ASP.NET Web Projects so we can consume it directly.
- Select Generate the model from database.
- Choose the database (I picked northwind.mdf, which also available in the downloaded sample).
- Check any Tables that you want to includes in the service.
- Next you need to create the Astoria Data Service (ADO.NET Data Service).
- Configure the configuration as below.
- Now we have the Astoria Data Service ready, to test it just view in browser the NorthindDataService.svc
- Now we go to the Silverlight Application Project and add reference to ISNet.Silverlight, ISNet.SIlverlight.DataSource and System.Windows.Controls.Data, and also don’t forget to add service reference to the Astoria Data Service you just created.
- Now in the Silverlight Project we create a new page (or you can use the page.xaml).
- Insert Astoria Data Source control, then insert several standard Silverlight Data Bound control as bellow
- Since all data transaction is Asynchronous we need to attached “Selected” event handler and do the data bind where data has been retrieved.
- Lastly we need to call the request, in the constructor (or during page load)
- When you run the project, you’ll see a text = “Loading…” which i put to indicated that the data is still in process. And when the data is retrieved i changed the text to “Loaded”. Just to simulate it, in the real application you might want to put a “blocker” when the data is being load so user won’t be confused.
I’ve also attached the sample project in this link, the page that contains the sample is DataBinding.xaml, to run it change the start up page at App.xaml.cs.
private void Application_Startup(object sender, StartupEventArgs e)
{
this.RootVisual = new DataBinding();
}
Result:
Regards
Andry
Next I’ll show you how to do CRUD operation using the data source control.
Try Intersoft Presenter™ CTP Live
Hi, forgot to mention that we also put the Intersoft Presenter™ February 2009 CTP Samples live @ http://sirius2.intersoftpt.com/presenter/.
So check it out.
Get Started: Intersoft February 2009 CTP for Silverlight
Hello,
Just wanna inform to you all that the Intersoft January 2009 CTP for Silverlight is up now. You can sign up and get the CTP from this website. It will then send you an email notification where to download the CTP directly.
Here are some key points and steps to get started with Intersoft CTP for Silverlight:
- You must have the following prerequisites installed. They are Silverlight Tools for Visual Studio 2008 SP1 and Silverlight 2.0 Client. You can grab them from here.
- Extract the downloaded file into any folder.

- The Intersoft Presenter™ assembly and Intersoft DataSource™ assembly are in Assemblies Folder.
- Run the ISNet_Silverlight_Samples.sln
- In the solutions explorer, you’ll see two projects. One is the Web Application that host the Silverlight Application which also has the Astoria Data Service connection along with the Wcf Data Service connection. And the other one is the Silverlight Application project that contains all the samples.

- To starts the demo just Run the project.
Note that the Visual Studio Development Server port is set to 15088. So if you have other project that currently running on this server you need to terminate it first.
Regards
Andry




































































