Principales respuestas
C# Web Session

Pregunta
-
Hola amigos
Estoy creando una aplicacion en capas con C# web, el cual tengo creadas la capa de presentacion, Negocio, Entidad, y DAL (Esta es la que hace la conexion a la BD), bueno mi consulta es que yo en la capa de Presentacion, tengo un formulario el cual al ingresar un nombre lo almacenado en la BD, y tambien tengo un un boton con un textbox el cual si coloco el nombre y busco me muestra la informacion de la BD en un Gridview que esta en la misma pagina, yo necesito que esta informacion me aparesca en otra pagina pero tambien en un gridview, lo cual eh estado buscando y encontre que se puede hacer con la variable Session, pero nose muy bien como funciona, les coloco un ejemplo de lo que estoy haciendo para que tengan mas claros y me puedan orientar por favor.
gvwListadoPersonas.DataSource = perBLL.BuscarPorLetrasInicialesNombre(txbNombreBuscado.Text); gvwListadoPersonas.DataBind();
con este codigo yo obtengo lo que se guarda en el textbox de Nombrebuscado y lo muestro en el gridview de la misma pagina en la que estoy, ahora segun yo para que se pueda mostrar en otra pagina lo mismo ocupo la variable Session de esta forma, pero no me resulta.
Session["MostrarBusquedaSegunCriterio.aspx"].ToString();
en donde MostrarBusquedaSegunCriterio.aspx es la pagina 2 en donde deberia arrastrar la informacion de la pagina 1
Gracias por su ayuda
Respuestas
-
hola
la Session con el Server.Trasnfer() no tienen ninguan relacion una conserva datos en memoria del server, el otro redirecciona a la otra pagina
es mas podrias hacer
TipoDato temp = perBLL.BuscarPorLetrasInicialesNombre(txbNombre.Text);
Session["lista"] = temp; Response.Redirect("MostrarBusquedasegunCriterio.aspx");
Nota: en TipoDato reemplza por lo que corresponde devuelve el servicio
en la pagina MostrarBusquedasegunCriterio.aspx
usarias
TipoDato temp = Session["lista"] as TipoDato;
if(temp != null){
GridView1.DataSource = temp;
}
como veras en la otra pagina recuperas el dato de la session y lo asignas al control
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Propuesto como respuesta Alberto PoblacionMVP, Moderator jueves, 10 de mayo de 2012 4:53
- Marcado como respuesta Eder CostaModerator miércoles, 16 de mayo de 2012 16:39
-
Hola que tal compañero!
Bueno las ideas que te han comentado me parecen buenas sin embargo te voy a dar una alternativa mas (claro yo digo alternativa porque alfinal eres tu quien elije la opción que mas se adapte a tu necesidad)
Puedes usar parametros en tu URL de redireccion... esto funcionaria así:
1. Formas tu URL con la pagina a la que deseas redirigirte junto con los parametros (o variables) que deseas pasarle, por ejemplo:
string URLredireccion = string.Concat("MostrarBusquedaSegunCriterio.aspx?NombreBuscado=", txbNombreBuscado.Text);
Response.Redirect(URLredireccion);
Si te fijas, viene el parámetro "NombreBuscado" al cual se le va a dar el valor que contenga tu txbNombreBuscado.Text
2. Despues en tu segunda pagina (MostrarBusquedaSegunCriterio.aspx) recuperas el valor del nombre buscado y llenas tu grid...
gvwListadoPersonas.DataSource = BuscarPorLetrasInicialesNombre(Request["NombreBuscado"].ToString());
gvwListadoPersonas.DataBind();
Lo recuperas con Request["NombreBuscado"], aplicas el mismo metodo "BuscarPorLetrasInicialesNombre" que supongo que es el que hace la consulta a la base de datos y listo ya esta;)
Bueno es una idea sencilla pero practica lo puedes ver que es super común y tan normal verlo en infinidad de sitios en internet, un ejemplo claro YouTube
www_youtube_com/watch?v=xxxxxxxxxxx
"watch" es la pagina, "v" es el parametro y "xxxxxxxxxxx" es el valor que se le da a ese parametro ;)
Saludos!
- Editado Daniel G I jueves, 10 de mayo de 2012 14:25
- Marcado como respuesta Eder CostaModerator miércoles, 16 de mayo de 2012 16:40
Todas las respuestas
-
Saludos.
Antes que nada dejame decirte que estas en un foro que no corresponde con la pregunta, deverias de haberlo puesto en Asp.Net.
Y bueno respondiendo a tu pregunta: Las variables de session las puedes ocupar en cualquier pagina por ejemplo:
yo tengo un int X que quiero mandar a otras paginas Session["Variable"] = X.tostring(); y para ocuparlo en otra pagina debes hacer Int r = Convert.toparse(Session["Variable"]);
Y en tu caso MostrarBusquedaSegunCriterio.aspx es la pagina y ahi debe de estar el nombre de la variable de la sesión.
Para ser mas especifico en la pagina donde copnsultas la DB y llenas el grid debes darle valor a la variable de sesión(paginas Session["Variable"] = X.tostring(); ) y en donde quieres llenar de nuevo otro grid en otra pagina haces:Int r = Convert.toparse(Session["Variable"]);
Espero te sirva. y si es la respuesta a tu pregunta colocala como respuesta porfavor.
Chargoy
-
Muchas Gracias Chargoy, mira siguiendo tu ejemplo realice algo parecido:
Session["lista"] = perBLL.BuscarPorLetrasInicialesNombre(txbNombre.Text); Server.Transfer("MostrarBusquedasegunCriterio.aspx");
Con esto se supone que arrastro la informacion de la pagina 1, pero en el gridview de la pagina 2 no se muestra nada, como debo hacer para que se muestre.
Gracias por tu repsuesta
-
hola
la Session con el Server.Trasnfer() no tienen ninguan relacion una conserva datos en memoria del server, el otro redirecciona a la otra pagina
es mas podrias hacer
TipoDato temp = perBLL.BuscarPorLetrasInicialesNombre(txbNombre.Text);
Session["lista"] = temp; Response.Redirect("MostrarBusquedasegunCriterio.aspx");
Nota: en TipoDato reemplza por lo que corresponde devuelve el servicio
en la pagina MostrarBusquedasegunCriterio.aspx
usarias
TipoDato temp = Session["lista"] as TipoDato;
if(temp != null){
GridView1.DataSource = temp;
}
como veras en la otra pagina recuperas el dato de la session y lo asignas al control
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Propuesto como respuesta Alberto PoblacionMVP, Moderator jueves, 10 de mayo de 2012 4:53
- Marcado como respuesta Eder CostaModerator miércoles, 16 de mayo de 2012 16:39
-
Hola que tal compañero!
Bueno las ideas que te han comentado me parecen buenas sin embargo te voy a dar una alternativa mas (claro yo digo alternativa porque alfinal eres tu quien elije la opción que mas se adapte a tu necesidad)
Puedes usar parametros en tu URL de redireccion... esto funcionaria así:
1. Formas tu URL con la pagina a la que deseas redirigirte junto con los parametros (o variables) que deseas pasarle, por ejemplo:
string URLredireccion = string.Concat("MostrarBusquedaSegunCriterio.aspx?NombreBuscado=", txbNombreBuscado.Text);
Response.Redirect(URLredireccion);
Si te fijas, viene el parámetro "NombreBuscado" al cual se le va a dar el valor que contenga tu txbNombreBuscado.Text
2. Despues en tu segunda pagina (MostrarBusquedaSegunCriterio.aspx) recuperas el valor del nombre buscado y llenas tu grid...
gvwListadoPersonas.DataSource = BuscarPorLetrasInicialesNombre(Request["NombreBuscado"].ToString());
gvwListadoPersonas.DataBind();
Lo recuperas con Request["NombreBuscado"], aplicas el mismo metodo "BuscarPorLetrasInicialesNombre" que supongo que es el que hace la consulta a la base de datos y listo ya esta;)
Bueno es una idea sencilla pero practica lo puedes ver que es super común y tan normal verlo en infinidad de sitios en internet, un ejemplo claro YouTube
www_youtube_com/watch?v=xxxxxxxxxxx
"watch" es la pagina, "v" es el parametro y "xxxxxxxxxxx" es el valor que se le da a ese parametro ;)
Saludos!
- Editado Daniel G I jueves, 10 de mayo de 2012 14:25
- Marcado como respuesta Eder CostaModerator miércoles, 16 de mayo de 2012 16:40
-
saludos....
Mira estas bien cuando guardas los datos en la variabel de session: Session["lista"] = perBLL.BuscarPorLetrasInicialesNombre(txbNombre.Text);
Pero al recuperarla no. Sinceramente no se para que sirva Server.transfer, pero para recuperarla, en la(s) pagina(s) que necesites usarla haces: Tipo nombreVariable = (tipo)Session["lista"]; y de esta manera la transfieres a una variable en la página que lo requieras.
Espero que te sirva.
Chargoy