2013-03-06 34 views
0

我正在開發一個自定義控件,它呈現(a)textbox(es),在它的textchange event中我想異步地將值發送到控件在那裏它將搜索並使數據在一個暴露的財產中被提取以後在page load上獲取。但我的問題是,如何異步調用我的控制內編碼的方法來執行搜索功能。目前,textbox textchangebuttons click events未觸發,按鈕單擊加載頁面,並在文本框中寫入不做任何事情。這是代碼。單擊事件上的按鈕,在更新面板中,通過自定義服務器控件呈現不點火

public int Count { get; set; } 
    public List<object> Selection { get; set; } 
    public object SelectedObject { get; set; } 
    public Label label; 
    public TextBox textBox; 
    protected override void RenderContents(HtmlTextWriter output) 
    { 
     textBox = new TextBox(); 
     textBox.TextChanged += new EventHandler(Method); 
     UpdatePanel up = new UpdatePanel(); 
     up.ID = "UpdatePanel1"; 
     up.ChildrenAsTriggers = true; 
     up.UpdateMode = UpdatePanelUpdateMode.Conditional; 
     up.ContentTemplateContainer.Controls.Add(a); 
     this.label = new Label(); 
     this.label.Text = "Initialized Text."; 
     up.ContentTemplateContainer.Controls.Add(this.label); 
     Button button = new Button(); 
     button.Text = "Say Hello"; 
     button.Click += new EventHandler(HandleButtonClick); 
     up.ContentTemplateContainer.Controls.Add(button); 
     this.Controls.Add(up); 
     foreach (Control c in this.Controls) 
     { 
      c.RenderControl(output); 
     } 
    } 


    private List<object> Get(string searchValue) 
    { 
     throw new NotImplementedException(); 
    } 
    public void Method(object sender, EventArgs e) { 
     (sender as TextBox).Text += " "; 
     //Selection = Get((sender as TextBox).Text); 
    } 
    private void HandleButtonClick(object sender, EventArgs e) 
    { 
     this.label.Text = "Hello " + this.textBox.Text; 
     //Selection = Get(this.textBox.Text); 
    } 
+0

'a.TextChanged + = new EventHandler(Method);' - 你在哪裏得到這個'a'? – 2013-03-06 06:21:40

+0

我的不好,我改變爲文本框的可讀性。編輯,一個是文本框。 – 2013-03-06 08:37:19

回答

0

發現你必須從IPostBackDataHandler繼承你的控制,同樣,異步問題也在那裏。我已經使用了一種解決方法,我已經把控制器放在updatepanel中(把updatepanel放在aspx上),通過控件的onclick註冊一個按鈕,在jquery/javascript上我點擊按鈕的click事件來異步發送調用。事情工作正常,但在發射事件JavaScript代碼不會再次運行後,嘗試通過在prerender中註冊客戶端腳本再次調用該函數,沒有工作。

相關問題