por ejemplo, tengo un formulario con un ListView que está en modo de edición.

Algo pasa para que la mesa de la Listview está utilizando no está disponible.

Sólo quiero ser capaz de cerrar la ventana si el usuario pulsa ‘guardar’.

In Page_Load, Puedo comprobar si la tabla está disponible, si no, llamo a RegisterClientScriptBlock(type,name,"window.close()"). sin Embargo, el procesamiento persiste, y se va a ListView1_ItemUpdating event.

En Page_Load, si la tabla no existe, puedo llamar a la Respuesta.Final para detener el procesamiento, sin embargo, la ventana aún se mantiene desde el script nunca registrado.

Alguna manera para dejar de procesar y cerrar la ventana sin tener que poner un custom IsTableValid() de verificación en todos mis métodos?

  • Has probado a utilizar la Respuesta.Flush?
  • sí, ver a continuación…
InformationsquelleAutor eych | 2010-11-16

4 Comentarios

  1. 3

    La respuesta proporcionada por Oded no funciona desde Page_Load, no sé por qué. La respuesta proporcionada por eych obras. Sin embargo, si usted no desea mantener un extra archivo html y hacer una redirección, puede usar algo como:

    Response.Clear();
    Response.Write("<script>window.close();</script>");
    Response.Flush();
    Response.End();
  2. 2

    Ras la respuesta a enviar todos los datos al navegador antes de acabar con ella:

    RegisterClientScriptBlock(type,name,"window.close()")
    Response.Flush()
    Response.End()

    Puede que desee Borrar la respuesta antes de registrar la secuencia de comandos, con el fin de asegurarse de que no hay nada más en el búfer de respuesta.

    También hay ClearHeaders y ClearContent métodos, si usted sólo desea borrar uno y no el otro.

    • probado esto, pero todavía queda un vacío de la ventana de arriba. (también trató de Borrar)
    • Lo que hace el código fuente HTML parece? Está usted recibiendo cualquiera de los errores de javascript? Algunas ventanas no se puede cerrar desde la secuencia de comandos (por ejemplo, normalmente, sólo si se abre la ventana con una secuencia de comandos, puede que la cierra por el guión).
    • la ventana se abrió originalmente con el guión, y no hay errores de javascript. He separado un botón «Cerrar» que cuando se hace clic, también llamadas de la misma RegisterClientScript(…) el método, y que funciona, cierre el formulario [supongo que ya no hay más, el procesamiento después de la Button_Click].
    • Y el código fuente HTML?
    • Que fuente? Fuente de la ventana en blanco? Si usted necesita la fuente de la original, que es en otra máquina. Algo en particular que usted está buscando?
    • Si usted está recibiendo un vacío de la página HTML, nada en ella, entonces la secuencia de comandos no era la salida a la página. Quiero confirmar que, eso es todo.
    • sí, es empty…<!DOCTYPE…><HTML><HEAD></HEAD><BODY></BODY></HTML>
    • trate de tener Respuesta.Escribir(«<script type=\»text/javascript\»>ventana.close();</script>»); tal vez RegisterClientScriptBlock está siendo ignorada debido a la Finalización de la respuesta.

  3. 1

    una solución, kludgey, pero puede ser utilizado en otro lugar:

    Response.Redirect("close.html")

    donde close.html sólo ha

      <script>
      window.close();
      </script>
  4. 0

    Intente esto en su lugar:

    HttpContext.Current.ApplicationInstance.CompleteRequest();

    Microsoft ellos dicen esa Respuesta.Final es no sólo por compatibilidad con versiones anteriores:

    Este método se proporciona sólo para
    compatibilidad con ASP, es decir, para
    compatibilidad con COM-basado
    Programación Web la tecnología que
    precedido ASP.NET

    Seguro que no se va a resolver su problema, pero al menos Microsoft no tengo excusa.. 🙂

    • gracias, pero no funciona

Dejar respuesta

Please enter your comment!
Please enter your name here