I had high hopes for Infragistics Web Hierarchical Data Grid control. Especially in NetAdvantage 10.3 release (current as of this post). Control from Aikido Framework, build on AJAX from ground up, lightweight and fast – I was really excited.
Unfortunately it didn’t turned out exactly as I expected.
First – WHDG cannot bind to a flat ADO.NET data table. Why, you ask, I need to bind flat data to an hierarchical control? Well, it’s the only grid in Aikido that supports OutlookGroupBy mode and I need to be able to group my flat data. But attempt to bind WHDG to DataTable throws an enigmatic InvalidOperationException without giving any clue as why. There’s a workaround – to create a dummy DataSet, add the table to it and bind control to the dataset – but that’s just silly. And that’s not the worst of it.
Pay-to-play behaviors is a cool way to save resources when you don’t need a feature, unfortunately behaviors don’t play nice together. Enable Paging and Grouping and with grid data spanning multiple pages – drag a column to a Group By area. Expected behavior would be all Group-by rows to show on a single page (several pages maybe, if actual number of groups is large). But instead number of pages remains the same, grid displays 1-2 group records per page with record count limited to page size.
Another unpleasant surprise – ColumnMoving behavior is not available in WHDG which is strange since it’s available in WebDataGrid upon which WHDG is based. Not available in Smart Tag/Design mode that is. If you go to ASPX page markup, it’s still available via Intellisence and after you add it, it’s available in grid’s property pages.
And it works! Until you enable Column Grouping that is. After that Column Moving is pretty much ignored.
This is really frustrating, especially considering that in legacy slow bloated UltraWebGrid paging, grouping and column moving work quite nicely together. Hopefully Infragistics will update WHDG soon, until then it’s not usable in real-life scenarios.
UPDATE: Infragistics has responded to this post, here you can find some interesting insights why some decisions were made about WHDG functionality.
UPDATE 2, 8/28/2012: As of version 12.1 WHDG still does not support normal grouping with paging, but there’s a workaround. Kiril from Infragistics described a way to simulate grouping via WHDG hierarchy. Technically it’s not a “real” grid group but a parent record instead. When you expand it – it displays “details” which are really child records. This way we have best of both worlds – performance via WHDG load on demand and grouping the way we want.
To address your questions in the blog post:
1. That is correct, the WHDG is not capable to binding to a flat data source, since it is a hierarchical control. Suggested work around is to add the DataTable into a DataSet, or to WebHierarchicalDataSource. I understand that you would like the most of the behaviors of flat grid plus Outlook Grouping functionality, however we felt that grouping adds hierarchy maybe not in terms of the actual data but in terms of implementing and supporting this control: rendering, object model etc. We are working on bringing the WHDG as close as we can to WDG in terms of functionality. But considering complexity of this control not everything will be adopted 1:1.
2. Paging + grouping. We consciously made the architectural decision of limiting paging functionality when grouping is enabled. That is correct, the pages are still counted on the basis of the actual data rows, not group-by rows. The reason is performance. If the group by rows were chosen to be counted during paging that would have meant that we have to bind to the entire data source in order to count the number of pages. UltraWebGrid indeed supports it on the level of grouped rows, but we get a lot of complains about performance of this grid.
If you look at the Web version of Outlook, the same exact principle of paging the data rows is followed, I am pretty sure for the same reason – performance.
3. Not all of the behaviors of WDG are supported in WHDG. ColumnMoving is among these. I am pretty sure it never appeared in the behaviors dialog for the HGrid, since it has to implement a specific interface for that. When it comes to aspx, we cannot hide these objects there since they all derive from the same parent. This page in our help system is the best source (aside from the behaviors dialog) for checking whether a behavior is supported by the WHDG: http://help.infragistics.com/NetAdvantage/ASPNET/2010.3/CLR4.0/?page=WebHierarchicalDataGrid_Behaviors.html
The good news is that we are targeting support for column moving in our next major release.
I totally agree with you. I am forced to migrate from UltraWebGrid to WebDataGrid or WebHierarchicalDataGrid and it really sucks. Examples, missing double click event, when having custom paging and you would like to filter a column from code behind, the custom paging can not be found. Related to the grid, the functionality of the WebExcelExporter, I can not add rows on top of the Excel with title information for example, …
I end up using WHDG as well. It requires a lot of work (as you could see by other posts on this blog) and Infragistics is not in a hurry with fixes, but my outlook on the control somewhat improved after I found ways to make stuff work. Hopefully new releases will make the product better.