OpenUI5: Grid: Does it support Groupings? - grid

I am looking at various widget libraries, and ran across OpenUI5. It appears to be reasonably complete. The one thing I can't seem to find is any grouping functionalities for Grids. For example, in other grids, I can grab a column, and drag/drop it into the header portion of the grid, and now my data is grouped by that column. I can do this for multiple levels. After doing this, the data is laid out almost like a combination tree/grid control. I find this very valuable. Does OpenUI5 support this? If not, is it in the plans? Here is an example

OpenUI5 has two main Table controls, one for it's Mobile-oriented library (sap.m), and one for it's Desktop-oriented library (sap.ui.table).
These table's do support drag-and-drop of columns, but for re-ordering not for grouping.
The merging feature of the sap.m table may be of interest, though it's not really the same as grouping. Also note the multi-header feature.
Another control similar to your use-case could be the TreeTable.
But, in short, it does not look like out-of-the-box OpenUI5 has a control that exactly matches your use-case.
I will say that it is pretty easy to extend OpenUI5 controls as they have a nice OO-flavored jQuery extension approach.
You could also open an issue on their GitHub page to make this a priority for a future release.

Related

Telerik Kendo Grid or Telerik RadGrid: offer many columns (scalability)

What you'Il often find when using a dynamically expandeable grid like Teleriks RadGrid or Kendo's Grid is that the more columns you offer to the user the more data needs to pulled in and the more heavier the query becomes. This happens partially because the grids don't pass the selected columns to the data source.
For example, if we have a Product with many components, locations, and other properties, we prefer not to pull in the properties we don't need.
In what way can the problem of needing to pull in so many data be mitigated? Is it possible to pass the selected columns to the data source? Or can the fields be loaded afterwards via a seperate AJAX call?
I know RadGrid and Kendo Grid are two completely different technologies but I'm interested in the answer to both. I'm sure someone must have seen the same issue with these types of grids.
One way to mitigate the problem is to apply server-side paging to the grid - that way only the data required will go over the wire. Generally the problem with data volume in grids is the rows rather than the columns.
Also, make sure the data source is being queried efficiently, particularly where you are joining data from different tables in your data source.

Variable number of categories/checkboxes

I am building a form for parents to enter health information for their students. Our nurses want to build it similar to what you fill out when you see a new doctor where they have categories and then conditions within the category that you would check if they apply to you. They want the number of categories and conditions to be variable so they can change them willy nilly as desired.
I need some ideas as to how to approach the UI side. My initial thought is a parent gridview with a row for each category and then inside that, a child gridview for each condition with its own checkbox. I already do a bit of work with gridviews and know how to access the nested objects so I'm not terribly worried about how to get the data back.
My question is this: Is there a better way and what suggestions would the community make that might be different or more efficient than using nested gridviews?
+1 for asking is there a better way?
What I'm about to suggest may end up being a little more complicated at first, but rest assured it will be worth it in the end.
There is a JavaScript framework named Knockout.js that is perfect for situations like these. Knockout vastly simplifies situations that where a variable amount of UI controls are needed.
http://knockoutjs.com/
Here is a tutorial on the website that has a similar situation to yours:
http://learn.knockoutjs.com/#/?tutorial=collections

Is it possible to create a table with a multi-level row using ASP.NET GridView or other control

I'm not sure if I'm using the correct terminology to describe my questions so I created a few mock ups to try to show what I am trying to do.
I have an existing table listing order detail information that looks something like this:
I have some additional attributes I want to add columns for, but I would like it to appear on a separate line as part of the same row sort of like this:
The reason I want to add these columns but have them appear on the second line of each row is that I want to display more data in each row but I don't want to make the row/page wider.
I did some googling for this problem, but I'm not even sure what the standard name for this type of display is so I wasn't able to come up with anything. The closest I found was [this code project link](http://www.codeproject.com/KB/webforms/MasterDetail.aspx
) which is close to, but not the same thing I am trying to do.
Not sure what to call it either (multiline gridview?) but it should be possible. I would suggest looking at making a grid with a template column and a formview inside the template. In the rowdatabound event of the grid you write code to bind your form to the row's data. I have used this technique before on nested grids, it should work with other controls as well. Might be simpler ways to do it too, not something I have had a need to work out before.
EDIT:
I just saw a similar question where someone provided a link to this article. Not quite what we were talking about here, but very similar. Thought I would include it here as well for future reference. To bad it was written 5 months after this question was asked...

ASP.Net - Good UI Design Question for Managing large number of items

