| |
| |
Preface | |
| |
| |
| |
Master Pages | |
| |
| |
| |
Generating a Quick Master/Content Page Arrangement | |
| |
| |
| |
Extending a Master Page's Content to Include Content for Other Application Pages | |
| |
| |
| |
Changing Which Master Page Is Used Without Modifying All Affected Application Pages | |
| |
| |
| |
Setting the Master Page at Runtime | |
| |
| |
| |
Tabular Data | |
| |
| |
| |
Selecting the Right Tabular Control | |
| |
| |
| |
Generating a Quick-and-Dirty Tabular Display | |
| |
| |
| |
Enhancing the Output of a Tabular Display | |
| |
| |
| |
Displaying Data from an XML File | |
| |
| |
| |
Displaying an Array as a Group of Checkboxes | |
| |
| |
| |
Displaying Data from a Hashtable | |
| |
| |
| |
Adding Next/Previous Navigation to a DataGrid | |
| |
| |
| |
Adding First/Last Navigation to a DataGrid | |
| |
| |
| |
Adding Direct Page Navigation to a DataGrid | |
| |
| |
| |
Sorting Data in Ascending/Descending Order Within a DataGrid | |
| |
| |
| |
Combining Sorting and Paging in a DataGrid | |
| |
| |
| |
Paging Through a Record-Heavy DataGrid | |
| |
| |
| |
Editing Data Within a DataGrid | |
| |
| |
| |
Navigating and Sorting Within a GridView | |
| |
| |
| |
Updating a GridView Without Refreshing the Whole Page | |
| |
| |
| |
Editing Data in a GridView | |
| |
| |
| |
Inserting a Row Within a GridView | |
| |
| |
| |
Formatting Columnar Data in a GridView | |
| |
| |
| |
Allowing Selection Anywhere Within a GridView | |
| |
| |
| |
Adding a Delete Confirmation Pop-Up | |
| |
| |
| |
Displaying a Pop-Up Details Window | |
| |
| |
| |
Adding a Totals Row to a GridView | |
| |
| |
| |
Validation | |
| |
| |
| |
Requiring That Data Be Entered in a Field | |
| |
| |
| |
Requiring Data to Be in a Range | |
| |
| |
| |
Requiring That Two Data Input Fields Match | |
| |
| |
| |
Requiring Data to Match a Predefined Pattern | |
| |
| |
| |
Requiring That a Drop-Down List Selection Be Made | |
| |
| |
| |
Requiring Data to Match a Database Entry | |
| |
| |
| |
Using Validation Groups to Support Login and New User Registration Within a Single Form | |
| |
| |
| |
Performing Validation Programmatically to Execute Your Own Application-Specific Logic | |
| |
| |
| |
Forms | |
| |
| |
| |
Setting the Default Button to Submit a Form | |
| |
| |
| |
Submitting a Form to a Different Page | |
| |
| |
| |
Simulating Multipage Forms | |
| |
| |
| |
Setting the Initial Focus to a Specific Control | |
| |
| |
| |
Setting the Focus to a Control with a Validation Error | |
| |
| |
| |
User Controls | |
| |
| |
| |
Sharing a Page Header on Multiple Pages | |
| |
| |
| |
Creating a Customizable Navigation Bar | |
| |
| |
| |
Reusing Code-Behind Classes | |
| |
| |
| |
Communicating Between User Controls | |
| |
| |
| |
Adding User Controls Dynamically | |
| |
| |
| |
Custom Controls | |
| |
| |
| |
Combining HTML Controls in a Single Custom Control | |
| |
| |
| |
Creating a Custom Control with Attributes | |
| |
| |
| |
Creating a Custom Control with State | |
| |
| |
| |
Using the Control State with Custom Controls | |
| |
| |
| |
Customizing an ASP.NET TextBox Server Control | |
| |
| |
| |
Maintaining State | |
| |
| |
| |
Maintaining Information Needed by All Users of an Application | |
| |
| |
| |
Maintaining Information About a User Throughout a Session | |
| |
| |
| |
Preserving Information Between Postbacks | |
| |
| |
| |
Preserving Information Across Multiple Requests for a Page | |
| |
| |
| |
Error Handling | |
| |
| |
| |
Handling Errors at the Method Level | |
| |
| |
| |
Handling Errors at the Page Level | |
| |
| |
| |
Handling Errors at the Application Level | |
| |
| |
| |
Displaying User-Friendly Error Messages | |
| |
| |
| |
Security | |
| |
| |
| |
Restricting Access to All Application Pages | |
| |
| |
| |
Restricting Access to Selected Application Pages | |
| |
| |
| |
Restricting Access to Application Pages by Role | |
| |
| |
| |
Using Windows Authentication | |
| |
| |
| |
Using Membership and Roles | |
| |
| |
| |
Profiles and Themes | |
| |
| |
| |
Using Profiles | |
| |
| |
| |
Inheriting a Profile | |
| |
| |
| |
Using and Migrating Anonymous Profiles | |
| |
| |
| |
Managing User Profiles | |
| |
| |
| |
Using Themes | |
| |
| |
| |
User-Personalized Themes | |
| |
| |
| |
Web Parts | |
| |
| |
| |
Using Server Controls and User Controls as Web Parts | |
| |
| |
| |
Creating a Reusable Web Parts Catalog | |
| |
| |
| |
Creating a Custom Web Part | |
| |
| |
| |
Communicating Between Web Parts | |
| |
| |
| |
Persisting Personalized Web Part Properties | |
| |
| |
| |
Configuration | |
| |
| |
| |
Overriding Default HTTP Runtime Parameters in web.config | |
| |
| |
| |
Adding Custom Application Settings in web.config | |
| |
| |
| |
Displaying Custom Error Messages | |
| |
| |
| |
Maintaining Session State Across Multiple Web Servers | |
| |
| |
| |
Accessing Other web.config Configuration Elements | |
| |
| |
| |
Adding Your Own Configuration Elements to web.config | |
| |
| |
| |
Encrypting web.config Sections | |
| |
| |
| |
Tracing and Debugging | |
| |
| |
| |
Uncovering Page-Level Problems | |
| |
| |
| |
Uncovering Application-Wide Problems | |
| |
| |
| |
Pinpointing the Cause of an Exception | |
| |
| |
| |
Uncovering Problems Within Web Application Components | |
| |
| |
| |
Uncovering Problems Within Dual-Use Components | |
| |
| |
| |
Writing Trace Data to the Event Log with Controllable Levels | |
| |
| |
| |
Sending Trace Data via Email with Controllable Levels | |
| |
| |
| |
Using a Breakpoint to Stop Execution of an Application When a Condition Is Met | |
| |
| |
| |
Web Services | |
| |
| |
| |
Creating a Web Service | |
| |
| |
| |
Consuming a Web Service | |
| |
| |
| |
Creating a Web Service That Returns a Custom Object | |
| |
| |
| |
Setting the URL of a Web Service at Runtime | |
| |
| |
| |
Dynamic Images | |
| |
| |
| |
Drawing Button Images on the Fly | |
| |
| |
| |
Creating Bar Charts on the Fly | |
| |
| |
| |
Displaying Images Stored in a Database | |
| |
| |
| |
Displaying Thumbnail Images | |
| |
| |
| |
Caching | |
| |
| |
| |
Caching Pages | |
| |
| |
| |
Caching Pages Based on Query String Parameter Values | |
| |
| |
| |
Caching Pages Based on Browser Type and Version | |
| |
| |
| |
Caching Pages Based on Developer-Defined Custom Strings | |
| |
| |
| |
Caching Pages Based on Database Dependencies | |
| |
| |
| |
Caching User Controls | |
| |
| |
| |
Caching Application Data | |
| |
| |
| |
Caching Application Data Based on Database Dependencies | |
| |
| |
| |
Caching Data Sources | |
| |
| |
| |
Internationalization | |
| |
| |
| |
Localizing Request/Response Encoding | |
| |
| |
| |
Providing Multiple Language Support | |
| |
| |
| |
Using Global Resources and Overriding Currency Formatting | |
| |
| |
| |
File Operations | |
| |
| |
| |
Downloading a File from the Web Server | |
| |
| |
| |
Uploading a File to the Web Server | |
| |
| |
| |
Processing an Uploaded File Without Storing It on the Filesystem | |
| |
| |
| |
Storing the Contents of an Uploaded File in a Database | |
| |
| |
| |
Performance | |
| |
| |
| |
Reducing Page Size by Selectively Disabling the ViewState | |
| |
| |
| |
Speeding Up String Concatenation with a StringBuilder | |
| |
| |
| |
Speeding Up Read-Only Data Access | |
| |
| |
| |
Speeding Up Data Access to a SQL Server Database Using the SQL Provider | |
| |
| |
| |
HTTP Handlers | |
| |
| |
| |
Creating a Reusable Image Handler | |
| |
| |
| |
Creating a File Download Handler | |
| |
| |
| |
Assorted Tips | |
| |
| |
| |
Accessing HTTP-Specific Information from Within a Class | |
| |
| |
| |
Executing External Applications | |
| |
| |
| |
Transforming XML to HTML | |
| |
| |
| |
Determining the User's Browser Type | |
| |
| |
| |
Dynamically Creating Browser-Specific Stylesheets | |
| |
| |
| |
Saving and Reusing HTML Output | |
| |
| |
| |
Sending Mail | |
| |
| |
| |
Dynamic Menus | |
| |
| |
| |
Adding Breadcrumbs | |
| |
| |
Index | |