1 of 107

Introduction to ASP.NET �and Web Forms

By Santosh Tawde

2 of 107

Prerequisites

  • This module assumes that you understand the fundamentals of
    • C# programming
    • ADO.NET
  • A background in web development (HTML, JavaScript, DHTML, CGI, Active Server Pages) would be helpful, but is not required

3 of 107

Learning Objectives

  • What is ASP.NET; why it was developed
  • ASP.NET features
  • Programming Web Forms

4 of 107

Agenda

  • Background
  • ASP.NET Overview
  • Programming Model
  • Programming Basics
  • Server Controls
  • Data Binding
  • Conclusion

5 of 107

Background�Web Architecture

Web Server

PC/Mac/Unix/... �+ Browser

Client

Server

Request:

http://www.digimon.com/default.asp

Response:

<html>….</html>

Network

HTTP, TCP/IP

6 of 107

Background�Web Development Technologies

  • Client-side technologies
    • HTML, DHTML, JavaScript
  • Server-side technologies
    • ASP (Active Server Pages)
  • ASP.NET is the next generation of ASP

7 of 107

Background�What is ASP?

  • Server-side programming technology
  • Consists of static HTML interspersed with script
  • ASP intrinsic objects (Request, Response, Server, Application, Session) provide services
  • Commonly uses ADO to interact with databases
  • Application and session variables
  • Application and session begin/end events
  • ASP manages threads, database connections, ...

8 of 107

Background�What is ASP?

HTTP request

(form data, HTTP �header data)

HTTP response�HTML, XML

ASP page

(static HTML, � server-side logic)

9 of 107

Background�Demo: HelloWorld.asp

<html>

<head><title>HelloWorld.asp</title></head>

<body>

<form method=“post">

<input type="submit" id=button1 name=button1 value="Push Me" />

<%

if (Request.Form("button1") <> "") then

Response.Write "<p>Hello, the time is " & Now()

end if

%>

</form>

</body>

</html>

10 of 107

Background�ASP Successes

  • Simple procedural programming model
  • Access to COM components
    • ActiveX Data Objects (ADO)
    • File System Object
    • Custom components
  • Script-based: no compiling, just edit, save & run
    • VBScript, JScript – leverages existing skills
  • Support for multiple scripting languages
  • ASP has been very popular

11 of 107

Background�ASP Challenges

  • Coding overhead (too much code)
    • Everything requires writing code!
  • Code readability (too complex; code and UI intermingled)
  • Maintaining page state requires more code
  • Reuse is difficult
  • Supporting many types of browsers is difficult
  • Deployment issues (e.g. DLL locking)
  • Session state scalability and availability
  • Limited support for caching, tracing, debugging, etc.
  • Performance and safety limitations of script

12 of 107

Agenda

  • Background
  • ASP.NET Overview
  • Programming Model
  • Programming Basics
  • Server Controls
  • Data Binding
  • Conclusion

13 of 107

ASP.NET Overview

  • ASP.NET provides services to allow the creation, deployment, and execution of �Web Applications and Web Services
  • Like ASP, ASP.NET is a server-side technology
  • Web Applications are built using Web Forms
  • Web Forms are designed to make building �web-based applications as easy as building Visual Basic applications

14 of 107

ASP.NET Overview�Goals

  • Keep the good parts of ASP and improve the rest
  • Simplify: less code, easier to create and maintain
  • Multiple, compiled languages
  • Fast
  • Scalable
  • Manageable
  • Available
  • Customizable and extensible
  • Secure
  • Tool support

15 of 107

ASP.NET Overview�Key Features

  • Web Forms
  • Web Services
  • Built on .NET Framework
  • Simple programming model
  • Maintains page state
  • Multibrowser support
  • XCOPY deployment
  • XML configuration
  • Complete object model
  • Session management
  • Caching
  • Debugging
  • Extensibility
  • Separation of code and UI
  • Security
  • ASPX, ASP side by side
  • Simplified form validation
  • Cookieless sessions

16 of 107

ASP.NET Overview�Demo: HelloWorld.aspx

<%@ Page language="c#" %>

<html>

<head></head>

