2011-11-11 63 views
0

我正在工作的地方存在一個存在的頁面,並且在ascx中有一個複選框,並且它的.cs中有一個CheckedChange事件。與該網頁有關的是,當我運行網站,並檢查框,它從來沒有觸發事件,而是它通過On_Load事件,它永遠不會傳遞事件...我不知道爲什麼它不會觸發事件...複選框被取消或未被選中不會觸發事件

<asp:CheckBox runat="server" ID="OptionSelected" 
    OnCheckedChanged="OptionSelected_CheckedChanged" 
    AutoPostBack="true" />&nbsp; 
<asp:Label runat="server" ID="OptionHeader"></asp:Label> 

protected void OptionSelected_CheckedChanged(object sender, EventArgs e) 
    { 
     //some code here 
    } 

PS:這是一個控制ascx對不起,我忘了提及。另一個症狀是該控件所在的頁面...意外刷新,清除一些數據(包括複選框,如果它被選中)並且無法弄清它是什麼造成的。

任何想法可能會發生這種情況的原因?我應該尋找的東西?

public PortalInfoPortal myPortal 
    { 
     get 
     { 
      return portal.GetPortalInfo(); 
     } 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     //added this an nothing 
     OptionSelected.CheckedChanged += new EventHandler(OptionSelected_CheckedChanged); 


      if (myPortal != null) 
     { 
      lblOptionMsg.Text = "(" + myPortal.MaxOptionSelectedCharacters.ToString() + " char max)"; 

      txtMessage.MaxLength = myPortal.MaxOptionSelectedCharacters; 
      var maxLength = myPortal.MaxOptionSelectedCharacters; 
      maxCheck.ValidationExpression = @"^[\s\S]{0," + maxLength.ToString() + "}$"; 

     } 
     //There is no binding of any type here 
    } 
+0

請注意在我的問題的請求下添加新的信息 – user710502

+0

如何加載usercontrol?你是否在頁面加載時綁定了任何數據?如果可以,請顯示此代碼,包括它所在的事件。 –

+0

在那裏添加了更多代碼 – user710502

回答

3

你需要有viewstate打開已改變事件的火災。 viewstate是服務器如何知道頁面最初服務時和返回之前控件的狀態。沒有這些信息,它不知道價值是否已經改變。檢查是否啓用了viewstate。

0

你也許在創建用戶控件(使用Page.LoadControl()),它動態地添加到控制樹,然後忘了,這些步驟需要在每個回發執行?否則,回發時usercontrol不再存在,它的任何事件都不會被觸發。

+0

使用該控件的頁面,在該頁面上有一個註冊標記...並根據我上面的註釋,當調試該頁面..它確實擊中控件,因爲它通過控件的Page_Load ..我不明白的是爲什麼事件不會觸發,而是始終加載整個控件並忽略事件? – user710502

相關問題