2013-07-09 4 views
0

Простая программа Ajax нуждается в обновлении отдельной панели обновления при нажатии кнопки. Вот обновленный код,Оба обновления Updatepanel, в то время как только 1 должны работать

<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" ChildrenAsTriggers="false" 
      runat="server"> 
      <ContentTemplate> 
       <fieldset style="width: 30%"> 
        <legend>Panel - 1 </legend> 
        <asp:Label ID="label1" runat="server"></asp:Label> 
        <asp:Button ID="b1" runat="server" OnClick="both" Text="Update Both Pannels" /> 
        <asp:Button ID="b2" runat="server" OnClick="one" Text="Update Single Pannel" /> 
       </fieldset> 
      </ContentTemplate> 
      <Triggers> 
       <asp:AsyncPostBackTrigger ControlID="b1" EventName="Click" /> 
      </Triggers> 
     </asp:UpdatePanel> 
     <asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional"> 
      <ContentTemplate> 
       <fieldset style="width: 30%"> 
        <legend>Panel - 2 </legend> 
        <asp:Label ID="label2" runat="server"></asp:Label> 
       </fieldset> 
      </ContentTemplate> 
      <Triggers> 
       <asp:AsyncPostBackTrigger ControlID="b2" EventName="Click" /> 
      </Triggers> 
     </asp:UpdatePanel> 

Кнопка Нажмите события следующим образом,

protected void both(object sender, EventArgs e) 
{ 
    label1.Text = DateTime.Now.ToLongTimeString(); 
    label2.Text = DateTime.Now.ToLongTimeString(); 
    UpdatePanel2.Update(); 

} 
protected void one(object sender, EventArgs e) 
{ 
    label1.Text = DateTime.Now.ToLongTimeString(); 
    label2.Text = DateTime.Now.ToLongTimeString(); 
    UpdatePanel2.Update(); 
} 

Выход остается same..Thanks заранее ...

+0

Вашего описания не ясно. Пожалуйста, объясните свое объяснение. – kst

+0

без ошибок. Нажатие обеих кнопок отображает время в обеих метках. Но, как ожидается, ожидаемый результат, только 1-я метка хочет обновить текущее время, если я нажму на вторую кнопку. Спасибо за ответ. – Developer

ответ

2

От Ссылка на MSDN Если для свойства UpdateMode установлено значение «Условное», содержимое элемента управления UpdatePanel обновляется, если выполняется одно из следующего:

  1. Когда обратная передача вызвана триггером для этой UpdatePanel
    .
  2. Когда вы явно вызываете метод Update элемента управления UpdatePanel.
  3. Когда элемент управления UpdatePanel находится внутри другого элемента управления UpdatePanel , а родительская панель обновляется.
  4. Когда для свойства ChildrenAsTriggers установлено значение true, и любой дочерний элемент управления элементом управления UpdatePanel вызывает обратную передачу. Элементы управления дочерними элементами элементов управления UpdatePanel не вызывают обновление внешнего элемента управления UpdatePanel , если они явно не определены как триггеры для родительской панели.

Итак, установите KidsAsTigger на ложный установленный асинхронный триггер для вашей первой панели обновления, как показано ниже.

<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" ChildrenAsTriggers="false" runat="server"> 
     <ContentTemplate> 
     <fieldset style="width:30%"> 
     <legend>Panel - 1 
     </legend> 
     <asp:Label ID="label1" runat="server"></asp:Label> 
     <asp:Button ID="b1" runat="server" OnClick="both" Text="Update Both Pannels" /> 
     <asp:Button ID="b2" runat="server" OnClick="one" Text="Update Single Pannel" /> 
     </fieldset> 
     </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="b1" EventName="Click" /> 
     </Triggers> 
     </asp:UpdatePanel> 
<asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional"> 
    <ContentTemplate> 
    <fieldset style="width:30%"> 
    <legend>Panel - 2 
    </legend> 
    <asp:Label ID="label2" runat="server"></asp:Label> 
    </fieldset> 
    </ContentTemplate> 
    <Triggers> 
    <asp:AsyncPostBackTrigger ControlID="b2" EventName="Click" /> 
    </Triggers> 
    </asp:UpdatePanel> 

После этого по нажатию кнопки B1 обновить sceond панель обновления явно ... как ниже

protected void both(object sender, EventArgs e) 
{ 
    label1.Text = DateTime.Now.ToLongTimeString(); 
    label2.Text = DateTime.Now.ToLongTimeString(); 
    UpdatePanel2.Update(); 
} 



    protected void one(object sender, EventArgs e) 
    { 
        label1.Text = DateTime.Now.ToLongTimeString(); 
        label2.Text = DateTime.Now.ToLongTimeString(); 
     UpdatePanel2.Update(); 
    } 
+0

Еще раз спасибо :) Это не загружает 'Label1'. 'Label2' работает корректно, если вызвана кнопка' both'. Что делать? – Developer

+0

@ Разработчик не мог получить u? –

+0

Если я изменю 'ChildrenAsTriggers =" false ", Label1' не будет затронут в любом случае. Он просто остается пустым.? – Developer

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

  • Нет связанных вопросов^_^