2009-01-29 14 views
6

Estoy teniendo un problema cuando mi asp.net AJAX panel de actualización actualiza el contenido que hace que en la parte superior de mi mesa en vez de en el lugar que pertenece a continuación es mi código:actualización Panel fila equivocada

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

En mi evento secundario del servidor estoy simplemente habilitando/deshabilitando el cuadro de texto.

Respuesta

0

¿Ha hecho una fuente fin de confirmar que en realidad es que lo hacen en ese lugar dentro del propio HTML? Los navegadores a veces renderizarán etiquetas fuera de la tabla si la tabla está mal formada. Puede parecer que está definido correctamente en el HTML mismo, pero una etiqueta de cierre faltante, etc. puede hacer que se muestre de esa manera.

0

Cuando los mensajes de actualización del panel de vuelta al servidor, Contabiliza todo de nuevo (incluyendo estado de vista). ¿Por qué no simplemente hacer un simple javascript? Sería mucho más eficiente.

4

creo que es debido a la forma en que están anidando el panel de actualización. Si cambia el panel de actualización a ser un hijo de la td, más que de la mesa:

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

debería estar todo arreglado.

+0

- O tal vez un hijo directo de la TR. –

8

1) crear un control UpdatePanel personalizado (copiar/pegar desde SingingEels)

2) utilizar este control UpdatePanel a medida con un atributo RenderedElement="TBODY"

3) nido de su mesa de la siguiente manera:

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