You're not kidding - I added IBindableList to my printer monitor component and hey-presto, a data grid of print jobs that is updated as the queue changes...can you imagine how difficult it would have been to do that in VB.Classic.
Duncan: That totally rocks :)
Try this with a datagrid:
- autoresize all columns to the longest string in the column. (requires pixel counting in custom dirty code relying on hwnd)
- bind a custom collection with custom classes and make the collection sortable. (get geared up for some serious ITypedList implementation and creation of property descriptor classes)
- include versioning in your custom classes in your custom collection when editing is enabled through a binded datagrid.
I'm pretty sure you're not having fun then :) For basic bindings, like binding a dataset or a simple readonly list, it's ok. For every job that requires more, it's horrible.
Frans: I agree. Some things are better left alone, but I would use it a lot for read-only situations...
Agreed, for read-only viewing it can be very helpful. I wished it was more usable though. Ah well... perhaps some day.. :)
There's a .NET global hotkey component up there - but there is no need for EventVB in the .NET world (thank goodness - it was taking over my life).
Do you know of an intuitive way to indicate that items in a grid can be moved up or down the ordering? I want to allow reordering of the print queue (subject to access rights, natch) but can't think how to visually represent it.
huh. Tough one. How about:
*If some of the rows are movable and some arn't how about using an icon column to represend a 'locked' row and an 'unlocked' row?
* actually, I'm not sure I'd use the datagrid for that, but something like a listview, since I can then use Drag-drop features. I'm not sure if you can imple,ent that functionality with a datagrid, but drag-drop is the most natural form of moving thing for a user...
* how about, for rows that are movable, the mouse cursor changes to a special 'drag' icon, like a hand or something?
*Maybe have two up/down arrow buttons on the side that only show when a movable row is selected...
* use tooltips to indicate the hovered on row that you can move it
*Movable rows are colored differently...
I can think of lots of things, it all depends on the look and feel of the app in question and what fits best with the overall design....
yeah - binding's great but I gave up on that control when I was trying to do "simple" things like implement a check box in the columns (you have to write a major workaround) or better yet, identify when the user has clicked on that check box. Can't be done! I am now a HUGE fan of Janus Gridex!!! I think everyone that uses it loves it.
Beyond rocks, it rules. We are using the heck out of it and it has saved tons of time. Lots to learn but once you understand the internals, baby it rules!
In fact, that was where I finally read that it "can't be done" which was the last straw that pushed me to Janus! btw: www.janusys.com :-) I believe Greg is also referring to GridEx in his rave review since someone named Greg also just emailed me (excellent use of the contact form, there Greg!!) to say how much he loves GridEx also.
Julie: Is it pure managed code or is it the good ol' interop grid I know and love from my VB days?
nevermind, just went to the site :) looks cool!
Hi Roy,
I've seen your blog entry is from last year, so you've probably moved on a bit. Thought you might be interesting in combing n-tier and databinding if you haven't already. Check out www.hyatt.lu for 3 good articles and forum support.