First of all, this is excellent work. There is only one minor bug that I can see in the current version but overall it's a damn fine piece of work, so well done! I'm just starting to work on development of a Struts Grid TagLib which will encompass many of the features listed above along with a few others, but my main area of interest lately has been in developing HTCs. Yes I know they aren't cross browser but my target audience is intranet users who all use IE
MouseOvers shouldn't change the colour of a selected row. But in order to conditionally check to see whether or not selected items are highlighted or not, you would need to set up an array/collection of selected rows..which leads me on to the first item on the wishlist (which I will get started on as soon as time permits :)
Use an array or collection to store the rowIndices of selected items and expose this so that the array can then be passed on and used e.g. grouping records. I've done this with an IE only grid, but I'm a lot better with vbscript than jscript. Have a look at the coolGrid on http://www.stedy.com for some inspiration.
Paging: It would be great if you could store a large number of records in jscript array and page through them without having to refresh the page.
TreeTable: This is my pet project at the moment. If your datasource contains records which have a child/parent relationship, it's nice to be able to display them as a TreeTable. Additional functionality like dragging and dropping children from one group to another is my current goal, but it's a tricky little sucker :)
One interesting feature I've added to my own grids has been the addition of tabs which set the css display property of predefined groups of columns (using COLGROUP) on or off. This is particularly useful when you have a large number of columns and want to avoid horizontal scrolling.
Thursday, December 11, 2003
You are probably right re mouseover - the color of the selected row should not change. I think this could be achieved just using '!important' in CSS rule - I'll try to do that.
You can retrieve the collection of the selected rows through the selection/values property. The call obj.getProperty("selection/values") returns the array of all selected row indices (in datasource order). Look at tutorial/grid/selection for an example.
Paging is in the plans but requires more research. I want to do it as much transparent to the end user as possible. Tricky part is enabling sort/filter/lookup on the full dataset (not loaded portion).
Tree (grid) is in the plans as well. I've made some prototypes to make sure the current structure of data model and templates will work for tree. But thats all.
Thank you for your comments.
Thursday, December 11, 2003
I think the GRID is a very powerful and good looking thing! But implementing paging in this widget is not very useful.
In my application I have implemented a serverside pageing in combination with the widget.
I must admit that paging without reload would be great but it is not practical at all. For example lets assume a table with 1 Million rows! Do you really want to load that mass of data by one fetch into one array only because a user is too stupid to insert a search criteria?
Surely you don't!
Moreover fetching 1 Million rows takes long time for the application server and the database server too and you have too send the data to the client. In my little example you could make a coffee break until the data arrives! And when you come back you will see that the browser hangs!
Tuesday, January 20, 2004
I currently page without reloading the page. Its a trip to the server but no page refresh. I just build the JS array string in a server side method by accessing a saved resultset and stream the js to the page then call a grid.refresh() at the end of the method. Same goes for the "refresh" button on my toolbar, except I create a new resultset and and send new arrays like the above. On my sort I create a new resultset with the appropriate sort and again re-stream the js to the browser. But then again the DB I use allows this.. Not sure about others.. So in the end.. the thing pages lightning fast with no page refreshes... Hope that gives you ideas..