2012-07-18 129 views
0

我在擴展ExtenderControlBase在ASP .NET中的控制。這就是所謂的:從客戶端ASP .NET Extender服務器端編寫客戶端代碼ExtenderControlBase

public class LookupExtender : ExtenderControlBase 

基本上它類似於自動完成功能的東西所行 - 但靜態的。 LookupExtender有類型名 & LISTNAME attritbutes指定:具有將傳遞到的GetList方法列表的的String []的GetList(字符串LISTNAME)方法

    現在,LookupExtender創建了TypeName實例即時(反射),調用GetList方法,我想將字符串[]結果呈現給客戶端作爲數組,以便擴展程序客戶端代碼具有用於自我暗示的靜態源。

    有沒有什麼辦法來渲染JavaScript從LookupExtender class?

    這是我的示例代碼(目前自我暗示值是硬編碼):

    set_TargetTextBoxID: function (value) { 
        this._targetTextBoxID = value; 
    
        $(function() { 
         var availableTags = [ 
          "Switzerland", 
          "Poland", 
          "Europe", 
          "USA", 
          "Asia" 
         ]; 
         $("#" + value).autocomplete({ 
          source: availableTags, 
          minLength: 0, 
          close: function() { 
           $(this).blur(); 
          } 
         }).focus(function() { 
          $(this).autocomplete("search", ""); 
         }); 
        }); 
    } 
    
  • 回答

    0

    原來是很容易擴展的

    • 服務器端:

      protected override void RenderInnerScript(ScriptBehaviorDescriptor descriptor) 
      { 
          var listSource = System.Reflection.Assembly.GetExecutingAssembly().CreateInstance(SourceType) as ILookupExtenderListSource; 
          if (listSource == null) return; 
      
          var lookupList = listSource.GetList(SourceList); 
          descriptor.AddProperty("LookupArray", lookupList); 
      } 
      
    • 客戶端js腳本:

    CIPNet.Extenders.LookupBehavior.prototype = { 初始化:功能(){ CIPNet.Extenders.LookupBehavior.callBaseMethod(此, '初始化'); },

    dispose: function() { 
        CIPNet.Extenders.LookupBehavior.callBaseMethod(this, 'dispose'); 
    }, 
    
    // 
    // Property accessors 
    // 
    
    get_LookupArray: function() { 
        return this._lookupArray; 
    }, 
    
    set_LookupArray: function(value) { 
        this._lookupArray = value; 
    }, 
    
    get_TargetTextBoxID: function() { 
        return this._targetTextBoxID; 
    }, 
    
    set_TargetTextBoxID: function(value) { 
        this._targetTextBoxID = value; 
        var that = this; 
    
        $(function() { 
    
         var showSuggestion = function() { 
          $(this).autocomplete("search", ""); 
         }; 
    
         var availableTags = that._lookupArray; 
         $("#" + value).autocomplete({ 
          source: availableTags, 
          delay: 0, 
          minLength: 0 
         }).click(showSuggestion); 
        }); 
    } 
    

    };