2009-04-25 7 views
2

J'ai un problème assez ennuyeux iciUpdatePanel avec ASP.NET répéteur et numéro Checkbox Aync Postback

Je ne peux pas mon événement CheckBox CheckedChange au feu, ou attraper ou quoi que ce soit qui ne:

ASPX code

<asp:UpdatePanel runat="server" ID="udp_Lists" UpdateMode="Always"> 
<ContentTemplate> 
    <asp:Repeater ID="rep_showings" runat="server"> 
     <HeaderTemplate> 
     </HeaderTemplate> 
     <ItemTemplate> 
      <div class="div_assignment"> 
       <div class="div_assignment_text"> 
        <asp:LinkButton runat="server" ID="lnk_show_task" OnClick="lnk_show_task_Click" CommandArgument='<%# Eval("Id") %>' Text='<%# Eval("TaskTitle") %>'></asp:LinkButton> 
       </div> 
       <div class="div_assignment_checkbox"> 
        <asp:CheckBox runat="server" ID="chk_handle" AutoPostBack="true" OnCheckedChanged="chk_handle_Changed" ToolTip='<%# Eval("Id") %>' /> 
       </div> 
      </div> 
     </ItemTemplate> 
     <FooterTemplate> 
     </FooterTemplate> 
    </asp:Repeater> 
</ContentTemplate> 
<Triggers> 
</Triggers> 

Le code derrière la fonction "chk_handle_Changed" est jamais atteint. Le Linkbutten fonctionne parfaitement.

Répondre

6

J'ai jeté un coup d'oeil à votre problème. J'ai utilisé le code suivant:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     this.rep_showings.DataSource = new object[] { new { Title = "title", ID = "id" } }; 
     this.rep_showings.DataBind(); 
    } 
} 

protected void chk_handle_Changed(object source, EventArgs e) 
{ 
    Trace.Write("here"); 
} 

protected void lnk_show_task_Click(object source, EventArgs e) 
{ 
    Trace.Write("here 2"); 
} 

protected void rep_showings_ItemCommand(object source, RepeaterCommandEventArgs e) 
{ } 

Le code ci-dessus fonctionne. Je pense que vous reliez probablement votre répéteur à chaque publication - j'ai testé cela en supprimant l'instruction "if (! IsPostBack)" dans Page_Load(), et j'ai été capable de reproduire le comportement problématique que vous décrivez.

La reliaison d'un contrôle sur chaque publication doit être évitée si possible. Une fois qu'un contrôle est rempli, ses données sont prises en charge par ViewState, donc à moins que les données ne changent, vous ne devriez probablement pas le relier tout le temps.

+0

Oui, vous ne devriez avoir accès à la page de chargement de page quand! IsPostback – edosoft

+0

Résolu le problème, merci de faire un effort supplémentaire pour résoudre ce problème. –

Questions connexes