2012-07-09 124 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();" />