<script runat="server">

public void B_Click (object sender, System.EventArgs e) {

Label1.Text = "Hello, the time is " + DateTime.Now;

}

</script>

<body>

<form method="post" runat="server">

<asp:Button onclick="B_Click" Text="Push Me“

runat="server“ /> <p>

<asp:Label id=Label1 runat="server" />

</form>

</body>

</html>

17 of 107

ASP.NET Overview�Architecture

  • ASP.NET is built upon
    • .NET Framework
    • Internet Information Server (IIS)

18 of 107

ASP.NET Overview�Architecture

  • Internet Information Server (IIS)
    • IIS MMC Snap-In (Internet Services Manager)
      • Tool to manage IIS
    • Virtual Directories
      • Provides a mapping between URL and file path
      • E.g., on my machine the URL: � http://localhost/CS594 �maps to the file path: � C:\_CS594Fall2001

19 of 107

ASP.NET Overview�Architecture

Common Language Specification

Common Language Runtime

VB

C++

C#

ASP.NET: Web Services

and Web Forms

JScript

Windows�Forms

Base Classes

ADO.NET: Data and XML

Visual Studio.NET

20 of 107

Agenda

  • Background
  • ASP.NET Overview
  • Programming Model
  • Programming Basics
  • Server Controls
  • Data Binding
  • Conclusion

21 of 107

Programming Model�Controls and Events

  • Server-side programming model
  • Based on controls and events
    • Just like Visual Basic
    • Not “data in, HTML out”
  • Higher level of abstraction than ASP
  • Requires less code
  • More modular, readable, and maintainable

22 of 107

Programming Model�Controls and Events

Button

List

Text

Browser

ASP.NET

Button code

...

List code

...

Text code

...

Event handlers

23 of 107

Programming Model�ASP.NET Object Model

  • User code executes on the web server in �page or control event handlers
  • Controls are objects, available in �server-side code
    • Derived from System.Web.UI.Control
  • The web page is an object too
    • Derived from System.Web.UI.Page which is a descendant of System.Web.UI.Control
    • A page can have methods, properties, etc.

24 of 107

Programming Model�Postbacks

  • A postback occurs when a page generates an �HTML form whose values are posted back �to the same page
  • A common technique for handling form data
  • In ASP and other server-side technologies the state of the page is lost upon postback...
  • Unless you explicitly write code to maintain state
  • This is tedious, bulky and error-prone

25 of 107

Programming Model�Postbacks Maintain State

  • By default, ASP.NET maintains the state of all server-side controls during a postback
  • Can use method="post" or method="get"
  • Server-side control objects are automatically populated during postback
  • No state stored on server
  • Works with all browsers

26 of 107

Programming Model�Server-side Controls

  • Multiple sources of controls
    • Built-in
    • 3rd party
    • User-defined
  • Controls range in complexity and power: button, text, drop down, calendar, data grid, ad rotator, validation
  • Can be populated via data binding

27 of 107

Programming Model�Automatic Browser Compatibility

  • Controls can provide automatic browser compatibility
  • Can target UpLevel or DownLevel browsers
    • UpLevel browsers support additional functionality, such as JavaScript and DHTML
    • DownLevel browsers support HTML 3.2

28 of 107

Programming Model�Automatic Browser Compatibility

Button code

...

Menu code

...

Text code

...

Event handlers

Button

Menu

Text

IE 4

Button

Menu

Text

Netscape

Button

Menu

Text

IE 5.5

Button

Menu

Text

IE 6

ASP.NET

Button Control

Menu Control

Text Control

...

29 of 107

Programming Model�Code-behind pages

  • Two styles of creating ASP.NET pages
    • Controls and code in .aspx file
    • Controls in .aspx file, code in code-behind page
      • Supported in Visual Studio.NET
  • Code-behind pages allow you to separate the �user interface design from the code
    • Allows programmers and designers to work independently

<%@ Codebehind=“WebForm1.cs”

Inherits=WebApplication1.WebForm1” %>

30 of 107

