2009年10月11日

Label 控制項搭配 AJAX Control Toolkit 的 PopupControlExtender 使用的問題


希望在某個 Label 控制項,按下滑鼠左鍵之後,即會使用 AJAX Control Toolkit 的 PopupControlExtender 彈出 1 個 Panel 控制項,於其內有 2 個Textbox 與 Button(分別用來「新增」與「取消」之用)。於各 Textbox 輸入完畢,並按下「新增」按鈕之後,便將各 Textbox 的值放入剛剛觸發的 Label 控制項裡。

程式碼的重點在於:

  1. 不需用 UpdatePanel 把 Label 控制項包起來,雖然 UpdatePanel 是 AJAX Control Toolkit 的核心之一,但是請不要濫用!
    一來是效能考量,二來是為了善用 PopupControlExtender 所提供的 CommitScript 與 CommitProperty 屬性。
  2. Popupcontrol Extender 所彈出的 Panel 控制項之 UpdatePanel 的 UpdateMode 屬性應該要明確設定為 Conditional。
    很多人抱怨用了 AJAX 網路流量沒有減少,效能也沒提升,原因就是因為沒特別去設定 UpdateMode 屬性。
  3. Label 控制項根本就沒有 value 這樣的屬性可在 JavaScript 使用,有的也只是 HTML 控制項通用的 innerText 或 innerHTML,那為什麼我可以在 GetValue() 那段 JavaScript 程式碼這樣寫:
  4. function GetValue(sender)
    {
      var lbl = $get(sender);
      if(lbl!=null) lbl.innerText = lbl.value;
    }
    請自個體驗箇中奧妙吧!


原始碼下載:

PopupControlExtenderUsingLabels.zip

沒有留言:

張貼留言