【问题标题】:Buttons on click event, inside an update panel, rendered through a custom server control not firing单击事件上的按钮,在更新面板内,通过未触发的自定义服务器控件呈现
【发布时间】:2013-02-20 19:34:47
【问题描述】:

我正在开发一个自定义控件,它在其textchange event 中呈现 (a) textbox(es)稍后在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);
    }

【问题讨论】:

  • a.TextChanged += new EventHandler(Method); - 你从哪里得到这个a
  • 我的错,我将 a 更改为 textBox 以提高可读性。已编辑,a 为 textBox。

标签: c# custom-controls asp.net-customcontrol


【解决方案1】:

发现你必须从 IPostBackDataHandler 继承你的控件,而且异步问题也存在。我使用了一种解决方法,我已将控件放在 updatepanel 中(将 updatepanel 放在 aspx 上),通过绑定的控件 onclick 注册了一个按钮,在 jquery/javascript 上我正在触发按钮的单击事件以异步发送调用。一切正常,但在触发该事件后,javascript 代码不再运行,尝试通过再次在 prerender 中注册客户端脚本来调用该函数,但没有成功。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 2016-10-16
    • 1970-01-01
    相关资源
    最近更新 更多