2009-01-29 6 views
6

ich ein Problem habe, wenn mein asp.net AJAX-Update-Panel aktualisiert er den Inhalt an der Spitze meines Tisches anstatt an der Stelle macht es unten gehört, ist mein Code:Update-Panel-Rendering-Tabellenzeile falsch

<tr> 
    <td> 
    </td> 
    <td> 
     <asp:CheckBox ID="ddCheckbox" runat="server" Text="Checkbox" 
      AutoPostBack="true" OnCheckedChanged="ddCheckboxChanged" /> 
    </td> 
</tr> 

    <asp:UpdatePanel ID="uxUpdatePanel" runat="server" RenderMode="Inline" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <tr> 
      <td> 
       Some Field: 
      </td> 
       <td> 
       <asp:TextBox ID="ddSomeField" runat="server" /> 
       </td> 
      </tr> 
      </ContentTemplate> 
      <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="ddCheckbox" EventName="CheckedChanged" /> 
      </Triggers> 
    </asp:UpdatePanel> 

In meinem serverseitigen Ereignis, ich bin nur das Aktivieren/Deaktivieren der Textbox.

Antwort

0

Haben Sie eine Ansichtsquelle erstellt, um zu bestätigen, dass sie tatsächlich an diesem Speicherort im HTML-Code gerendert wird? Browser werden Tags manchmal außerhalb der Tabelle rendern, wenn die Tabelle falsch formatiert ist. Es scheint so, als ob es im HTML selbst korrekt definiert ist, aber ein fehlendes schließendes Tag usw. kann dazu führen, dass es so dargestellt wird.

0

Wenn das Update-Panel zum Server zurückmeldet, wird alles zurückgeliefert (einschließlich Viewstatus). Warum nicht einfach ein einfaches Javascript? Es wäre viel effizienter.

4

Ich glaube, es liegt daran, wie Sie das Update-Panel verschachteln. Wenn Sie das Update-Panel ändern ein Kind der td zu sein, anstatt der Tabelle:

<tr> 
    <td> 
    Some Field: 
    </td> 
    <td> 
    <asp:UpdatePanel ID="uxUpdatePanel" runat="server" RenderMode="Inline" UpdateMode="Conditional"> 
     <ContentTemplate> 
     <asp:TextBox ID="ddSomeField" runat="server" /> 
     </ContentTemplate> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="ddCheckbox" EventName="CheckedChanged" /> 
     </Triggers> 
    </asp:UpdatePanel> 
    </td> 
</tr> 

sollten Sie alle oben fixiert sein.

+0

- Oder vielleicht ein direktes Kind der TR. –

8

1) Erstellen Sie eine benutzerdefinierte Updatesteuerung (Kopieren/Einfügen von SingingEels)

2) verwenden diese benutzerdefinierte Update Steuerung mit einem Attribut RenderedElement="TBODY"

3) verschachtelt die Tabelle wie folgt:

<TABLE> 
    <TR> 
    <TD>outside updatepanel</TD> 
    </TR> 
    <SingingEels:SemanticUpdatePanel ID="myUpdatePanel" runat="server" RenderedElement="TBODY"> 
    <ContentTemplate> 
     <TR> 
     <TD>inside updatepanel - 1th row</TD> 
     </TR> 
     <TR> 
     <TD>inside updatepanel - 2nd row</TD> 
     </TR> 
     <TR> 
     <TD>inside updatepanel - last row</TD> 
     </TR> 
    </ContentTemplate> 
    </SingingEels:SemanticUpdatePanel> 
    <TR> 
    <TD>outside updatepanel</TD> 
    </TR> 
</TABLE>