ASP.Net自定义控件 - 覆盖onkeyup

时间:2012-07-09 14:59:49

标签: 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而不是更具体的控件。 这有什么解决方案吗?非常感谢你!

3 个答案:

答案 0 :(得分:2)

尝试在页面的代码发布中使用txtValue.Attributes["onKeyUp"] = "DefaultValue();";,这将覆盖您的自定义控件。

答案 1 :(得分:1)

您可以向CustomControl添加媒体资源:

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

OnInit中设置默认值,以便稍后在页面中覆盖(例如Page_Load)。

答案 2 :(得分:1)

您可以尝试在用户控件上添加属性,如下所示:

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();" />