Пользовательский элемент управления ASP.Net — переопределить onkeyup

У меня есть одна проблема, которая, как бы простая она ни казалась, доставляет мне много хлопот. Я определил пользовательский элемент управления для текстового поля в ASP.NET со встроенным атрибутом onkeyup. Моя проблема в том, что при использовании этого элемента управления я хочу переопределить onkeyup, но, похоже, он не работает. Мой исходный код следующий:

this.Attributes.Add("onkeyup", "javascript:" + onKeyUp + ";"); // for the custom control

и при его использовании

< myControl:SpecialTextBox ID="txtValue" runat="server"/>

в коде позади я установил

txtValue.Attributes.Add("onKeyUp", "DefaultValue();");

Тем не менее, я продолжаю получать onkeyup, определенный в пользовательском элементе управления, вместо более конкретного. Есть ли какие-либо решения для этого? Большое спасибо!


person Crista23    schedule 09.07.2012    source источник


Ответы (3)


Попробуйте использовать txtValue.Attributes["onKeyUp"] = "DefaultValue();"; в коде вашей страницы, это переопределит ваш пользовательский элемент управления.

person drbald    schedule 09.07.2012

Вы можете добавить свойство в свой CustomControl:

public string OnClientKeyUp { get { /**/ } set { /**/ }

Установите значение по умолчанию в OnInit, чтобы вы могли переопределить его на странице позже (например, Page_Load).

person jrummell    schedule 09.07.2012

Вы можете попробовать добавить свойство в свой пользовательский контроллер, что-то вроде этого:

public string KeyUp
{
    get
    {
        if (txtValue.Attributes["onKeyUp"] == null)
            return string.Empty;

        return txtValue.Attributes["onKeyUp"]
    }
    set
    {
        txtValue.Attributes["onKeyUp"] = value;
    }
}

А в теге asp.net на стороне сервера вы можете вызвать это свойство и установить значение:

<myControl:SpecialTextBox ID="txtValue" runat="server" KeyUp="DefaultValue();" />
person Felipe Oriani    schedule 09.07.2012