Hola, bueno solo quiero recomendarles esta buena página en donde podemos crear un gif de cargando con los colores que nos gusten, asi como podemos elegir si será con fondo transparente o no...
http://ajaxload.info/
Alli lo unico q hacemso el tipo de gif, luego si deseamos que tenga fondo transparente y por ultimo el color que deseamos tenga el gif...luego le damos generar y podemos ver el gif.. por último damos clic en download y listo.. tenemos nuestro gif !!
sábado, 31 de julio de 2010
miércoles, 28 de julio de 2010
GridView, JQuery y un menú contextual
Hola a todos, bueno luego de algún tiempo sin subir nada, y se que entienden cuando se esta termiando un proyecto, hoy quiero mostrarles como podemos hacer un menú contextual con jquery y un gridview.
Pero por que hacer un menú contextual?... muchas veces nos cansamos de tener 2,3 o mas botones en cada fila del grid.. y que mejor q un menú contextual apra tener todas las opciones en el mismo sitio..!!
Como primero quiero mostrarles como va a quedar nuestro menú.

Bueno ya sabemos como debe quedar, ahora manos a la obra.
Lo primero que necesitamos son dos librerias de jquery (en el ejemplo adjunto las encuentran), las agregamos a nuestro proyecto y posteriormente las referenciamos en nuestra página... es decir, no debe quedar algo asi:
y alli lo q estamos haciendo es referenciando los archivos de script a la página.
Ahora, el menú contextual no es nada más que una simple lista, la cual definimos de la siguiente manera:
en donde definimos tantos items de lista como opciones de menú necesitemos.
Luego de tener creado el "menú", en la definición de las columnas del gridview, se debe definir una columna la cual tendrña una imagen o link o boton (lo que deseen) para que ar dar clic derecho podamos visualizar el menú), en resumen la columna quedaria:
Lo importante aqui es q el div que se define será el encargado de mostrar el menú contextual, por eso antes decia que se puede usar una imagen, un boton, etc, y dentro del div definimos el control, en mi caso usé una imagen de html.
Y en este punto ya hemos terminado con el diseño del gridview y del menú contextual, ahora lo que debemos hacer es con jquery crear de verdad el menú...nuestro código jquery quedaría así:
Bueno ahora vamos a comentar...
La primera función que tenemos, lo que hace activar el menú contextual en pocas palabras, y la segunda función la cual es la más compleja, y lo que hace es al div que encuentra dentro del gridview le asigna el menú que creamos, es decir la lista que se definio, por eso el id de la lista es el mismo valor del atributo menu. Luego viene una función que tiene tres argumentos, los cuales sirven para capturar la acción o el item seleccionado del menú contextual, una manera fácil es hacer un switch al action y definir diferentes case para cada opción, los case son definidos con base al valor href de la etiqueta "a" de la lista creada, por eso en el ejemplo se ha definido 3 case (opcion1,opcion2 y opcion3).. luego se muestra un mensaje informando la opción elegida, ya depende de cada necesidad definir la funcionaldiad deseada...
Buenos espero que les sea de ayuda el ejemplo... como siemore cualquier comentario es bien recibido...
Descarga del código fuente !!
En el siguiente post el cual espero subir la otra semana, vamos a realizar un autocomplete contra una base de datos sql con jquery...
Pero por que hacer un menú contextual?... muchas veces nos cansamos de tener 2,3 o mas botones en cada fila del grid.. y que mejor q un menú contextual apra tener todas las opciones en el mismo sitio..!!
Como primero quiero mostrarles como va a quedar nuestro menú.