Programming Model�Automatic Compilation

  • Just edit the code and hit the page
  • ASP.NET will automatically compile the code into an assembly
  • Compiled code is cached in the CLR �Assembly Cache
  • Subsequent page hits use compiled assembly
  • If the text of the page changes then the code �is recompiled
    • Works just like ASP: edit, save and run

31 of 107

Programming Model�Automatic Compilation

32 of 107

Agenda

  • Background
  • ASP.NET Overview
  • Programming Model
  • Programming Basics
  • Server Controls
  • Data Binding
  • Conclusion

33 of 107

Programming Basics�Page Syntax

  • The most basic page is just static text
    • Any HTML page can be renamed .aspx
  • Pages may contain:
    • Directives: <%@ Page Language=“C#” %>
    • Server controls: <asp:Button runat=“server”>
    • Code blocks: <script runat=“server”>…</script>
    • Data bind expressions: <%# %>
    • Server side comments: <%-- --%>
    • Render code: <%= %> and <% %>
      • Use is discouraged; use <script runat=server> with code in event handlers instead

34 of 107

Programming Basics�The Page Directive

  • Lets you specify page-specific attributes, e.g.
    • AspCompat: Compatibility with ASP
    • Buffer: Controls page output buffering
    • CodePage: Code page for this .aspx page
    • ContentType: MIME type of the response
    • ErrorPage: URL if unhandled error occurs
    • Inherits: Base class of Page object
    • Language: Programming language
    • Trace: Enables tracing for this page
    • Transaction: COM+ transaction setting
  • Only one page directive per .aspx file

35 of 107

Programming Basics�Server Control Syntax

  • Controls are declared as HTML tags with runat=“server” attribute

  • Tag identifies which type of control to create
    • Control is implemented as an ASP.NET class
  • The id attribute provides programmatic identifier
    • It names the instance available during postback
    • Just like Dynamic HTML

<input type=text id=text2 runat=“server” />

<asp:calendar id=myCal runat=“server” />

36 of 107

Programming Basics�Server Control Properties

  • Tag attributes map to control properties

c1.Text = “Foo”;

c2.Rows = 5;

<asp:button id=“c1" Text="Foo" runat=“server”>

<asp:ListBox id=“c2" Rows="5" runat=“server”>

  • Tags and attributes are case-insensitive
  • Control properties can be set programmatically

37 of 107

Programming Basics�Maintaining State

  • By default. controls maintain their state across multiple postback requests
    • Implemented using a hidden HTML field: __VIEWSTATE
    • Works for controls with input data (e.g. TextBox, CheckBox), non-input controls (e.g. Label, DataGrid), and hybrids (e.g. DropDownList, ListBox)
  • Can be disabled per control or entire page
    • Set EnableViewState=“false”
    • Lets you minimize size of __VIEWSTATE

38 of 107

Programming Basics�Maintaining State

  • Demo: MaintainingState.asp, MaintainingState.aspx

39 of 107

Programming Basics�Server Code Blocks

  • Server code lives in a script block marked runat=“server”

  • Script blocks can contain
    • Variables, methods, event handlers, properties
    • They become members of a custom Page object

<script language="C#" runat=server>

<script language="VB" runat=server>

<script language="JScript" runat=server>

40 of 107

Programming Basics�Page Events

  • Pages are structured using events
    • Enables clean code organization
    • Avoids the “Monster IF” statement
    • Less complex than ASP pages
  • Code can respond to page events
    • e.g. Page_Load, Page_Unload
  • Code can respond to control events
    • Button1_Click
    • Textbox1_Changed

41 of 107

Programming Basics�Page Event Lifecycle

Page_Load

Page_Unload

Textbox1_Changed

Button1_Click

Initialize

Restore Control State

Save Control State

Render

1. Change Events

2. Action Events

Page_Init

Control Events

Load Page

Unload Page

42 of 107

Programming Basics�Page Loading

  • Page_Load fires at beginning of request after controls are initialized
    • Input control values already populated

protected void Page_Load(Object s, EventArgs e) {

message.Text = textbox1.Text;

}

43 of 107

Programming Basics�Page Loading

  • Page_Load fires on every request
    • Use Page.IsPostBack to execute conditional logic
    • If a Page/Control is maintaining state then need only initialize it when IsPostBack is false

protected void Page_Load(Object s, EventArgs e) {

if (! Page.IsPostBack) {

// Executes only on initial page load

Message.Text = "initial value";

}

// Rest of procedure executes on every request

}

44 of 107

Programming Basics�Server Control Events

  • Change Events
    • By default, these execute only on next action event
    • E.g. OnTextChanged, OnCheckedChanged
    • Change events fire in random order
  • Action Events
    • Cause an immediate postback to server
    • E.g. OnClick
  • Works with any browser
    • No client script required, no applets, �no ActiveX® Controls!

45 of 107

Programming Basics�Wiring Up Control Events

  • Control event handlers are identified on the tag

  • Event handler code

protected void btn1_Click(Object s, EventArgs e) {

Message.Text = “Button1 clicked”;

}

<asp:button onclick="btn1_click“ runat=server>

<asp:textbox onchanged="text1_changed“ runat=server>

46 of 107

Programming Basics�Event Arguments

  • Events pass two arguments:
    • The sender, declared as type object
      • Usually the object representing the control that generated �the event
      • Allows you to use the same event handler for �multiple controls
    • Arguments, declared as type EventArgs
      • Provides additional data specific to the event
      • EventArgs itself contains no data; a class derived from EventArgs will be passed

47 of 107

Programming Basics�Page Unloading

  • Page_Unload fires after the page is rendered
    • Don’t try to add to output
  • Useful for logging and clean up

protected void Page_Unload(Object s, EventArgs e) {

MyApp.LogPageComplete();

}

48 of 107

Programming Basics�Import Directive

  • Adds code namespace reference to page
    • Avoids having to fully qualify .NET types and �class names
    • Equivalent to the C# using directive

<%@ Import Namespace="System.Data" %>

<%@ Import Namespace="System.Net" %>

<%@ Import Namespace="System.IO" %>

49 of 107

Programming Basics�Page Class

  • The Page object is always available when handling server-side events
  • Provides a large set of useful properties and methods, including:
    • Application, Cache, Controls, EnableViewState, EnableViewStateMac, ErrorPage, IsPostBack, IsValid, Request, Response, Server, Session, Trace, User, Validators
    • DataBind(), LoadControl(), MapPath(), Validate()

50 of 107

Agenda

  • Background
  • ASP.NET Overview
  • Programming Model
  • Programming Basics
  • Server Controls
  • Data Binding
  • Conclusion

51 of 107

Server Controls

  • ASP.NET ships with ~50 built-in controls
  • Organized into logical families
    • HTML controls
      • Controls / properties map 1:1 with HTML
    • Web controls
      • Richer functionality
      • More consistent object model

52 of 107

Server Controls�HTML Controls

  • Work well with existing HTML designers
  • Properties map 1:1 with HTML

table.bgcolor ="red“;

  • Can specify client-side event handlers
  • Good when quickly converting existing pages
  • Derived from System.Web.UI.HtmlControls.HtmlControl
  • Supported controls have custom class, �others derive from HtmlGenericControl

53 of 107

Server Controls�HTML Controls

  • Supported controls
    • <a>
    • <img>
    • <form>
    • <table>
    • <tr>
    • <td>
    • <th>
    • <select>

    • <textarea>
    • <button>
    • <input type=text>
    • <input type=file>
    • <input type=submit>
    • <input type=button>
    • <input type=reset>
    • <input type=hidden>

54 of 107

Server Controls�HTML Controls

  • Demo 1: HTMLControls1.aspx
    • Basic page lifecycle with HTML Controls
  • Demo 2: HTMLControls2.aspx
    • More HTML Controls

55 of 107

Server Controls�HTML Controls

  • Can use controls two ways:
    • Handle everything in action events (e.g. button click)
      • Event code will read the values of other controls (e.g. text, check boxes, radio buttons, select lists)
    • Handle change events as well as action events

56 of 107

Server Controls�Web Controls

  • Consistent object model

Label1.BackColor = Color.Red;

Table.BackColor = Color.Blue;

  • Richer functionality
    • E.g. AutoPostBack, additional methods
  • Automatic uplevel/downlevel support
    • E.g. validation controls
  • Strongly-typed; no generic control
    • Enables better compiler type checking

57 of 107

Server Controls�Web Controls

  • Web controls appear in HTML markup as namespaced tags
  • Web controls have an asp: prefix

<asp:button onclick="button1_click“ runat=server>

<asp:textbox onchanged="text1_changed“ runat=server>

  • Defined in the System.Web.UI.WebControls namespace
  • This namespace is automatically mapped to the asp: prefix

58 of 107

Server Controls�Web Controls

  • Web Controls provide extensive properties to control display and format, e.g.
    • Font
    • BackColor, ForeColor
    • BorderColor, BorderStyle, BorderWidth
    • Style, CssClass
    • Height, Width
    • Visible, Enabled

59 of 107

Server Controls�Web Controls

  • Four types of Web Controls
    • Intrinsic controls
    • List controls
    • Rich controls
    • Validation controls

60 of 107

Server Controls �Intrinisic Controls

  • Correspond to HTML controls
  • Supported controls
    • <asp:button>
    • <asp:imagebutton>
    • <asp:linkbutton>
    • <asp:hyperlink>
    • <asp:textbox>
    • <asp:checkbox>

    • <asp:radiobutton>
    • <asp:image>
    • <asp:label>
    • <asp:panel>
    • <asp:table>

61 of 107

Server Controls �Intrinisic Controls

  • TextBox, ListControl, CheckBox and their subclasses don’t automatically do a postback when their controls are changed
  • Specify AutoPostBack=true to make change events cause a postback

62 of 107

Server Controls �List Controls

  • Controls that handle repetition
  • Supported controls
    • <asp:dropdownlist>
    • <asp:listbox>
    • <asp:radiobuttonlist>
    • <asp:checkboxlist>
    • <asp:repeater>
    • <asp:datalist>
    • <asp:datagrid>

63 of 107

Server Controls �List Controls

  • Repeater, DataList and DataGrid controls
    • Powerful, customizable list controls
    • Expose templates for customization
    • Can contain other controls
    • Provide event bubbling through their OnItemCommand event
    • More about these controls and templates later

64 of 107

Server Controls �CheckBoxList & RadioButtonList

  • Provides a collection of check box or �radio button controls
  • Can be populated via data binding

<asp:CheckBoxList id=Check1 runat="server">

<asp:ListItem>Item 1</asp:ListItem>

<asp:ListItem>Item 2</asp:ListItem>

<asp:ListItem>Item 3</asp:ListItem>

<asp:ListItem>Item 4</asp:ListItem>

<asp:ListItem>Item 5</asp:ListItem>

</asp:CheckBoxList>

65 of 107

Server Controls �Intrinisic & Simple List Controls

  • Demo 1: WebControls1.aspx
    • Assorted intrinsic and list controls
  • Demo 2: WebControls2.aspx
    • Same controls with AutoPostBack

66 of 107

Server Controls �Rich Controls

  • Custom controls with rich functionality
  • Supported Controls
    • <asp:calendar>
    • <asp:adrotator>
  • More will be added
  • 3rd party controls are coming
  • Demo: RichControls1.aspx

67 of 107

Server Controls �Validation Controls

  • Rich, declarative validation
  • Validation declared separately from input control
  • Extensible validation framework
  • Supports validation on client and server
    • Automatically detects uplevel clients
    • Avoids roundtrips for uplevel clients
  • Server-side validation is always done
    • Prevents users from spoofing Web Forms

68 of 107

Server Controls �Validation Controls

  • <asp:RequiredFieldValidator>
    • Ensures that a value is entered
  • <asp:RangeValidator>
    • Checks if value is within minimum and maximum values
  • <asp:CompareValidator>
    • Compares value against constant, another control or data type
  • <asp:RegularExpressionValidator>
    • Tests if value matches a predefined pattern
  • <asp:CustomValidator>
    • Lets you create custom client- or server-side validation function
  • <asp:ValidationSummary>
    • Displays list of validation errors in one place

69 of 107

