if (!IsPostBack)


Page_Load不要忘了if (!IsPostBack)

    問題:在DropDownList的SelectedIndexChanged事件中綁定數據,運行時,DropDownList控件的SelectedIndexChanged事件失效。

        Details:改變DropDownList的選項后,頁面自動初始化回原來設置。

       思考原因:

(1)DropDownList的SelectedIndexChanged事件代碼編寫有誤 || 事件中引用的自定義數據綁定方法有誤|| 引用的BLL層方法有誤 || BLL層所引用的DAL層方法有誤 || DAL層所用存儲過程及其參數有誤。——檢查無誤

(2)clue:DropDownList選項改變后,自動變為頁面初始化的值,導致SelectedIndexChanged事件失效。

       問題所在Page_Load 事件中直接是綁定DropDownList數據的代碼。這樣,當DropDownList選項改變,觸發SelectedIndexChanged事件 時,系統會自動先重新執行Page_Load(),再執行SelectedIndexChanged,所以選項總會初始化為默認值,GridView中的 數據自然不會改變。

       解決:在Page_Load事件中加上if (!IsPostBack),並把綁定數據放在if (!IsPostBack)中,如下

  有關if (!IsPostBack):

       經常有人忘記寫if (!IsPostBack)結果導致提交后取不到用戶所選擇的列表的值,因為Page_Load先執行,控件被重新初始化了。

 

       所以,如果你是通過服務器控件觸發事件來進行數據庫更新的話,在你的page_load事件中把所有程序放在if (!IsPostBack)里面,否則你會發現顯示的總是第一次載入的值。

 

       一個頁面第一次顯示的時候IsPostBack=false,然后你在這個頁面上點擊按鈕或其它東西提交的時候,IsPostBack=true。

 

       if(!IsPostBack),獲取一個值,該值指示該頁是否正為響應客戶端回發而加載,或者它是否正被首次加載和訪問。

 

       IsPostBack 由於用戶交互(page.submit())提交頁面而產生的加載,二次加載。第一次加載頁面時,Page.ispostback是false,當觸發該 頁面的web控件時,產生回發,這時候該屬性會是true,所以要用if(!IsPostback)來判斷,只在第一次進入頁面時加載數據。

 

       Details:

 

(1)if (!IsPostBack) 里面的代碼只執行一遍,即頁面第一次加載時。

 

(2)以后頁面重新刷新時,if (!IsPostBack)里面的語句不執行。

 

(3)首次建立頁面 IsPostBack為false,用來控制里邊的語句只執行一次。

 

(4)在對控件進行數據綁定時是必須加上的,因為如果不加的話,每一次響應客戶端回發時,總是要執行一次Page_Load(),接着又要執行數據綁定的語句了,如此你不能選擇數據了。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM