2009年10月11日

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


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

程式碼的重點在於:

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


原始碼下載:

PopupControlExtenderUsingLabels.zip

沒有留言:

張貼留言