2015-06-30 81 views
1

我在代碼隱藏(在Page_Load中)中創建了一些CheckboxList控件,它們被放入UpdatePanel中。 UpdatePanel設置爲UpdateMode =「always」,所以如果我理解正確的話,每個UpdatePanel內的Postback應該在整個UpdatePanel(這是我想要的)上觸發一個Postback。代碼隱藏創建的Checkboxlist不會在UpdatePanel中觸發OnSelectedIndexChanged

簡體ASPX的標記:

<asp:UpdatePanel ID="updatepanel_profiles_manualdata" runat="server"> 
<ContentTemplate> 
<div id="cbl_container" runat="server"> 
</div> 
</ContentTemplate> 
</asp:UpdatePanel>  

簡化後臺代碼:

protected void create_cbl(){ 
// this is called in Page_Load 
CheckBoxList mycbl = new CheckBoxList(); 
mycbl.SelectedIndexChanged += new EventHandler(cbl_manual_clickEvent); 

DataTable dt3 = get_cbl_data(someparameter); 
mycbl.DataSource = dt3; 
mycbl.DataTextField = "Title"; 
mycbl.DataValueField = "ID"; 
mycbl.AutoPostBack = true; 
mycbl.DataBind(); 

//add the checkboxlist to the container-div in the aspx-markup 
cbl_container.Controls.Add(mycbl); 
} 

protected void cbl_manual_clickEvent(object sender, EventArgs e){ 
// do something with this click... 
} 

鬥爭

  1. 我試着設置一個斷點到我cbl_manual_clickEvent - 這是從來沒有到達,但頁面編譯沒有錯誤。
  2. 我有另一個CheckBoxList在同一個UpdatePanel中,在標記中初始化,因此OnSelectedIndex事件綁定在標記中。回傳在這裏工作得很好。不過,我需要從代碼隱藏創建第二個CheckBoxList,因爲數量取決於數據庫中的一些數據。
  3. 我嘗試在UpdatePanel中設置ChildrenAsTriggers =「true」,以及更改UpdateMode並定義觸發器,但沒有任何運氣。

我錯過了什麼?預先感謝所有提示或建議......!

+0

後你是如何調用該函數在Page_Load中 –

+0

嘗試調用這個函數根據條件!IsPostBack –

+0

是的,我打電話這個函數第一次在!Page.IsPostBack中除了一些在那裏創建的其他控件。 –

回答

-1

您是否嘗試過使用CheckBoxList的AutoPostBack=true

+0

是的,正如在code-behind中看到的那樣.. mycbl.AutoPostBack = true;它確實有點像Postback,但它不會觸發它應該觸發的事件。 –

+0

這是明確定義AutoPostBack =真多數民衆贊成不是一個答案,你應該把它作爲一個評論 –

+0

Stackoverflow不允許我評論 – Jamil

1

試試這個 aspx文件:

<asp:UpdatePanel ID="updatepanel_profiles_manualdata" runat="server"> 
<ContentTemplate> 
<div id="cbl_container" runat="server"> 
<asp:CheckBoxList ID="CheckBoxList1" AutoPostBack="true" runat="server"></asp:CheckBoxList> 
</div> 
</ContentTemplate> 
</asp:UpdatePanel> 

代碼背後

protected void Page_Load(object sender, EventArgs e) 
{ 
CheckBoxList1.SelectedIndexChanged += new EventHandler(cbl_manual_clickEvent); 
DataTable dt3 = get_cbl_data(someparameter); 
CheckBoxList1.DataSource = dt3; 
CheckBoxList1.DataTextField = "Title"; 
CheckBoxList1.DataValueField = "ID"; 
CheckBoxList1.AutoPostBack = true; 
CheckBoxList1.DataBind(); 

} 

#UPDATE1 see this answer

+0

(我已經評論過這個,這是刪除?然而..)這將無法正常工作我。我沒有辦法在代碼隱藏中創建CheckBoxList控件。在標記中構建一個CheckBoxList並掛鉤並不是問題。爲UpdatePanel動態創建它們,然後將它們與它們的事件掛接在一起就是一個訣竅。 –

+0

@konrad_pe查看更新 –

+0

這並不能幫助我。做了一個解決方法,但感謝您的努力@Feras。 –

相關問題