2015-06-30 2 views
1

Я создаю несколько элементов управления CheckboxList в моем коде (в Page_Load), которые помещаются в UpdatePanel. UpdatePanel настроен для UpdateMode = "always", поэтому, если я правильно понял, каждый Postback из этой UpdatePanel должен запускать Postback для всей Updatepanel (это то, что я хочу).Созданный код-код checkboxlist wont fire OnSelectedIndexChanged в UpdatePanel

Упрощенная 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. Я попробовал установить ChildrenAsTriggers = "true" в UpdatePanel, а также изменить UpdateMode и определить триггеры, без везения.

Что мне не хватает? Заранее благодарим за все намеки или предложения ...!

+0

пост, как вы назвали эту функцию в Page_Load –

+0

попытаться вызвать эту функцию при условии! IsPostBack –

+0

Да, я звоню эту функцию в первый раз в! Page.IsPostBack, кроме некоторых других элементов управления, которые там создаются. –

ответ

-1

Вы пытались сделать из CheckBoxList?

+0

Да, как видно из кода-сзади .. mycbl.AutoPostBack = true; он выполняет некоторую обратную передачу, но не вызывает событие, которое ДОЛЖНО запускаться. –

+0

Четко определен AutoPostBack = true, это не ответ, который вы должны считать его комментарием –

+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, а затем подключая их к своим событиям, это catch. –

+0

@konrad_pe видеть обновления –

+0

Это на самом деле не помогает мне. Сделал обходной путь, но спасибо за ваши усилия @Feras. –

Смежные вопросы