People often need to digitally work with a particular object in a domain, usually by creating, retrieving, updating, and deleting.
Provide a way to create, select, modify and delete objects that people need to work with.
Work-with based interfaces are best for people who have a grasp of the solution’s conceptual/domain model. They need to know that in order to change the shipping address for a customer they need to navigate to the customers list, select one to open it, go to the shipping data section, change, and save it. If your users are casual users or the general public, you should consider a more goal and task-oriented approach.
However, when the data that needs to be displayed in the grid is simple, or when the users are supposed to be able to find their way into the application (e.g. for internal enterprise applications), this pattern is a very practical solution. It is very common in Line of Business applications like Microsoft CRM, where the user is supposed to spend most of his job time working with it. It doesn’t presume to know the various kinds of tasks that people might want to execute; instead, it gives them sort of a carte blanche into the system’s information, which can be very empowering for those who can handle it.
Managing a list of objects it’s a very common need in line of business applications. For each object in the list, there are a several actions that can be applied to it, and this approach makes possible to select any command from the same screen.
They are usually combined with a Form that lets the user edit the related business entity.
Remember, this pattern essentially exposes the domain model to the end users, so you need to work with your users (or their representatives if need be) to ensure that the domain model itself matches the way they think about the domain. This is particularly important for the language used to identify the objects they are working with and the relationships between the objects.
If you have a hierarchy of objects (i.e., objects can have other child objects), which is common, you will need to address how to handle them. One approach is using a hierarchical grid like Infragistics offers, and if your users are very comfortable with that sort of paradigm, it can be an acceptable approach; however, you should consider whether or not a separate Form that is used to edit the objects and manage their children is not more appropriate for your target users. Look at the Edit-In-Place pattern for guidelines on this subject.
When implementing this pattern, consider these capabilities:
You should allow navigation and/or action on objects through one or more of the following methods.
Inline Commands (Using Edit-In-Place )
Avoid redundancy between the command area and inline commands. For example, if there is an Update button in the command area, there should not be Update icons within table cells. This could confuse people who might wonder if they do different things.
Multiple selection tables are usually difficult to use. It’s difficult to handle errors when one of the commands fails for one row. Only allow multi-select in a table if there is good evidence that users need to perform actions on multiple rows at a time, and if you do support it, you need to decide if group operations should be transactional (all fail or all succeed) depending on your context. If not, you need a way to indicate which items failed and which succeeded.
Row selectors (radio buttons for single select or check boxes for multi select) should only be disabled if all actions are not valid. For example, if a table contains Update and Delete buttons in a command area, a row selector may only be disabled if the user is prohibited from both updating and deleting that row.
Infragistics has some tools that can jumpstart your efforts to implement this pattern. Broken down by technology, they are as follows.
You can use the inline editing capabilities of the NetAdvantage for Silverlight xamWebGrid control for this.
You can use the NetAdvantage for Windows Forms WinGrid control to implement this pattern.
You can implement this pattern using the NetAdvantage for WPF XamDataGrid control.
The primary example from Microsoft CRM is an example of a complex Work With implementation. Some actions like opening an activity are not explicitly shown in the page and are done by double clicking the row.
http://quince.infragistics.com/115t
Backpackit.com uses this pattern to manage lists of things. Even if it’s targeted to novice users, the data in each list is quite simple, so the pattern works well. Instead of providing page buttons for actions for each item, it displays a trashcan icon and an “Edit” link action when the mouse hovers over the item. It also displays a “Move” icon that can be used to sort the list by dragging and dropping.
http://quince.infragistics.com/119u
Shopping Carts are a variant of the Work With pattern. They have a list of items and commands that can be applied to single or multiple items. They are usually not shown as grids, and the number of commands available is limited because they are focused on casual users.
http://quince.infragistics.com/1195
Infragistics hierarchical grid controls for ASP.NET, Windows Forms, WPF (shown here), Silverlight, and JSF are geared precisely towards providing a flexible implementation of this pattern.
http://quince.infragistics.com/10y4
This is a simple sample using the Infragistics Silverlight xamWebGrid that illustrates how you might create a hierarchical implementation of this pattern.
http://quince.infragistics.com/115g
A mailbox is an example of a work with pattern. In microsoft outlook the items are listed in a table. Each column in the table has it's own shortcut menu with actions for the selected item.
http://quince.infragistics.com/3x8u
Oracle Browser Look and Feel Guidelines, Table Navigation/Action Methods