2012-07-09 89 views
0

我有一个问题,它看起来很简单,给我很多麻烦。我为ASP.NET中的文本框定义了一个自定义控件,它内置了onkeyup属性。我的问题是,当使用这个控制我想覆盖onkeyup,但它似乎没有工作。我的源代码如下:ASP.Net自定义控件 - 覆盖onkeyup

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

,并在代码中使用它时,

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

后面我没设置

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

不过,我不断获取自定义定义的onkeyup控制而不是更具体的控制。 有没有解决这个问题的方法?非常感谢你!

回答

2

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

1

您可以将属性添加到您的CustomControl

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

坐落在OnInit默认值,以便您可以稍后(例如Page_Load)在页面覆盖。

1

你可以尝试在你的用户contorl添加一个属性,是这样的:

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