Iframe ModalPopup con resultado loading... En muchisimas ocaciones nesecitamos una ventana modal en el cual podamos hacer
acciones como: subir documentos, enviar un formulario con un nuevo registro, actualización de registro, descartar registro. Creo que usando JQuery UI conjuntamente con JQuery podremos dar solución algo descente. La idea es presentar una ventana modal en el cual cargamos un iframe donde realizaremos cierta operación (inserción, actualización,etc). Este iframe presentará un resultado (loading..) entretanto carga la página que presentará el iframe En esta demostración tendremos 2 páginas. Uno será la página principal (WebForm1.aspx), y el otro será el iframe el cual mostraremos en el iframe(WebForm2.aspx). --Creamos una fundamento de datos CREATE DATABASE dbtest; GO USE [dbtest] GO --creamos una tabla CREATE TABLE [dbo].[UsuarioWeb]( [IdUsuarioWeb] [int] IDENTITY(1,1) NOT NULL, [Nombre] [varchar](20) NOT NULL, [ApellidoPaterno] [varchar](20) NOT NULL, [ApellidoMaterno] [varchar](20) NOT NULL, [Usuario] [char](20) NOT NULL, [Contrasena] [char](20) NOT NULL, [IdPerfil] [int] NULL, [FlagActivo] [bit] NULL, [FechaModificacion] [datetime] NULL, [FlagCambioClave] [int] NULL, PRIMARY KEY CLUSTERED ( [IdUsuarioWeb] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO --Insertamos algunos datos SET IDENTITY_INSERT [dbo].[UsuarioWeb] ON INSERT [dbo].[UsuarioWeb] ([IdUsuarioWeb], [Nombre], [ApellidoPaterno], [ApellidoMaterno], [Usuario], [Contrasena], [IdPerfil], [FlagActivo], [FechaModificacion], [FlagCambioClave]) VALUES (1, N'Tania', N'Anny', N'Carrillo', N'tloza ', N'***** ', 3, 0, NULL, NULL) INSERT [dbo].[UsuarioWeb] ([IdUsuarioWeb], [Nombre], [ApellidoPaterno], [ApellidoMaterno], [Usuario], [Contrasena], [IdPerfil], [FlagActivo], [FechaModificacion], [FlagCambioClave]) VALUES (2, N'Enrique', N'Ramos', N'Barrera', N'eramirez ', N'***** ', 10, 1, CAST(0x00009BC100979FAE AS DateTime), 1) INSERT [dbo].[UsuarioWeb] ([IdUsuarioWeb], [Nombre], [ApellidoPaterno], [ApellidoMaterno], [Usuario], [Contrasena], [IdPerfil], [FlagActivo], [FechaModificacion], [FlagCambioClave]) VALUES (3, N'Wilfredo', N'De Souza', N'Ugar', N'wdsfu ', N'***** ', 6, 0, NULL, NULL) INSERT [dbo].[UsuarioWeb] ([IdUsuarioWeb], [Nombre], [ApellidoPaterno], [ApellidoMaterno], [Usuario], [Contrasena], [IdPerfil], [FlagActivo], [FechaModificacion], [FlagCambioClave]) VALUES (4, N'Ven', N'Rapida', N'Mi apellido', N'VentaR ', N'***** ', 3, 0, NULL, NULL) INSERT [dbo].[UsuarioWeb] ([IdUsuarioWeb], [Nombre], [ApellidoPaterno], [ApellidoMaterno], [Usuario], [Contrasena], [IdPerfil], [FlagActivo], [FechaModificacion], [FlagCambioClave]) VALUES (5, N'Jelina', N'Ramos', N'', N'mramos ', N'***** ', 3, 1, CAST(0x00009C4900B7193C AS DateTime), 1) INSERT [dbo].[UsuarioWeb] ([IdUsuarioWeb], [Nombre], [ApellidoPaterno], [ApellidoMaterno], [Usuario], [Contrasena], [IdPerfil], [FlagActivo], [FechaModificacion], [FlagCambioClave]) VALUES (6, N'Gel', N'Rueda', N'Carrasco', N'sis
temas ', N'***** ', 7, 1, CAST(0x00009C3100AB89ED AS DateTime), 1) INSERT [dbo].[UsuarioWeb] ([IdUsuarioWeb], [Nombre], [ApellidoPaterno], [ApellidoMaterno], [Usuario], [Contrasena], [IdPerfil], [FlagActivo], [FechaModificacion], [FlagCambioClave]) VALUES (7, N'Daniela', N'Esc', N'Achala', N'descobar ', N'***** ', 1, 0, NULL, NULL) INSERT [dbo].[UsuarioWeb] ([IdUsuarioWeb], [Nombre], [ApellidoPaterno], [ApellidoMaterno], [Usuario], [Contrasena], [IdPerfil], [FlagActivo], [FechaModificacion], [FlagCambioClave]) VALUES (8, N'Daniel', N'Rey', N'Lopeza', N'dreyes ', N'***** ', 1, 0, NULL, NULL) SET IDENTITY_INSERT [dbo].[UsuarioWeb] OFF --Procedimiento Almacenado del ejemplo create proc [dbo].[sp_usuarioWeb] AS BEGIN select IdUsuarioWeb,Nombre,ApellidoPaterno,ApellidoMaterno from UsuarioWeb END GO Pasaremos una variable con su valor al iframe. Declaramos una variable en la página WebForm1.aspx var variablePadre = 'un valor inicial'; En el cual recuperaremos determinado valor desde el iframe Aquí poseemos el código completo del modo Html de la página WebForm1.aspx CodeBehind de WebForm1.aspx. Cargamos
datos de SQL Server al
control ListView using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; using System.Data; namespace WebApplicationTestEL { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(
object sender, EventArgs e) { if (!Page.IsPostBack) { using (SqlConnection cn = new SqlConnection("Server=localhost;Database=dbtest;Integrated Security=true;")) { using (SqlDataAdapter da = new SqlDataAdapter("sp_usuarioWeb", cn)) { da.SelectCommand.CommandType = CommandType.StoredProcedure; DataTable tabla = new DataTable(); da.Fill(tabla); //Llenamos el Listview ListView1.DataSource = tabla; ListView1.DataBind(); Debajo mostramos el modo html de la página WebForm2.aspx. Solo poseemos un
control tipo Boton el cual realizará una operación Luego que realizamos una operación, cerramos la ventana modal, asignandole determinado valor desde el iframe a la variable que declaramos en la página principal. Mostramos el CodeBehind using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplicationTestEL { public partial class WebForm2 : System.Web.UI.Page { int parametro = 0; protected void Page_Load(
object sender, EventArgs e) { //Recuperamos la variable que pasamos por la url desde la página principal parametro = Convert.ToInt32(Page.Request.Params["id"].ToString()); protected void Button1_Click(object sender, EventArgs e) { //Hacemos cierta operación try {
string idLetra = string.Empty;
switch (parametro) {
case 1: idLetra = "uno"; break;
case 2: idLetra = "dos"; break;
case 3: idLetra = "tres"; break; default: idLetra = "otro"; break; //cerramos la ventana Modal asigandole un valor a la variable de la página principal Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "mykey" , "window.parent.$('#dialog-form').dialog('close');\n" + "window.onload=function(){\n" + "window.parent.variablePadre='" + idLetra + "';\n" + "window.parent.$('#dialog-form #dviframe').children().remove();\n" + ";" , true); catch (Exception) { throw; Es la solución más decente que pude
realizar para el gran tipo de necesidades comunes, espero que les pueda ser útil.