We're currently working on a solution that involves managing a large number of parts for a project. In our database, we have a project table and we have a parts table. Those parts can be assigned to multiple projects and vise-versa. This is done through a link table.
We're happy on the database side and it wont be changed, however we're a bit stuck on how to display the UI in a user-friendly intuitive way.
There are about 6000 parts (...at the moment) and we need to be able to easily assign/unassign these parts from a project quickly and easily.
Does anyone have any good examples of this?
I have always found real-time filtering to be pleasant to work with and narrow down things. This can require your users to be somewhat computer literate though...
Furthermore I would consider something with D&D. I would imagine two lists (one with projects and one with modules) where I can multiselect on either list and drag a single item from the other list to that selection.
And if it is going to be an interface that's going to be heavily/repeatedly used, consider good keyboard support. Me personally find that repetetive tasks can be done MUCH faster if they can be accessed by hotkeys.
Just thinking out loud ...
There are two distinct parts to this. The first is selecting parts and projects from the database and the second is associating parts to/from projects. You should try to avoid doing both actions in a single dialog.
From your post, it appears that parts can be assigned to projects and that projects can be assigned to parts. So, a wizard approach might work:
project or part?
/ \
select project select part
| |
show list of parts show list of projects
| |
add/remove parts to project add/remove projects to part
When showing a list of projects/parts, use a simple, sorted list with a filter box. Using a tree or other categorised system can be ambiguous for the user. For example, if the list was of foods and there were categories for fruit and vegetable, where would you put tomato? A shopkeeper would probably put in in vegetables whereas a botanist would put it in with fruits. So, a simple sorted list with a search box (like FF's about:config) works surprisingly well.
I'd try a number of things, from a pure UI point of view, if your collection falls naturally into categories, I'm a big fan of cascading lists or a sortable, filterable grid. (or both combined)
Your choice will depend on your users computer literacy as well as space or technology constraints.
If you can spare the space, I think that two lists, perhaps selected items on the left, and the collection of items on the right with affordances such as checkmarks or >> << buttons are great.
I'd probably take a page out of Excel's book, it has some perfectly workable examples of this sort of thing.
I'd also take the time to add multi-level undo, working with large datasets is an absolute pain as a user when you have no recourse for simple mistakes, it should ideally track and handle whatever fiddly interaction your user needs to make.

Can you create an ASP.NET editing system for a class just by defining it?

I was watching a tutorial on Rails and was very impressed that you could so easily create an editing system for a class just by defining it.
Can this be done in ASP.NET?
I know there are ORMs out there, but do they come with an editing system?
To explain what I mean by an editing system, consider a class for defining people
class Person
{
string First_Name;
string Last_Name
}
And then perhaps with one bold stroke something like this:
CreateEditAbleClass(Person)
You would get the functionality below in a browser:
http://www.yart.com.au/images/orm_editor.jpg
And this functionality would extend to all the UML definitions – inheritance, association, aggregation etc. In addition, there would be a simple way of adding customisable validation and so forth.
I currently use DataGrids and a lot of manual coding to achieve these results.
You can do it with reflection. Using reflection, you can enumerate over the members of a class, and therefore create a form to edit the members.
Creating the code for rendering the web form based on the members of the class is a bit more code then I'm willing to type out here, but if you look into reflection you should be able to come up with your own solution in a couple hours.
Sure. This is off the top of my head, but I believe you could connect your class to an ObjectDataSource component which would in turn connect to a DetailsView control. So it's a hair more work, but it would be pretty trivial to have a method that created the needed items on the fly and bound them together.
This is called "Scaffolding".
It really depends on what you are using for your data layer or ORM. Entityspaces, for example, comes with a scaffolding generator.
Absolutely! Scaffolding in Ruby is known as Dynamic Data in ASP.NET. Scott Hanselman speaks to Dynamic Data here.
There's a screen cast from Scott Hunter that shows it off here. It's of note that it's pretty new (still in beta).
You can for simple sites/purposes but it quickly breaks down when you want to do something more complex. Like what happens if you don't want certain fields to be visible, what happens if you have a relationship to a subset of a certain class etc.
Having been down this path before I'm guessing you came at the issue by realizing that:
You spend alot of time creating similar forms/lists etc for similar entities.
You want to minimize this time and are considering if your forms can be automatically generated.
Basically, if you want it to be done automatically then you'll end up creating an overcomplicated system that does half of what you want and actually takes longer to implement.
If however, you want to drastically cut the amount of time doing and maintaining writing repetitive gui code then then I suggest using a declarative style form builder and table builder (like the form builder in ROR).
This lets you quickly create forms/tables without repeating yourself any more than necessary and also gives you the flexibility that you need for complex scenarios.

Resources