2009-04-25 3 views
2

У меня довольно раздражающий вопрос здесьUpdatePanel с ASP.NET Repeater и Checkbox Aync Postback вопрос

я не могу получить мое событие CheckBox CheckedChange стрелять, или поймать или что-то, что не удается:

ASPX код не

<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> 

кодекс позади функции "chk_handle_Changed" не достигается. The Linkbutten отлично работает.

ответ

6

Я взглянул на вашу проблему. Я использовал следующий код:

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) 
{ } 

Приведенный выше код работает. Я думаю, что вы, вероятно, повторно привязываете свой ретранслятор к каждому обратному сообщению - я протестировал это, удалив инструкцию if if! (! IsPostBack) в Page_Load(), и я смог воспроизвести описанное вами проблемное поведение.

Следует по возможности избегать переустановки управления при каждой обратной передаче. Когда элемент управления заполнен, данные обрабатываются ViewState, поэтому, если данные не изменяются, вы, вероятно, не должны постоянно переписывать его.

+0

Да, вы должны только databind в page_load, когда! IsPostback – edosoft

+0

Решила проблему, спасибо за то, что выбрала лишнюю милю, чтобы решить эту проблему. –

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