This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

Windows SharePoint Services 3.0 introduces several new list features that significantly enhance the list infrastructure, including folders in lists, list indexing, cross-list queries, and list item versioning.

Folders in Lists

Folders—one of the popular features from document libraries in Windows SharePoint Services 2.0—is now also available in lists. Folders allow more segregation of content within a single list, adding another level of versatility.

A new feature of folders is the ability to assign metadata to a specific folder. This creates a rich content holder that contains child content, while serving as more than a container. Essentially, this allows the folder to function as a separate, but fully functional, item type. An example of this can be seen in Windows SharePoint Services discussion boards. Each top-level discussion is a folder with metadata, containing one to n child objects. By modifying the appearance of the folder, a user can visualize the folder as another list item rather than as a container. You can use this model in custom lists to create a dynamic parent/child list.

Many business applications require rich container objects, for which a parent object includes both important data concerning itself, and one to n children with similar data. Normally, you handle this challenge by using lists in which a parent—or master—list selection drives the display of a child—or detail—list. Because you can now assign metadata to folders in a SharePoint list, you can achieve similar functionality with a single list.

For example, consider an Orders list. You can provision a folder as an order, and then assign metadata to it, such as order number, customer, and shipmentmethod. By doing so, you can make the folder mimic the master list functionality. You can then fill the folder with orderitems list items, each with its own metadata, such asitemnumber, description, and price, thus providing the rich functionality of a master/detail list within a single list.

List Indexing

Integral to Windows SharePoint Services as a platform is the ability to use its storage containers, specifically lists and document libraries, for application storage. Windows SharePoint Services 3.0 expands the capacity to use lists and libraries in this way by providing a rich storage model with performance capable of supporting applications, both external and those built upon the platform. One of the key ways that Windows SharePoint Services 3.0 enhances its storage containers is to include indexing on columns. By allowing a column to be indexed and its data stored as a simple name-value pair in a separate database, access to specific items in large lists is significantly improved.

List indexing allows SharePoint lists to become true data stores, capable of supporting external applications as well as simple team sites. For example, in the the Orders list previously described, indexing the order number column significantly improves access to specific items in the list in external requests. In the case of an external application with hundreds of thousands of records, indexing on columns can greatly improve performance and make it easier to use a SharePoint list as a storage device. Standard features of the platform, such as views, alerts, and RSS feeds, can be used as a data store explorer for internal use in simple team sites.

Cross-List Queries

Another improvement made with the idea of using Windows SharePoint Services storage more effectively is cross-list queries. Cross-list queries allow you to use the SPQuery object to query all the lists within a Web site or site collection. In Windows SharePoint Services 2.0 you had to iterate through the parent objects to obtain a collection of list objects, query the lists to return the items, and then build your own collection of list items from the multiple lists. The SPSiteDataQuery class allows you to perform cross-list queries quickly and efficiently, providing a rich querying capability, similar to SQL queries, within Windows SharePoint Services.

List Item Versions

Several improvements in Windows SharePoint Services 3.0 are implemented on the item level rather than on the entire list. Following is a list of several important new features.

  • Per-Item Security   Lists and document libraries provide item-level security and the ability to set roles on each item, rather than simply at list level. If you combine per-item security with other features, such as list events or extensible field types, you can use per-item security to change who has access to an item, based on an entry in another field. For example, a change to the status of an item could trigger a change in who has the ability to edit the item.

  • Versioning   In Windows SharePoint Services 2.0, only document libraries allowed versioning, and then only a major version would be created. This basic functionality did not match the workflow normally associated with documents, namely, the creation and edit process when a document is in draft version, and then the publishing of a document to public status.

    Windows SharePoint Services 3.0 offers a new, richer versioning model. This model includes both major and minor versions, and versioning within lists as well as document libraries. In addition, major and minor versions can have different security, allowing separate draft and public version workflows. Versions are associated with a rich event model that allows numerous scenarios, including custom workflows, item validation, and information propagation.

  • Required Checkout   In Windows SharePoint Services 2.0, users could modify documents without checking those documents out from a document library, which allowed multiple users to edit the same document and left a complicated merge/overwrite scenario. In Windows SharePoint Services 3.0, document editing is allowed only when the document has been checked out. This forced check-out defines a clear owner model and simplifies merging of changes.

See Also