■CHAPTER 16 Data Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
Introducing Data Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
Types of ASP.NET Data Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
How Data Binding Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
Single-Value Data Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
A Simple Data Binding Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
Simple Data Binding with Properties . . . . . . . . . . . . . . . . . . . . . . . . . 542
Problems with Single-Value Data Binding. . . . . . . . . . . . . . . . . . . . . 543
Using Code Instead of Simple Data Binding . . . . . . . . . . . . . . . . . . . 544
Repeated-Value Data Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
Data Binding with Simple List Controls . . . . . . . . . . . . . . . . . . . . . . . 545
A Simple List Binding Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
Strongly Typed Collections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
Multiple Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
Data Binding with a Dictionary Collection . . . . . . . . . . . . . . . . . . . . . 549
Using the DataValueField Property . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
Data Binding with ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
Creating a Record Editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
Data Source Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
The Page Life Cycle with Data Binding . . . . . . . . . . . . . . . . . . . . . . . 561
The SqlDataSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
Selecting Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
Parameterized Commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
Handling Errors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
Updating Records. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
■CHAPTER 17 The Data Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
The GridView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
Automatically Generating Columns. . . . . . . . . . . . . . . . . . . . . . . . . . . 578
Defining Columns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
Formatting the GridView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
Formatting Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
Using Styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
Formatting-Specific Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
Selecting a GridView Row . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
Adding a Select Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
Using Selection to Create Master-Details Pages . . . . . . . . . . . . . . . 591
■CONTENTS xvii