O'Reilly logo

ASP.NET Cookbook by Geoffrey T. LeBlond, Michael A Kittel

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

1.1. Selecting the Right Tabular Control

Problem

You want to use an ASP.NET control to display some data in a tabular format.

Solution

Use a Repeater, DataList, or DataGrid control. Always choose the smallest and fastest control that meets your needs, which invariably will be influenced by other criteria. For example:

If you need a quick and easy solution

Use a DataGrid.

If you need a lightweight read-only tabular display

Use a Repeater.

If you need your solution to be small and fast

Use a Repeater (lightest) or DataList (lighter).

If you want to use a template to customize the appearance of the display

Choose a Repeater or DataList.

If you want to select rows or edit the contents of a data table

Choose a DataList or a DataGrid.

If you want built-in support to sort your data by column or paginate its display

Choose a DataGrid.

Discussion

ASP.NET provides three excellent options for displaying tabular data—Repeater, DataList, and DataGrid—but each comes with trade-offs. For instance, the DataGrid control is particularly versatile, but you can pay a heavy price in terms of performance. On the flip side, the Repeater control is lighter weight, but is for read-only display; if you later decide you need to edit your data, you must rework your code to use the DataList or DataGrid control instead (unless, of course, you want to embark on your own custom coding odyssey).

The impact on performance is due to the fact that ASP.NET creates an actual control for every element of a DataGrid control, even whitespace, which is built as a Literal control. Each of these controls is then responsible for rendering the appropriate HTML output. The DataGrid is, therefore, the heavyweight of the grid control group, because of the server processing required to build the applicable output. The DataList is lighter and the Repeater lighter still.

Table 1-1 summarizes the built-in features supported by the tabular controls and only includes controls that support data binding. (A standard Table control is not included because it does not inherently support data binding, even though individual controls placed in a table can be data bound.) With custom code, there are virtually no limits to what you can do to modify the behavior of these controls.

Table 1-1. Comparative summary of native tabular control features

Feature

Repeater control

DataList control

DataGrid control

Default appearance

None (template driven)

Table

Table

Automatically generates columns from the data source

No

No

Yes

Header can be customized

Yes

Yes

Yes

Data row can be customized

Yes

Yes

Yes

Supports alternating row customization

Yes

Yes

Yes

Supports customizable row separator

Yes

Yes

No

Footer can be customized

Yes

Yes

Yes

Supports pagination

No

No

Yes

Supports sorting

No

No

Yes

Supports editing contents

No

Yes

Yes

Supports selecting a single row

No

Yes

Yes

Supports selecting multiple rows

No

No

No

Supports arranging data items horizontally or vertically (from left-to-right or top-to-bottom)

No

Yes

No

Performance issues aside, there are some other aspects to consider when choosing a tabular control. As a general rule, the DataGrid works extraordinarily well for a quick-and-dirty tabular display (see Recipe 1.2) and for other situations in which you think you’ll be reasonably satisfied with its default appearance and behavior. Indeed, because the DataGrid is so versatile, this chapter provides many recipes for modifying and adapting it. However, if you anticipate needing a lot of flexibility in controlling the organization and layout of the tabular display or you do not need to edit or paginate the data, you may want to consider using the DataList or Repeater instead. For example, Recipe 1.3 shows how you can use templates to organize and enhance the output of a tabular display. Take a look at that recipe’s output (Figure 1-2) to see what we’re driving at. Some up-front planning in this respect can save you considerable time and effort down the road.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required