我正在开发一个自定义控件,用于呈现(a)textbox
(es),在textchange event
我希望异步地将值发送到控件,在那里它将搜索并使数据可用于稍后在page load
上提取的公开属性。但我的问题是,如何异步地调用我控制中的方法来执行搜索功能。目前,textbox textchange
和buttons 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 :(得分:0)
发现你必须从IPostBackDataHandler继承你的控件,同样,异步问题就在那里。我已经使用了一个解决方法,我已将控件放在updatepanel中(将updatepanel放在aspx上),通过控制onclick注册一个按钮绑定,在jquery / javascript上我触发按钮的click事件以异步发送调用。事情工作正常,但在触发事件javascript代码再次运行后,尝试通过再次注册客户端脚本调用该函数,没有工作。