Bueno ya sabemos como debe quedar, ahora manos a la obra.
Lo primero que necesitamos son dos librerias de jquery (en el ejemplo adjunto las encuentran), las agregamos a nuestro proyecto y posteriormente las referenciamos en nuestra página... es decir, no debe quedar algo asi:
<script src="Scripts/jquery-1.4.2.js" type="text/javascript"></script>
<script src="Scripts/jquery.contextMenu.js" type="text/javascript"></script>
y alli lo q estamos haciendo es referenciando los archivos de script a la página.
Ahora, el menú contextual no es nada más que una simple lista, la cual definimos de la siguiente manera:
<ul id="myMenu" class="contextMenu">
<li class="Opcion"><a href="#Opcion1">Opción 1</a></li>
<li class="Opcion"><a href="#Opcion2">Opción 2</a></li>
<li class="Opcion"><a href="#Opcion3">Opción 3</a></li>
</ul>
en donde definimos tantos items de lista como opciones de menú necesitemos.
Luego de tener creado el "menú", en la definición de las columnas del gridview, se debe definir una columna la cual tendrña una imagen o link o boton (lo que deseen) para que ar dar clic derecho podamos visualizar el menú), en resumen la columna quedaria:
<asp:TemplateField>
<ItemTemplate>
<div id="myDiv">
<img src="~/images/options.png" id="img" runat="server" title="Ver opciones [click derecho]" />
</div>
</ItemTemplate>
</asp:TemplateField>
Lo importante aqui es q el div que se define será el encargado de mostrar el menú contextual, por eso antes decia que se puede usar una imagen, un boton, etc, y dentro del div definimos el control, en mi caso usé una imagen de html.
Y en este punto ya hemos terminado con el diseño del gridview y del menú contextual, ahora lo que debemos hacer es con jquery crear de verdad el menú...nuestro código jquery quedaría así:
<script type="text/javascript">
$(function() {
$("#GridViewDatos div").click(function() {
$("#GridViewDatos div").enableContextMenu();
});
$(document).ready(function() {
$("#GridViewDatos div").contextMenu({
menu: 'myMenu'
}, function(action, el, pos) {
switch (action) {
case "Opcion1":
{
alert('Ha seleccionado la opción 1');
break;
}
case "Opcion2":
{
alert('Ha seleccionado la opción 2');
break;
}
case "Opcion3":
{
alert('Ha seleccionado la opción 3');
break;
}
}
});
});
});
</script>
Bueno ahora vamos a comentar...
La primera función que tenemos, lo que hace activar el menú contextual en pocas palabras, y la segunda función la cual es la más compleja, y lo que hace es al div que encuentra dentro del gridview le asigna el menú que creamos, es decir la lista que se definio, por eso el id de la lista es el mismo valor del atributo menu. Luego viene una función que tiene tres argumentos, los cuales sirven para capturar la acción o el item seleccionado del menú contextual, una manera fácil es hacer un switch al action y definir diferentes case para cada opción, los case son definidos con base al valor href de la etiqueta "a" de la lista creada, por eso en el ejemplo se ha definido 3 case (opcion1,opcion2 y opcion3).. luego se muestra un mensaje informando la opción elegida, ya depende de cada necesidad definir la funcionaldiad deseada...
Buenos espero que les sea de ayuda el ejemplo... como siemore cualquier comentario es bien recibido...
Descarga del código fuente !!
En el siguiente post el cual espero subir la otra semana, vamos a realizar un autocomplete contra una base de datos sql con jquery...
sábado, 19 de junio de 2010
Recursos de estudio
Hola a todos, bueno no he tenido el tiempo suficiente para hacer el ejemplo, pero les aseguro que para la otra semana estara arriba... hoy les quiero traer dos páginas en las que podrán encontrar cursos, videos y demos sobre todo en .net... espero les sesa de utilidad..
http://dotnet-u.com/Courses.aspx
http://geeks.ms/blogs/ajimenez/archive/2010/03/11/actualizado-cursos-de-programaci-243-n-web-c-vb-azure-windows-7-dynamics-mobile-silverlight-etc.aspx
Bueno ajala lo aprovechen...
http://dotnet-u.com/Courses.aspx
http://geeks.ms/blogs/ajimenez/archive/2010/03/11/actualizado-cursos-de-programaci-243-n-web-c-vb-azure-windows-7-dynamics-mobile-silverlight-etc.aspx
Bueno ajala lo aprovechen...
Etiquetas:
.net,
ASP.net,
material estudio,
videos
miércoles, 26 de mayo de 2010
Personalizando la aplicación
Hola, bueno, este es un post diferente a los que he pensado trabajar inicialmente, resulta que en un foro que visito bastante, surgio una inquietud sobre como mostrar una imagen de acuerdo a un usuario determinado (pueden ver el post aca), asi que deseoso de colaborar y de seguir aprendiendo he construido un ejemplo pequeño, con el cual quiero mostrar o dar un camino sobre somo se podria realizar dicha funcion, la idea es la siguiente, tener una pagina de inicio, para poder trabajar con un usuario especifico, para esto utilice el control login, y luego, de ingresar con datos correctos, permitir al usuario elegir una imagen, y cuando vuelva a ingresar el usuario mostrar la imagen elegida, el ejemplo es basico, pero cumple con la funcion, luego si me queda un poco mas de tiempo, lo hare mas completo...
la interfaz de usuario es:

en donde en el combo listo las imagenes existentes, y en la imagen del lado se muestar la imagen seleccionada, ahi un boton que permite guardar la imagen elegida, y en la parte superior se va a mostrar la imagen que el usuario ha seleccionado, cuado ingrese nuevamente.. es decir:

y como podemos ver, se carga la imagen que el usuario ha seleccionado, en este caso, la de una casita... espero que este ejemplo te ayude un poco con tu labor..
Descarga del ejemplo !!
la interfaz de usuario es:

en donde en el combo listo las imagenes existentes, y en la imagen del lado se muestar la imagen seleccionada, ahi un boton que permite guardar la imagen elegida, y en la parte superior se va a mostrar la imagen que el usuario ha seleccionado, cuado ingrese nuevamente.. es decir:

y como podemos ver, se carga la imagen que el usuario ha seleccionado, en este caso, la de una casita... espero que este ejemplo te ayude un poco con tu labor..
Descarga del ejemplo !!
martes, 25 de mayo de 2010
Reportes - ReportViewer
Hola a todos, muchas veces nos hemos preguntado como podemos imprimir o generar archivos en pdf, y si lo que necesitamos hacer es bastante complejo, muchas veces hacerlo todo a pedal resulta bastante tedioso, lo cual nos pone a pensar en una manera más rapida y fácil, en mi caso personal, la primera opción que se vino a la cabeza fue hacer mis reportes con crystal, ya que lo habia trabajado hace bastante tiempo, sin embargo, y más en entorno web, comprar la licencia del crystal a veces es complicado (aunque si peden hacerlo mejor), y algo muy parecido me sucedio con reporting services, además que necesitaba trabajar con versiones de sql express...
Así que tome la decisión de usar un control del toolbox de visual studio, el reportviewer, aunque no tenga la misma potencia de crystal reports, me ha sido de bastante utilidad. Lo que generalmente hago es tener una página exclusiva para mis reportes, asi por código lo que hago es cambiar el reporte y demas datos necesarios acorde a lo que deseo mostrar... sin más carreta comencemos...
Se debe tener en cuenta, que en el servidor en el cual se instale la aplicaciñon se debe correr un runtime para poder generar los reportes (esto sucede igual que con crystal).. es bastente liviano y no molesta para nada, descargalo !!
En ejemplo que voy a mostrar (bastante sencillo), tengo una página inicial la cual me muestra el nombre de algunas personas, con el nombre del país y la ciudad, esto lo hago con el control gridview.. y tengo dos botones, el primero me redirige a la página que muestra mi reporte, y allí puedo elegir si exportarlo o imprimirlo, y el segundo boton, me crea e reporte y automaticamente me permite elegir si abrirlo o guardarlo, sin salir de la página actual (en realidad si voy hasta la otra página, pero el usuario no se dará cuenta)... es decir, mi pantalla inicial es:

Lo único que se ha hecho es llenar el gridview con los datos...ahora lo que nos interesa, el reporte !!.
Creo una nueva página, la cual contiene un control ReportViewer, y ya, ahi acabo el diseño (sencillo verdad); en mi base de datos, he creado un procedimiento almacenado bastante sencillo, el cual me trae la información que vemos en la grilla, dicho procedimiento almacenado, recibe como parametro el codigo de la presona, para el ejemplo voy a enviar un % para que me los traiga todos, así que luego de tener el procedimiento, agrego un nuevo item de tipo dataset, para luego vincularselo al reporte, al agregar el dataset, este se encuentra vacio, asi q con clic derecho > agregar > tableadapter.. y ahi se muestra un asistente, en el cual configuramos la conexion, en este caso, la llamo del webconfig, luego le decimos que use un procedimiento almacenado existente y listo, tenemos nuestro dataset.
Luego agregamos un nuevo item de tipo informe (.rdlc), luego en la barra de menús vamos a Informe > origenes de datos, y alli escogemos el dataset que hemos creado, en mi caso se llamo dataset1_pa_imprimepersonas, y en la parte de la izquierda (generalmente) en el explorador de datos de sitios web, podemos ver que alli se encuentra el dataset, con el procedimiento almacenado, con los campos que nos trae el procedimiento, asi q ahora es solo diseñar el reporte arrastrando los campos, para el ejemplo he usado una tabla...
Ahora, si código.. en la primera página, vamos a programar el evento click de los botones, para ambos botones serña practicamente igual...
Protected Sub ButtonImprimir_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButtonImprimir.Click
Context.Items.Add("descargar", "no")
Context.Items.Add("persona", "%")
Server.Transfer("Reporte.aspx", True)
End Sub
Protected Sub ButtonDownload_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButtonDownload.Click
Context.Items.Add("descargar", "si")
Context.Items.Add("persona", "%")
Server.Transfer("Reporte.aspx", True)
End Sub
Podemos ver, que vamos a enviar a enviar dos variables por contexto, la primera es para saber si dse debe descargar el reporte y la segunda es el valor del parametro del procedimiento almacenado, luego se redirecciona a la página que tiene el reporte
En la página del reporte:
1. En el evento load verificamos por cual lado irnos, si mostrar el reporte o si hacer la descarga de una vez:
Dim sDescargar As String = CType(Context.Items("descargar"), String)
If sDescargar = "no" Then
Call Reporte()
Else
Call ReporteDownload()
End If
2. Aqui voy a mostrar solor el código cuando seleccionamos que no se debe descargar, en el ejemplo tienen todo:
Private Sub Reporte()
Dim sQuery As String = "PA_IMPRIMEPERSONAS"
cmd = New SqlCommand(sQuery)
cmd.Parameters.AddWithValue("@_codpersona", CType(Context.Items("persona"), String))
Dim dtpersonas As DataTable = oConexion.GetSP(cmd)
If Not dtpersonas Is Nothing AndAlso Not dtpersonas.Rows.Count = 0 Then
reportesReportViewer.Visible = True
reportesReportViewer.LocalReport.ReportPath = "Reportes\Reporte.rdlc"
Dim oReport As New ReportDataSource("DataSet1_PA_IMPRIMEPERSONAS", dtpersonas)
reportesReportViewer.LocalReport.DataSources.Clear()
reportesReportViewer.LocalReport.DataSources.Add(oReport)
reportesReportViewer.LocalReport.Refresh()
End If
End Sub
Ahora, como funciona este código?
declaro una variable la cual contiene el nombre del procedimiento almacenado, al command le paso el valor del parametro, luego en mi clase de conexion, la función que ejecuta procedimientos me devuelve un datatable, verifico que el datatable tenga datos, hago el reporte visible, se que en diseño ya lo hice, pero algunas veces si no lo ponia no me lo muestra,luego le asigno el reporte (.rdlc) que he diseñado (aqui podemos ver, que podemos enrutar cualquier reporte), lleno un reportdatasource para vincularselo a mi reportviewer, el primer parametro del constructor, debe ser el nombre del dataset que hemos creado anteriormente,luego se lo asigno al reportviewer y por último le hago un refresh...y amigos eso es todo, espero que este ejemplo un poco largo les sea de utilidad, ahi otras menaras de hacerlo, pero yo lo hago así y me ha funcionado muy bien...en el ejemplo encuentras el proyecto y la copia de la base de datos,en la base de datos ahi una tabla con todos lo paises, creo que les sera util...
Descarga el ejemplo aqui!!
Nos vemos en un proximo post donde vamos a hacer un menu contextual para un gridview, asi evitaresmo tener varios botones (eliminar, editar,imprimir,borrar,etc)
Así que tome la decisión de usar un control del toolbox de visual studio, el reportviewer, aunque no tenga la misma potencia de crystal reports, me ha sido de bastante utilidad. Lo que generalmente hago es tener una página exclusiva para mis reportes, asi por código lo que hago es cambiar el reporte y demas datos necesarios acorde a lo que deseo mostrar... sin más carreta comencemos...
Se debe tener en cuenta, que en el servidor en el cual se instale la aplicaciñon se debe correr un runtime para poder generar los reportes (esto sucede igual que con crystal).. es bastente liviano y no molesta para nada, descargalo !!
En ejemplo que voy a mostrar (bastante sencillo), tengo una página inicial la cual me muestra el nombre de algunas personas, con el nombre del país y la ciudad, esto lo hago con el control gridview.. y tengo dos botones, el primero me redirige a la página que muestra mi reporte, y allí puedo elegir si exportarlo o imprimirlo, y el segundo boton, me crea e reporte y automaticamente me permite elegir si abrirlo o guardarlo, sin salir de la página actual (en realidad si voy hasta la otra página, pero el usuario no se dará cuenta)... es decir, mi pantalla inicial es:

Lo único que se ha hecho es llenar el gridview con los datos...ahora lo que nos interesa, el reporte !!.
Creo una nueva página, la cual contiene un control ReportViewer, y ya, ahi acabo el diseño (sencillo verdad); en mi base de datos, he creado un procedimiento almacenado bastante sencillo, el cual me trae la información que vemos en la grilla, dicho procedimiento almacenado, recibe como parametro el codigo de la presona, para el ejemplo voy a enviar un % para que me los traiga todos, así que luego de tener el procedimiento, agrego un nuevo item de tipo dataset, para luego vincularselo al reporte, al agregar el dataset, este se encuentra vacio, asi q con clic derecho > agregar > tableadapter.. y ahi se muestra un asistente, en el cual configuramos la conexion, en este caso, la llamo del webconfig, luego le decimos que use un procedimiento almacenado existente y listo, tenemos nuestro dataset.
Luego agregamos un nuevo item de tipo informe (.rdlc), luego en la barra de menús vamos a Informe > origenes de datos, y alli escogemos el dataset que hemos creado, en mi caso se llamo dataset1_pa_imprimepersonas, y en la parte de la izquierda (generalmente) en el explorador de datos de sitios web, podemos ver que alli se encuentra el dataset, con el procedimiento almacenado, con los campos que nos trae el procedimiento, asi q ahora es solo diseñar el reporte arrastrando los campos, para el ejemplo he usado una tabla...
Ahora, si código.. en la primera página, vamos a programar el evento click de los botones, para ambos botones serña practicamente igual...
Protected Sub ButtonImprimir_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButtonImprimir.Click
Context.Items.Add("descargar", "no")
Context.Items.Add("persona", "%")
Server.Transfer("Reporte.aspx", True)
End Sub
Protected Sub ButtonDownload_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButtonDownload.Click
Context.Items.Add("descargar", "si")
Context.Items.Add("persona", "%")
Server.Transfer("Reporte.aspx", True)
End Sub
Podemos ver, que vamos a enviar a enviar dos variables por contexto, la primera es para saber si dse debe descargar el reporte y la segunda es el valor del parametro del procedimiento almacenado, luego se redirecciona a la página que tiene el reporte
En la página del reporte:
1. En el evento load verificamos por cual lado irnos, si mostrar el reporte o si hacer la descarga de una vez:
Dim sDescargar As String = CType(Context.Items("descargar"), String)
If sDescargar = "no" Then
Call Reporte()
Else
Call ReporteDownload()
End If
2. Aqui voy a mostrar solor el código cuando seleccionamos que no se debe descargar, en el ejemplo tienen todo:
Private Sub Reporte()
Dim sQuery As String = "PA_IMPRIMEPERSONAS"
cmd = New SqlCommand(sQuery)
cmd.Parameters.AddWithValue("@_codpersona", CType(Context.Items("persona"), String))
Dim dtpersonas As DataTable = oConexion.GetSP(cmd)
If Not dtpersonas Is Nothing AndAlso Not dtpersonas.Rows.Count = 0 Then
reportesReportViewer.Visible = True
reportesReportViewer.LocalReport.ReportPath = "Reportes\Reporte.rdlc"
Dim oReport As New ReportDataSource("DataSet1_PA_IMPRIMEPERSONAS", dtpersonas)
reportesReportViewer.LocalReport.DataSources.Clear()
reportesReportViewer.LocalReport.DataSources.Add(oReport)
reportesReportViewer.LocalReport.Refresh()
End If
End Sub
Ahora, como funciona este código?
declaro una variable la cual contiene el nombre del procedimiento almacenado, al command le paso el valor del parametro, luego en mi clase de conexion, la función que ejecuta procedimientos me devuelve un datatable, verifico que el datatable tenga datos, hago el reporte visible, se que en diseño ya lo hice, pero algunas veces si no lo ponia no me lo muestra,luego le asigno el reporte (.rdlc) que he diseñado (aqui podemos ver, que podemos enrutar cualquier reporte), lleno un reportdatasource para vincularselo a mi reportviewer, el primer parametro del constructor, debe ser el nombre del dataset que hemos creado anteriormente,luego se lo asigno al reportviewer y por último le hago un refresh...y amigos eso es todo, espero que este ejemplo un poco largo les sea de utilidad, ahi otras menaras de hacerlo, pero yo lo hago así y me ha funcionado muy bien...en el ejemplo encuentras el proyecto y la copia de la base de datos,en la base de datos ahi una tabla con todos lo paises, creo que les sera util...
Descarga el ejemplo aqui!!
Nos vemos en un proximo post donde vamos a hacer un menu contextual para un gridview, asi evitaresmo tener varios botones (eliminar, editar,imprimir,borrar,etc)
miércoles, 12 de mayo de 2010
Paginando el gridview
Hola, bueno como dije en mi anterior post, quiero mostrar como podemos hacer una paginación elegante y un poco más funcional de nuestros afamado gridview.
Muchas veces, necesitamos y queremos q nuestra interfaz de usuario sea más amigable y bonita, puesto que lo que el usuario ve es la interfaz (muchas veces no le importa lo que está por detrás)...
En ejemplo vamos a cargar un gridview desde un archivo xml el cual contiene la lista de todos los paises del mundo (si falta alguno disculpad); dicha lista contine 241 paises, lo cual haría que nuestro gridview se extendiera demasiado hacia abajo, para evitar que esto suceda vamos a usar la paginación.
La idea es disponer de un dropdownlist el cual va a contener todas las páginas del gridview, así podremos cambiar de página facilmente. Además, se visualizará cuatros imagenes las cuales tendrán la función de ir al primer, anterior, siguiente y último registro.
Es decir, al final nuestro gridview debe lucir parecido a:

Para lograr esta funcionalidad, ahi varias cosas que se deben definir.
1.Establecer la propiedad AllowPaging="true" del gridview
2.Establecer el número de filas o registros que deseamos ver por página en el grid (ej: PageSize="10")
3.Personalizar el pagertemplate.
4.En el dropdownlist del pagertemplate, se ha definido el evento OnSelectedIndexChanged="GoPage", en este evento vamos a cambiar el la página q estamos visualizando, asi en nuestro codebehind, vamos a definir un procedimiento protected (protected para que pueda ser accedido desde el html).
Además de los pasos anteriores es necesario
1.Definir el procedimiento para cargar el gridview
2.Añadir la lógica necesaria en el evento PageIndexChanging para que nuestros botones de navegación funcionen, en este caso, con la variable e podemos acceder al numero de la página a traves de la propiedad NewPageIndex.
3.En el evento RowDataBound del gridview, se debe cargar el dropdownlist; y el label para mostrar el número total de páginas.
Como se puede ver, con solo unos pequeños pasos extendemos la funcionalidad de la paginación del gridview.
Descarga del ejemplo !
Nos vemos en el siguiente post, para seguir mostrando mas funcionalidades del control gridview...
Muchas veces, necesitamos y queremos q nuestra interfaz de usuario sea más amigable y bonita, puesto que lo que el usuario ve es la interfaz (muchas veces no le importa lo que está por detrás)...
En ejemplo vamos a cargar un gridview desde un archivo xml el cual contiene la lista de todos los paises del mundo (si falta alguno disculpad); dicha lista contine 241 paises, lo cual haría que nuestro gridview se extendiera demasiado hacia abajo, para evitar que esto suceda vamos a usar la paginación.
La idea es disponer de un dropdownlist el cual va a contener todas las páginas del gridview, así podremos cambiar de página facilmente. Además, se visualizará cuatros imagenes las cuales tendrán la función de ir al primer, anterior, siguiente y último registro.
Es decir, al final nuestro gridview debe lucir parecido a:

Para lograr esta funcionalidad, ahi varias cosas que se deben definir.
1.Establecer la propiedad AllowPaging="true" del gridview
2.Establecer el número de filas o registros que deseamos ver por página en el grid (ej: PageSize="10")
3.Personalizar el pagertemplate.
4.En el dropdownlist del pagertemplate, se ha definido el evento OnSelectedIndexChanged="GoPage", en este evento vamos a cambiar el la página q estamos visualizando, asi en nuestro codebehind, vamos a definir un procedimiento protected (protected para que pueda ser accedido desde el html).
Además de los pasos anteriores es necesario
1.Definir el procedimiento para cargar el gridview
2.Añadir la lógica necesaria en el evento PageIndexChanging para que nuestros botones de navegación funcionen, en este caso, con la variable e podemos acceder al numero de la página a traves de la propiedad NewPageIndex.
3.En el evento RowDataBound del gridview, se debe cargar el dropdownlist; y el label para mostrar el número total de páginas.
Como se puede ver, con solo unos pequeños pasos extendemos la funcionalidad de la paginación del gridview.
Descarga del ejemplo !
Nos vemos en el siguiente post, para seguir mostrando mas funcionalidades del control gridview...
lunes, 3 de mayo de 2010
GridView y PopupControlExtender
Hola a todos, a diario en mi trabajo, he tenido q trabajar bastante con el control gridview de asp, y he tenido que agregarle varias funcionalidades, para que sea mas amigable al usuario y para que su funcionamiento sea mas adecuado... asi que he decidido hacer varios post (este seré el primero sobre este control), para que cualquiera pueda mejorar la usabilidad de este control).
En este post, quiero mostrar como podemos mostrar detalles del gridview de forma "modal" con el popupcontrolextender, y asi darle mas usabilidad a nuestro gridview...
sin más carreta vamos a lo que nos interesa.
La idea es poder mostrar detalles de nuestro gridview con solo pasar el mouse por encima de un boton de detalles, como vemos en la siguiente imagen:

Asi, al pasar el mouse por cada uno de las imagenes, vamos a visualizar el nombre del pais y de la ciudad (un ejemplo simple, ya ustedes veran como aplicarlo).
Pero que necesitamos, como mencione anteriormente, vamos a usar el popucontrolextender del toolkit de ajax (si no lo tienes descargarlo aqui)
Ahora vamos a comenzar a constriur nuestro programa.
Agregamos un control grdiview a nuestra pagina aspx, y dentro de la definición de las columnas, agregamos un imagebutton y un popupcontrol extender, lo importante aqui, es que debemos comunicarnos con el servidor para poder hacer la consulta contra la base de datos y asi poder mostar los detalles, asi que en la propiedad DynamicServiceMethod del popupcontrolextender le damos el nombre de un WebMethodAttribute existente en nuesto codebehind, y en la propiedad DynamicContextKey le vamos a enviar los parametros para poder hacer los filtros en la consulta....
Dentro de nuestro WebMethodAttribute el cual debemos definir como shared en visual basic (static en c#), vamos a realizar laconsulta contra la base de datos, asi como se debe crear una tabla el la cual visualicemos los resultados...
Bien es sabido, que el popupcontrol se activa al dar click en un control (es nuestro caso imagebutton), y como la idea es mostrar los detalles con solo pasar el mouse por encima de la imagen, se debe agregar este comportamiento, lo cual hacemos en el evento rowcreated del gridview...alli agregamos los enventos onmouseover para mostrar los detalles al pasar el mouse por encima y onmouseout para ocultarlo cuando quitemos el mouse...
Como ven, no es algo complicado y si hará que nuestras aplicaciones sean más rápidas y mas fáciles para el usuario...lo cual es algo fundamental...
Link con el ejemplo !!
Espero les sea util este ejemplo y nos vemos en un próximo ejemplo, donde mostraré como hacer una paginación elegante y funcional del gridview...
En este post, quiero mostrar como podemos mostrar detalles del gridview de forma "modal" con el popupcontrolextender, y asi darle mas usabilidad a nuestro gridview...
sin más carreta vamos a lo que nos interesa.
La idea es poder mostrar detalles de nuestro gridview con solo pasar el mouse por encima de un boton de detalles, como vemos en la siguiente imagen:

Asi, al pasar el mouse por cada uno de las imagenes, vamos a visualizar el nombre del pais y de la ciudad (un ejemplo simple, ya ustedes veran como aplicarlo).
Pero que necesitamos, como mencione anteriormente, vamos a usar el popucontrolextender del toolkit de ajax (si no lo tienes descargarlo aqui)
Ahora vamos a comenzar a constriur nuestro programa.
Agregamos un control grdiview a nuestra pagina aspx, y dentro de la definición de las columnas, agregamos un imagebutton y un popupcontrol extender, lo importante aqui, es que debemos comunicarnos con el servidor para poder hacer la consulta contra la base de datos y asi poder mostar los detalles, asi que en la propiedad DynamicServiceMethod del popupcontrolextender le damos el nombre de un WebMethodAttribute existente en nuesto codebehind, y en la propiedad DynamicContextKey le vamos a enviar los parametros para poder hacer los filtros en la consulta....
Dentro de nuestro WebMethodAttribute el cual debemos definir como shared en visual basic (static en c#), vamos a realizar laconsulta contra la base de datos, asi como se debe crear una tabla el la cual visualicemos los resultados...
Bien es sabido, que el popupcontrol se activa al dar click en un control (es nuestro caso imagebutton), y como la idea es mostrar los detalles con solo pasar el mouse por encima de la imagen, se debe agregar este comportamiento, lo cual hacemos en el evento rowcreated del gridview...alli agregamos los enventos onmouseover para mostrar los detalles al pasar el mouse por encima y onmouseout para ocultarlo cuando quitemos el mouse...
Como ven, no es algo complicado y si hará que nuestras aplicaciones sean más rápidas y mas fáciles para el usuario...lo cual es algo fundamental...
Link con el ejemplo !!
Espero les sea util este ejemplo y nos vemos en un próximo ejemplo, donde mostraré como hacer una paginación elegante y funcional del gridview...
Etiquetas:
ajax,
ASP.net,
gridview,
gridview details,
net,
popupcontrol,
visual basic
Suscribirse a:
Entradas (Atom)