萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> .net編程 >> 獲取confirm返回值的故事

獲取confirm返回值的故事

class="area">

  也許很多人看了這個標題就會不屑看下去,大可以說網上多的去了這種問題的文章,的確,當我碰到這個問題的時候,我也首先在網上找了很多資料,但是沒有合適的,或者說沒有講的清晰的,而後,我又問了幾個牛人,以及幾位同事,也都沒有搞懂,後來在我老大的幫助下,最終還是解決了,所以我覺得有這個必要寫出來給大家分享下~

  廢話說了這麼多,還是直奔主題吧~
  我的要求是這樣的,頁面上有個表單,表單的內容是綁定數據庫的,需要動態刷新的,而後有個按鈕——save,點擊之後為保存到數據庫——Insert_Save(),又有個按鈕submit,點擊之後直接提交到數據庫Insert_Submit(),兩者的區別是插入到不同的表中,現在我要設計這個保存按鈕,要求經過2個函數的判斷,才能夠執行insert,分別是Ckeck_Empty()以及Check_Formal(),即檢測是否全填了和格式是否都正確,這兩個方法都在後台完成了,現在的任務就是,在點擊save按鈕之後,需要彈出confirm選擇框,“是否需要直接提交?”,如果點擊“是”,則執行與submit按鈕相同的操作,若否則進行save操作,那我如何才能把confirm的值保存下來呢?
  很多人可能這麼想:(因為要求在後台執行)
  ScriptManager.RegisterStartupScript(
  this.Page,
  this.Page.GetType(),
  this.ClientID,
  "<script language=\"javascript\" type=\"text/javascript\" >
  if(confirm('需要直接提交嗎?'))
  {
    Insert_Save()
  }
  else
  {
    Insert_Submit()
  }
  </script>" ,
  false);
  然後再實際的操作當中,卻發現了這個彈出框到了所以操作最後才執行,也就是說,我並沒有執行所謂的詢問操作而直接根據默認狀態insert到數據庫了,原因很簡單,因為首先執行的是服務器端,然後才執行客戶端~因此此方法不能解決.
  而後,我又在網上看到了將返回值保存到session或者cookie的方法,原本應該是可以的,但是我上述幾個函數都是需要傳入其他參數(datarow,type_name等),因此如果使用session和cookie則這些傳入參數將會取不到~
  最後,實在沒辦法了,就只好去問老大,後來老大苦思冥想,終於想到個小竅門————通過隱藏按鈕賦值的方法把confirm的返回值重新傳到前台:即在頁面上放一個隱藏按鈕btn_hide,width設為0,visible設為false,然後將原本save的觸發事件裡confirm的返回值存到btn_hide.value中,然後將insert到數據庫的操作放到btn_hide的觸發事件中,將需要傳入的dr以及type——name放在session中,即將數據庫錄入的操作存放在btn_hide_Click()中,也就是通過注冊隱藏按鈕事件的方法,來解決傳值問題~

  也許你不一定遇的到像我這種棘手的情況,但是也許你也會碰到,上述的方法並不是最佳的解決情況,一定有牛人有更好的方法解決,這裡只是小白的拙見,但是也想貼出來和大家分享一下~一起進步~

copyright © 萬盛學電腦網 all rights reserved