從零開始學ASP.NET(基礎篇)3

2010-08-28 10:48:27來源:西部e網(wǎng)作者:

第三天

學習目的:


掌握下拉列表框的用法,并理解AutoPostBack屬性;

理解IsPoskBack及用法;

初識DataTable的增加列、行,與下拉列表框綁定的方法。

今天的內(nèi)容稍多些,而且涉及一些比較常用的,如IsPostBack及DataTable的基本用法。

知識點:
IsPostBack:在頁面onLoad之間是false值,而當從服務器回傳后,該值變?yōu)閠rue。當頁面中的Button或ImageButton等觸發(fā)事件,都會把表單回傳到服務器,而返回時又會引發(fā)onLoad事件。為了節(jié)省服務器資源,有些加載中需進行一次,而不需要在回傳后多次發(fā)生,可以用!IsPoskBack來作為條件,那么頁面第一次加載后,以后就不會發(fā)生。該屬性可以幫助你提高程序的性能。
DataTable:即數(shù)據(jù)表,.Net 程序中最常用的類,特別是數(shù)據(jù)庫開發(fā)中,沒有該類的程序是不可想象的。

先做個小程序來練練手,很簡單,就一個下拉菜單,取名dlstWeb。在屬性的Itmes選項中打開以下對話框,添加各項:


圖片如下:



ASPX中的代碼為:
<asp:DropDownList id="dlstWeb" style="Z-INDEX: 101; LEFT: 32px;
POSITION: absolute; TOP: 32px" runat="server"
   Width="88px" AutoPostBack="True">
   <asp:ListItem value="http://www.sina.com.cn">新浪 </asp:ListItem>
   <asp:ListItem value="http://www.sohu.com">搜狐</asp:ListItem>
   <asp:ListItem value="http://www.163.com">網(wǎng)易</asp:ListItem>
</asp:DropDownList>

在下拉框的SelectedIndexChanged事件中的加入代碼:
       private void dlstWeb_SelectedIndexChanged(object sender, System.EventArgs e)
       {
           Response.Write("<script language=javascript>window.open("" +dlstWeb.Selectedvalue + "");</script>");
       }

按F5運行,可是我們發(fā)現(xiàn)這下拉框選擇時什么事也沒發(fā)生。原來原因是出在下拉框的AutoPostBack屬性上,把它設為true后再試試,一切OK了。
下面我們增加些難度,下拉框中的內(nèi)容很多情況下不是事先固定的,而是要動態(tài)添加。這里設計是用一數(shù)據(jù)表DataTable與之聯(lián)系起來。

另建一文件,按上添加一下拉框,取名dlstWeb,先設AutoPostPack為false,否則在剛啟動而面就觸發(fā)SelectedIndexChanged事件,彈出窗口就亂飛了。
在onLoad事件中添加代碼,注意DataTable用法及IsPoskBack
DataTable屬于System.Data命名空間,所以如果頁面沒預添加,可以自行增加這一行。

       private void Page_Load(object sender, System.EventArgs e)
       {
           // 用IsPostBack判斷,只在沒有回傳時才初始化
           // 這樣可以防止每次刷新或回傳時,都執(zhí)行一次以下代碼
           // 可以節(jié)省服務器的資源了。
           if (!IsPostBack)
           {
               DataTable dt = new DataTable();
               DataRow dr;

               // 在表中增加字段
               dt.Columns.Add("WebName", typeof(string));
               dt.Columns.Add("WebUrl", typeof(string));

               // 表中增加行
               dr = dt.NewRow();
               dr["WebName"] = "新浪";
               dr["WebUrl"] = "http://www.sina.com.cn";
               dt.Rows.Add(dr);

               dr = dt.NewRow();
               dr["WebName"] = "網(wǎng)易";
               dr["WebUrl"] = "http://www.163.com";
               dt.Rows.Add(dr);

               dr = dt.NewRow();
               dr["WebName"] = "搜狐";
               dr["WebUrl"] = "http://www.sohu.com";
               dt.Rows.Add(dr);

               // 把表與下拉菜單綁定數(shù)據(jù)
               dlstWeb.DataSource = dt;
               dlstWeb.DataTextField = "WebName";
               dlstWeb.DatavalueField = "WebUrl";
               dlstWeb.DataBind();            

               // 開始時就把下拉菜單的AutoPostBack設為false,
               // 防止一開始就亂跳出網(wǎng)頁來
               dlstWeb.AutoPostBack = true;
           }
       }

下面的事件與前面一模一樣了
       private void dlstWeb_SelectedIndexChanged(object sender, System.EventArgs e)
       {
           Response.Write("<script language=javascript>window.open("" +dlstWeb.Selectedvalue + "");</script>");
       }

小結:今天的一些知識非常重要,為了理解,程序的難度并不高。但這是以后程序設計的基礎,所以這些你一定要掌握。
VB.NET增加字段代碼稍有不同,如下:

               // 在表中增加字段
               dt.Columns.Add("WebName", GetType(String))
               dt.Columns.Add("WebUrl", GetType(String))

其它都差不多了。
關鍵詞:ASP.NET

贊助商鏈接: