2009-10-06 64 views
6

Parece que no tengo un final de problemas con ellos.¿Cómo se usa un UpdatePanel correctamente? (asp.net)

Tengo un panel de actualización con algunas casillas de verificación. Los controlo y presiono mi botón Guardar, pero hace que el panel de actualización se devuelva (actualización) y los pone a todos en blanco. El método de volver a dibujar se ejecuta antes del código del botón.

¿Cuál es la forma correcta de tener un panel de actualización con casillas de verificación en las que pueda manipular?

Editar: Creo que el problema podría ser uno de diseño fundamental. Realmente necesito un tutorial completo sobre cómo usar los paneles de actualización correctamente.

+0

pienso El panel de actualización se usa para actualizar el contenido de ese panel en lugar de volver a cargar todo el contenido. e ... –

Respuesta

10

Ejemplo de código:

<asp:UpdatePanel runat="server" UpdateMode="Conditional" ID="updatePanel1"> 
    <ContentTemplate> 
     <asp:CheckBox runat="server" ID="myCheckBox" Caption="CheckBox"/> 
     <asp:Button runat="server" ID="saveButton" 
        Caption="Save" OnClick="SaveButtonClick"/> 
    </ContentTemplate>  
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="saveButton" EventName="Click" />   
    </Triggers> 
</asp:UpdatePanel> 

Asegúrese de que:

  1. UpdateMode de UpdatePanel es condicional
  2. SaveButton contenida en disparadores sección como ControlID de AsyncPostBackTrigger
+0

Creo que lo condicional puede estar causando. Creo que puedo resolverlo ahora, gracias. – NibblyPig

+0

Error de tiempo de ejecución de Microsoft JScript: Sys.WebForms.PageRequestManagerServerErrorException: devolución de datos no válida o argumento de devolución de llamada. La validación de eventos se habilita usando en la configuración o <% @ Page EnableEventValidation = "true"%> en una página.Por motivos de seguridad, esta función verifica que los argumentos para la devolución de datos o los eventos de devolución de llamada se originan en el control del servidor que los generó originalmente. Si los datos son válidos y esperados, utilice el método ClientScriptManager.RegisterForEventValidation para registrar la devolución de datos o los datos de devolución de llamada para la validación. – NibblyPig

+0

Hmm ... Esto es muy extraño. ¿Puedes escribir una descripción de tu ScriptManager? – AndreyAkinshin

2

Asegúrese de que el botón Guardar está dentro del Panel de Actualización, para empezar, y si no, que está designado como un Disparador para el Panel de Actualización, en la sección <Triggers> del Panel de Actualización.

<asp:UpdatePanel ID="MyControlPanel" runat="server" UpdateMode="Conditional"> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="SaveButton" /> 
    </Triggers> 
    <ContentTemplate> ... 

¿Puede mostrar el código de su UpdatePanel?

3

su código debe ver como

if(!page.ispostback) 
{ 
    re-drawing(); 
} 

Como cuando se pulse el botón Guardar su método de re-dibujo() llama y de nuevo actualizar sus casillas de verificación. Asíncrono se comporte devolución de datos y se golpeó con el método de la página misma como la plena devolución de datos, pero refresca valor en UpdatePanels

También marque esta URL http://ajax.net-tutorials.com/controls/updatepanel-control/

+0

Eso tiene sentido, pero parece borrar el panel automáticamente. Si pongo "if (condition) return;" como la primera línea de mi método de carga de paneles de actualización, termina borrándolo. – NibblyPig

+0

muestra tu código ..... –

0

Si utiliza el servidor controla para hacer casillas de verificación se debe añadir EnableViewState="true" atributo a estos controles y panel de actualización .

Si tiene casillas de verificación que no son controles del servidor, elimínelas del panel de actualización, incluya solo los controles del servidor adentro. Esto lleva a mantener varios paneles de actualizaciones en una página que normalmente no es un gran problema.

0

Agregue un objeto ScriptManager a su página si no tiene uno. Establezca EnablePartialRendering = "true". Coloque su UpdatePanel en otro lugar de la página y coloque el contenido que desea ajaxified dentro de una etiqueta dentro de su UpdatePanel.

Cuestiones relacionadas