Server Controls �Validation Controls

  • Validation controls are derived from System.Web.UI.WebControls.BaseValidator, which is derived from the Label control
  • Validation controls contain text which is displayed only if validation fails
  • Text property is displayed at control location
  • ErrorMessage is displayed in summary

70 of 107

Server Controls �Validation Controls

  • Validation controls are associated with their target control using the ControlToValidate property

  • Can create multiple validation controls with the same target control

<asp:TextBox id=TextBox1 runat=server />

<asp:RequiredFieldValidator id="Req1"

ControlToValidate="TextBox1"

Text="Required Field" runat=server />

71 of 107

Server Controls �Validation Controls

  • Page.IsValid indicates if all validation controls on the page succeed

void Submit_click(object s, EventArgs e) {

if (Page.IsValid) {

Message.Text = "Page is valid!";

}

}

72 of 107

Server Controls �Validation Controls

  • Display property controls layout
    • Static: fixed layout, display won’t change if invalid
    • Dynamic: dynamic layout
    • None: no display; can still use ValidationSummary and Page.IsValid
  • Type property specifies expected data type: Currency, Date, Double, Integer, String

73 of 107

Server Controls �Validation Controls

  • Can force down-level option
    • Only server-side validation

<% @ Page Language="c#"

ClientTarget="DownLevel" %>

74 of 107

Server Controls �Validation Controls

  • Demo: ValidationControls1.aspx
    • Demonstrates each type of validation control

75 of 107

Agenda

  • Background
  • ASP.NET Overview
  • Programming Model
  • Programming Basics
  • Server Controls
  • Data Binding
  • Conclusion

76 of 107

Data Binding�How to Populate Server Controls?

  • Specify the data in the control’s tags
    • Not dynamic: can’t get data from a database
  • Write code that uses the control’s object model
    • This is okay if you need to populate a simple value or list, but quickly gets too complicated for populating sophisticated displays
  • Data binding
    • Create an object that holds the data �(DataSet, Array, string, int, etc.)
    • Associate that object with the control

77 of 107

Data Binding�What Is It?

  • Provides a single simple yet powerful way to populate Web Form controls with data
    • Enables clean separation of code from UI
  • Supports binding to any data source
    • Properties, expressions, method calls
    • Collections (Array, Hashtable, etc.)
    • DataSet, DataTable, DataView, DataReader
    • XML
  • One way snapshot model
    • Requires code to reapply to data model

78 of 107

Data Binding�What Is It?

  • Allows you to specify an expression
  • When the DataBind method of the control is called, the expression is evaluated and bound
    • DataBind for a single control (and subcontrols)
    • Page.DataBind binds all controls on a page
  • Works for scalars, e.g. Label control
  • Works for lists, e.g. DropDown control, �ListBox control, etc.
  • Enables the use of templates

79 of 107

Data Binding�Scalar Expressions

  • Data binding expression: <%# expression %>
  • Expression is evaluated when DataBind() �is called

<asp:Label id=label1

Text=<%# “The result is “ + (1 + 2) +

“, the time is “ + DateTime.Now.ToLongTimeString() %>

runat="server" />

public void Page_Load(object s, EventArgs e) {

if (! Page.IsPostBack)

Page.DataBind();

}

80 of 107

Data Binding�Scalar Expressions

  • Demo: DataBinding1.aspx
    • Data binding to simple, scalar expressions

81 of 107

Data Binding�Simple Lists

  • Data binding a list creates a user interface element for each item in the list
  • Each item contains text (displayed to user) and an optional value (not displayed)
  • The simple list controls:
    • <asp:ListBox>
      • Single or multiple select
    • <asp:DropDownList>
    • <asp:RadioButtonList>
    • <asp:CheckBoxList>

82 of 107

Data Binding�Simple Lists

  • Steps to data bind a list control
    • Declare the list control
    • Optionally set DataValueField �and DataTextField
    • Set its DataSource
    • Call DataBind() method

83 of 107

Data Binding�Simple Lists

  • Demo: DataBinding2.aspx
    • Data binding to simple lists

84 of 107

Data Binding�Database

  • Data binding can be used to populate server controls with data from a database
    • Each UI element corresponds to a row
  • Bind to a DataReader (preferred)
  • Bind to a DataView of a DataSet
  • Specify value and text with DataValueField and DataTextField, respectively
    • Each of these corresponds to a column

85 of 107

Data Binding�Data Source Example

DataView GetSampleData() {

DataSet ds;

SqlConnection cxn;

SqlDataAdapter adp;

cxn = new SqlConnection("server=localhost; " +

"uid=sa;pwd=;database=Northwind");

adp = new SqlDataAdapter(

"select CategoryID, CategoryName from Categories",

cxn);

ds = new DataSet();

adp.Fill(ds, "Categories");

return ds.Tables["Categories"].DefaultView;

}

86 of 107

Data Binding�List Binding Examples

void Page_Load(object s, EventArgs e) {

ListBox1.DataSource = GetSampleData();

ListBox1.DataValueField = "CategoryID";

ListBox1.DataTextField = "CategoryName";

ListBox1.DataBind();

}

<asp:ListBox id="ListBox1" runat="server" />

void Page_Load(object s, EventArgs e) {

ListBox1.DataBind();

}

<asp:ListBox id="ListBox1" runat="server"

DataSource=<%# GetSampleData() %>

DataValueField=“CategoryID”

DataTextField=“CategoryName” />

87 of 107

Data Binding�Binding to a Database

  • Demo: DataBinding3.aspx
    • Data binding to a database

88 of 107

Data Binding �DataGrid

  • Full-featured list output
  • Default look is a grid
  • Default is to show all columns, though you can specify a subset of columns to display
  • Columns can be formatted with templates
  • Optional paging
  • Updateable

89 of 107

Data Binding�Binding to All Columns

  • Binding all columns in the datasource
    • Declare an <asp:DataGrid>
    • Set its DataSource
    • Call DataBind()

void Page_Load(object s, EventArgs e) {

myDataGrid.DataSource = GetSampleData();

myDataGrid.DataBind();

}

<asp:datagrid id=myDataGrid runat="server" />

90 of 107

Data Binding�Binding to Specific Columns

  • By default, DataGrid will display all columns
  • To control columns to display:
    • Set AutoGenerateColumns=“false”
    • Specify Columns property
    • Add column definition
      • BoundColumn
      • TemplateColumn
      • ButtonColumn, EditCommandColumn, HyperlinkColumn

91 of 107

Data Binding�Binding to Specific Columns

  • Binding to specific columns in the datasource
    • Declare an <asp:DataGrid>
    • Declare its Columns collection
    • Set its DataSource
    • Call its DataBind() method

<asp:datagrid id=myDataGrid

autogeneratecolumns=false runat=server>

<Columns>

<asp:BoundColumn HeaderText=“Id" DataField="title_id" />

<asp:BoundColumn HeaderText="Title“ DataField="title"/>

</Columns>

</asp:datagrid>

92 of 107

Data Binding �DataGrid Paging

  • When there is too much data to display in one screen, a DataGrid can provide automatic paging
    • Set AllowPaging=“true”
    • Set PageSize=5
    • Handle OnPageIndexChanged event
      • Set page index
      • Fetch data
      • Re-bind data

93 of 107

Data Binding�DataGrid Demo

  • Demo: DataBinding4.aspx
    • Binding to a database with DataGrid
  • Demo: DataBinding5.aspx
    • Paging through data with DataGrid

94 of 107

Data Binding�Templates

  • Templates provide a powerful way to customize the display of a server control
    • Customize structure – not just style
    • Can use controls or other HTML within a template
    • 3rd party controls can expose new templates
  • With data binding, templates specify a set of markup (HTML or server controls) for each bound piece of data
    • Not just specifying formatting and style for a column
  • However, templates are not limited to data binding
    • No fixed set of templates
    • Controls may define their own and expose any number of them

95 of 107

Data Binding�Templates

  • Standard templates for list-bound controls
    • HeaderTemplate: rendered once before all data bound rows
    • ItemTemplate: rendered once for each row in the data source
    • AlternatingItemTemplate: like ItemTemplate, but when present is used for every other row
    • SeparatorTemplate: rendered between each row
    • FooterTemplate: rendered once, after all data bound rows

96 of 107

Data Binding�Templates

SeparatorTemplate

FooterTemplate

HeaderTemplate

AlternatingItem-�Template

ItemTemplate

Templates �used in �Repeater �controls

97 of 107

Data Binding�Data Binding in Templates

  • Templates need to access the bound data
  • Container is an alias for the template’s containing control
  • DataItem is an alias for the current row of the datasource
  • DataBinder.Eval is a utility function provided to retrieve and format data within a template

<%# DataBinder.Eval(Container.DataItem, "price", "$ {0}") %>

98 of 107

Data Binding�Repeater Control

  • Provides simple output of a list of items
  • No inherent visual form
  • Templates provide the visual form
  • No paging
  • Can provide templates for separators
  • Not updateable

99 of 107

Data Binding�Repeater Control

<asp:Repeater id="repList" runat="server">�<template name="HeaderTemplate">� <table>� <tr><td>Title</td><td>Type</td></tr>�</template>��<template name="ItemTemplate">� <tr>

<td><%# DataBinder.Eval(Container.DataItem,"title_id") %></td>

<td><%# DataBinder.Eval(Container.DataItem,"type") %></td>

</tr>�</template>��<template name="FooterTemplate">� </table>�</template>�</asp:Repeater>

100 of 107

Data Binding�DataList Control

  • Provides list output with editing
  • Default look is a table
  • Customized via templates
  • Directional rendering (horizontal or vertical)
  • Single and multiple selection
  • Alternate item
  • Updateable
  • No paging

101 of 107

Data Binding�DataList Control

void Page_Load(object s, EventArgs e) {

myDataGrid.DataSource = GetSampleData();

myDataGrid.DataBind();

}

<asp:datalist id=myDataList runat=server>

<template name="itemtemplate">

<b>Title id:</b>

<%# DataBinder.Eval(Container.DataItem, "title_id") %>

<br> <b>Title:</b>

<%# DataBinder.Eval(Container.DataItem, "title") %>

</template>

</asp:datalist>

102 of 107

Data Binding�Templates Demo

  • Demo: DataBinding6.aspx, DataBinding7.aspx
    • Using templates and data binding to a database with DataGrid, Repeater and DataList controls

103 of 107

Agenda

  • Background
  • ASP.NET Overview
  • Programming Model
  • Programming Basics
  • Server Controls
  • Data Binding
  • Conclusion

104 of 107

Conclusion

  • We covered
    • What ASP.NET and Web Forms are
    • ASP.NET Programming Essentials
    • Server Controls
    • Data Binding
    • Templates

105 of 107

Conclusion

  • Next time, we’ll cover
    • Web Applications
    • Configuration
    • Tracing
    • Session Management
    • Error Handling
    • Deployment
    • Security
    • Architecture
    • Extensibility (User Controls and Custom Controls)

106 of 107

Resources

  • General Sites
    • http://msdn.microsoft.com/net/aspnet/default.asp
    • http://www.asp.net/
    • http://www.fmexpense.com/quickstart/aspplus/default.htm
    • http://www.asptoday.com/
    • http://www.aspng.com/aspng/index.aspx
    • http://www.4guysfromrolla.com/
    • http://www.aspfree.com/
    • http://www.devx.com/dotnet/
    • http://www.ibuyspy.com/

107 of 107

Resources

  • ASP.NET Overview�http://msdn.microsoft.com/msdnmag/issues/0900/ASPPlus/ASPPlus.asp
  • Validation http://msdn.microsoft.com/library/techart/aspplusvalid.htm
  • Databinding in 3 parts�http://msdn.microsoft.com/msdnmag/issues/01/03/cutting/cutting0103.asp�http://msdn.microsoft.com/msdnmag/issues/01/04/cutting/cutting0104.asp�http://msdn.microsoft.com/msdnmag/issues/01/05/cutting/cutting0105.asp
  • ASP.NET component model�http://msdn.microsoft.com/msdnmag/issues/01/02/cutting/cutting0102.asp