9.2 Data Binding and Postback
Extend the form
to add a label that will display
the selected book. Set the autopostback
attribute of the drop-down control to
true, so that when a selection is made, the page
is posted back to the server and the label can be filled with the
selected title.
<asp:DropDownList
ID="ddlBooks"
autopostback="True"
The problem you'll encounter is that when the page
is reloaded the data will be reloaded as well, and your selection
will be lost. You must protect against that by checking the
page's
IsPostBack
property, which is set to true when the page is
posted back, as shown in Example 9-1 (VB.NET) and
Example 9-2 (C#).
 |
It is a recurring theme throughout this book that the differences
between C# and VB.NET are syntactic sugar, and not terribly
important. Even more interesting, if you know one language, the other
is quite understandable. This example shows that quite clearly.
|
|
Example 9-1. Checking IsPostBack in VB.NET
Private Sub Form_Load(ByVal sender As object, _
ByVal e As System.EventArgs) Handles MyBase.Load
If Not IsPostBack( ) Then
' create the array list
Dim bookList As New ArrayList( )
' add all the books
bookList.Add("Programming ASP.NET")
bookList.Add("Programming C#")
bookList.Add("Teach Yourself C++ In 21 Days")
bookList.Add("Teach Yourself C++ In 24 Hours")
bookList.Add("TY C++ In 10 Minutes")
bookList.Add("TY More C++ In 21 Days")
bookList.Add("C++ Unleashed")
bookList.Add("C++ From Scratch")
bookList.Add("XML From Scratch")
bookList.Add("Web Classes FS")
bookList.Add("Beg. OO Analysis & Design")
bookList.Add("Clouds To Code")
bookList.Add("CIG Career Computer Programming")
' set the data source
ddlBooks.DataSource = bookList
' bind to the data
ddlBooks.DataBind( )
Else
lblMsg.Text = "Selected book: " & ddlBooks.SelectedItem.Text
End If
End Sub
Example 9-2. Checking IsPostBack in C#
private void Page_Load(object sender, System.EventArgs e)
{
if (! Page.IsPostBack)
{
// create the array list
ArrayList bookList = new ArrayList( );
// add all the books
bookList.Add("Programming ASP.NET");
bookList.Add("Programming C#");
bookList.Add("Teach Yourself C++ In 21 Days");
bookList.Add("Teach Yourself C++ In 24 Hours");
bookList.Add("TY C++ In 10 Minutes");
bookList.Add("TY More C++ In 21 Days");
bookList.Add("C++ Unleashed");
bookList.Add("C++ From Scratch");
bookList.Add("XML From Scratch");
bookList.Add("Web Classes FS");
bookList.Add("Beg. OO Analysis & Design");
bookList.Add("Clouds To Code");
bookList.Add("CIG Career Computer Programming");
// set the data source
ddlBooks.DataSource=bookList;
// bind to the data
ddlBooks.DataBind( );
}
else
{
lblMsg.Text = "Selected book: " + ddlBooks.SelectedItem.Text;
}
}
In Example 9-1 and Example 9-2, the
IsPostBack property is tested. If it returns true,
then the page has been posted back to itself by a user taking an
action, and the selected item is displayed. If the IsPostBack
property returns false, then the book list is
populated with data from the ArrayList.
|