blog.Toby

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            130 隨筆 :: 2 文章 :: 150 評論 :: 0 Trackbacks

          唉,現(xiàn)在才發(fā)現(xiàn),原來在ASP.NET中IsPostBack屬性是多么的重要......

          一般是在page_load中檢查是否是第一次加載本頁或是判斷是否是用戶提交(PostBack)
          if (!IsPostBack) {
          //do something
          }
          在用DataGrid訪問和更新數(shù)據(jù)庫時沒有注意到這個問題,會出現(xiàn)各種各樣的奇怪問題,比如我的這種.

          問題描述:
          ????????用DataGrid訪問和更新數(shù)據(jù)庫(SQL Server --Northwind --table name:categories --Query :select categoryID,categoryName,Description form categories ),除了更新操作以外,其它功能OK.對DataGrid進行如下操作:點擊“編輯”,相應的行數(shù)據(jù)變?yōu)榭删庉嫞瑫r編輯按鈕被“更新”和“取消”代替。對數(shù)據(jù)進行編輯,如把Description中的AAA改為BBB。再點“更新”按鈕。本意是想用此方法將修改后的數(shù)據(jù)(BBB)代替數(shù)據(jù)庫中原有的AAA,當然是用Update方法了。但在點“更新”后,數(shù)據(jù)沒有改變,我做過測試,UPDATE方法是有效的,也就是說,UPDATE方法更新的不是新數(shù)據(jù),而是沒有修改前的舊數(shù)據(jù),造成數(shù)據(jù)沒有更新(實際上是更新了)。要注意的是我的Page_Load事件如下
          private void Page_Load(object sender, System.EventArgs e)
          ??{
          ???// 在此處放置用戶代碼以初始化頁面
          ???OleAd.Fill(ds);//OleAd--oledbAdapter
          ???dg.DataBind();//dg--DataGrid
          ??}

          分析問題(個人推測,請指正):
          ????????由于沒有用IsPostBack判斷是否是第一次加載此頁面,所以不管什么情況下只要有PostBack,都會對dg(DataGrid)進行數(shù)據(jù)綁定。所以在進行任何的sumbit后,dg都會去數(shù)據(jù)庫綁定數(shù)據(jù)而不理會頁面中的數(shù)據(jù)。
          ????????當對選中的數(shù)據(jù)進行修改完畢后,在點“更新”時,提交此頁面修改的數(shù)據(jù),而馬上遇到Page_Load事件,不等對修改數(shù)據(jù)進行處理,服務器就先生成原頁面(MS用這種方法提高速度?),發(fā)現(xiàn)dg.DataBind(),執(zhí)行之,于是放棄數(shù)據(jù)庫更新,于是看不到更新結果了。

          解決問題:
          ????????解決倒是很簡單,Page_Load事件中加上對IsPostBack的判斷就可以了。
          private void Page_Load(object sender, System.EventArgs e)
          ??{
          ???// 在此處放置用戶代碼以初始化頁面
          ???OleAd.Fill(ds);//OleAd--oledbAdapter
          ????if(!IsPostBack)
          {
          ???dg.DataBind();//dg--DataGrid
          }
          ??}

          posted on 2006-08-17 15:13 渠上月 閱讀(200) 評論(0)  編輯  收藏 所屬分類: other tips
          主站蜘蛛池模板: 屯留县| 丰原市| 贵港市| 涟源市| 汉源县| 五家渠市| 通山县| 高邮市| 吴江市| 会泽县| 安塞县| 吴旗县| 枝江市| 紫金县| 吉安县| 平潭县| 天镇县| 定西市| 宝鸡市| 安阳县| 横山县| 玉环县| 平山县| 明溪县| 江华| 桦南县| 银川市| 松阳县| 蒙山县| 班戈县| 阜阳市| 昭平县| 庄河市| 全南县| 瑞金市| 泰来县| 望江县| 新余市| 靖宇县| 洮南市| 油尖旺区|