开发者

Exposing and then using OnTextChange Event handler

Related Question: Adding custom OnTextChange event handler on custom TextBox

In the related question I asked how I could expose OnTextChange in my custom textbox control and we resolved it by:

public event EventHandler TextChanged
{
    add { customTextBox.TextChanged += value; }
    remove { customTextBox.TextChanged -= value; }
}

I am trying use TextChanged event like this when the control is implemented:

    <uc:CustomTextBox ID="customTextBox"
                      runat="server"
                      OnTextChanged="CustomTextBox_OnTextChanged">
    </uc:CustomTextBox>

This never seems to hit the following when running:

    protected void CustomTextBox_OnTextChanged(System.EventArgs e)
    {
     // Do something here
    }

Or hit:

    protected void CustomTextBox_OnTextChanged(object sender, EventArgs e)
    {
     // Do something here
    }

What am I doing wrong, what am 开发者_开发百科I missing out and is this the best way or common practice way to do everything I am trying to do here?


You need to set AutoPostBack=True property of TextBox.

If you are designing a web user control then simply define public property to set True/False value of CustomTextBox in user control's code-behind:

public   bool AutoPostBack
    {
        get
        {
            return CustomTextBox.AutoPostBack;
        }
        set
        {
            CustomTextbox.AutoPostBack = value;
        }
    }

If you are developing a custom web control then you can to override the AutoPostBack property for the customization. If you don't want to customize AutoPostBack property then don't override it.

In case you override AutoPostBack property, please invoke the super class's default implementation.

public override  bool AutoPostBack
    {
        get
        {
            return base.AutoPostBack;
        }
        set
        {
            base.AutoPostBack = value;
        }
    }


In order for OnTextChanged to fire, you need to specify AutoPostBack="true" on the TextBox.

In the ASPX markup:

<uc:CustomTextBox ID="customTextBox" runat="server" OnTextChanged="CustomTextBox_OnTextChanged" AutoPostBack="true"></uc:CustomTextBox>

In the code-behind of the CustomTextBox user control:

public bool AutoPostBack 
{ 
    get 
    { 
        //the textbox in the user control
        return customTextBox.AutoPostBack; 
    } 
    set 
    { 
        customTextBox.AutoPostBack = value; 
    } 
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