Разоблачение и последующее использование обработчика события OnTextChange - PullRequest
1 голос
/ 29 сентября 2011

Смежный вопрос: Добавление пользовательского обработчика события OnTextChange в пользовательский TextBox

В связанном вопросе я спросил, как можно выставить OnTextChange в моем элементе управления с текстовым полем, и мы решили его с помощью:

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

Я пытаюсь использовать событие TextChanged, подобное этому, когда реализован элемент управления:

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

Кажется, что при запуске никогда не происходит следующее:

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

ИлиХит:

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

Что я делаю неправильно, что я упускаю, и является ли это лучшим или общепринятым способом сделать все, что я пытаюсь сделать здесь?

Ответы [ 2 ]

3 голосов
/ 29 сентября 2011

Вам необходимо установить AutoPostBack=True свойство TextBox.

Если вы разрабатываете пользовательский веб-элемент управления, просто определите общедоступное свойство, чтобы установить True/False значение CustomTextBox в программном обеспечении пользовательского элемента управления:

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

Если вы разрабатываете собственный веб-элемент управления, вы можете переопределить свойство AutoPostBack для настройки.Если вы не хотите настраивать свойство AutoPostBack, не переопределяйте его.

Если вы переопределяете свойство AutoPostBack, пожалуйста, вызовите реализацию суперкласса по умолчанию.

public override  bool AutoPostBack
    {
        get
        {
            return base.AutoPostBack;
        }
        set
        {
            base.AutoPostBack = value;
        }
    }
0 голосов
/ 29 сентября 2011

Чтобы запустить OnTextChanged, вам нужно указать AutoPostBack="true" в TextBox.

В разметке ASPX:

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

В коде пользовательского элемента управления CustomTextBox:

public bool AutoPostBack 
{ 
    get 
    { 
        //the textbox in the user control
        return customTextBox.AutoPostBack; 
    } 
    set 
    { 
        customTextBox.AutoPostBack = value; 
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...