国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

(轉(zhuǎn))IsPostBack的用法

2019-11-14 16:22:28
字體:
供稿:網(wǎng)友

某一天在網(wǎng)上看到有人寫了這樣一段代碼:

PRotected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DropDownList1.AutoPostBack = true;
        }
        ArrayList address = new ArrayList();
        address.Add("美國");
        address.Add("中國");
        address.Add("日本");
        DropDownList1.DataSource = address;
        DropDownList1.DataBind();     
    }
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        switch(DropDownList1.SelectedValue)
        {
            case "中國":
                {
                    ArrayList china_address = new ArrayList();
                    china_address.Add("湖南");
                    china_address.Add("廣東");
                    china_address.Add("廣西");
                    DropDownList2.DataSource = china_address;
                    DropDownList2.DataBind();                   
                    break;
                }
            case "美國":
                {
                    ArrayList american_address = new ArrayList();
                    american_address.Add("洛杉磯");
                    american_address.Add("圣安德列斯");
                    DropDownList2.DataSource = american_address;
                    DropDownList2.DataBind();
                    break;
                }
            case "日本":
                {
                    ArrayList japan_address = new ArrayList();
                    japan_address.Add("神戶");
                    japan_address.Add("大板");
                    DropDownList2.DataSource = japan_address;
                    DropDownList2.DataBind();
                    break;
                }
        }       
    }

然后,就出問題了。

第一次打開頁面結(jié)果如:

 

 

然后選擇中國,結(jié)果如:

 

 

選擇日本呢?結(jié)果仍然是:

 

 

這個問題的所在,就是那個提問的人沒有搞明白IsPostBack的概念,這也許是很多初學(xué)者容易混淆的一個概念。對于下拉菜單里的數(shù)據(jù)只需第一次加載頁面程序時綁定就可以。象上邊的例子寫在If(!IsPostBack)代碼塊外邊,這樣,每次服務(wù)器響應(yīng)客戶端回發(fā)時都會重新綁定數(shù)據(jù)源,因此也就會出現(xiàn)上邊的錯誤結(jié)果。

查查msdn,上邊有IsPostBack的定義:獲取一個值,該值指示該頁是否正為響應(yīng)客戶端回發(fā)而加載,或者它是否正被首次加載和訪問。如果是為響應(yīng)客戶端回發(fā)而加載該頁,則為 true;否則為 false。

“為相應(yīng)客戶端回發(fā)而加載”,注意,這里的客戶端的回發(fā)是指服務(wù)器端響應(yīng)客戶端的回發(fā),這也就決定了該屬性是由服務(wù)器控件的事件所引起。 對于javascript客戶端腳本代碼,由于只是運行在客戶端,從而執(zhí)引發(fā)不了該屬性的執(zhí)行。

因此上邊的例子,我們將代碼:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DropDownList1.AutoPostBack = true;
        }
        ArrayList address = new ArrayList();
        address.Add("美國");
        address.Add("中國");
        address.Add("日本");
        DropDownList1.DataSource = address;
        DropDownList1.DataBind();     
    }
改為:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        { 
            DropDownList1.AutoPostBack = true;

   ArrayList address = new ArrayList();
        address.Add("美國");
        address.Add("中國");
        address.Add("日本");
        DropDownList1.DataSource = address;
        DropDownList1.DataBind();     
  }

}
ok,現(xiàn)在的結(jié)果是我們想要的結(jié)果了,具體的結(jié)果如下:

選中國后,結(jié)果:

 

 

選日本后,結(jié)果:

 

 

選擇美國后,結(jié)果:

 

 

轉(zhuǎn)自:http://blog.csdn.net/tangjunping/article/details/4372067

     


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 法库县| 邯郸县| 本溪| 大城县| 宜章县| 上虞市| 祁东县| 金乡县| 家居| 万荣县| 青冈县| 福泉市| 湖口县| 常州市| 额济纳旗| 上杭县| 宜宾市| 宁波市| 嘉黎县| 营口市| 岳西县| 腾冲县| 镇沅| 莱芜市| 自治县| 岑巩县| 定日县| 元谋县| 亚东县| 开封市| 石城县| 曲阳县| 涞水县| 合江县| 宁远县| 宿州市| 阿荣旗| 绥芬河市| 新河县| 视频| 寻甸|