Кнопки на событии клика, внутри панели обновления, визуализируются с помощью пользовательского серверного элемента управления, но не запускаются
Я разрабатываю пользовательский элемент управления, который отображает (а) textbox
(е), в своем 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);
}
1 ответ
Обнаружил, что вы должны унаследовать свой элемент управления от IPostBackDataHandler, также существует асинхронная проблема. Я использовал обходной путь, я поместил элемент управления в updatepanel (поместил updatepanel на aspx), зарегистрировал кнопку через элемент управления, нажатие которого связано, в jquery/javascript я запускаю событие click кнопки, чтобы отправлять вызовы асинхронно. Все работает нормально, но после запуска этого события javascript-код не запускается снова, попытался вызвать функцию путем регистрации клиентского сценария в prerender снова, не сработало.