Кнопки на событии клика, внутри панели обновления, визуализируются с помощью пользовательского серверного элемента управления, но не запускаются

Я разрабатываю пользовательский элемент управления, который отображает (а) 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 снова, не сработало.

Другие вопросы по тегам