martes, 27 de diciembre de 2011

ASPxGridView y FocusedRowChanged


Hola, en primer lugar felicitaros la nvidad a todo el mundo y que seais muy muy felices.
Bueno aquí os dejo un código del que estoy bastante orgulloso ya que he estado dos días intentando hacerlo de una forma eficiente y al final lo he conseguido:
Se trata de como actualizar un aspxgridview al seleccionar la fila de otro aspxgridview.
En mi ejemplo tenía en uno personal y en otro permisos de ese personal, al seleccionar el personal quería que me aparecieran en el otro aspxgridview los permisos que tienen asignados.
Este es el código de los elementos:

        <dx:ASPxGridView ID="ASPxGridView1" runat="server" ClientIDMode="AutoID" OnLoad="cargaPermisosPersonal"   >
             <ClientSideEvents FocusedRowChanged="function(s, e) { ASPxGridView2.PerformCallback();  }" />
        </dx:ASPxGridView>


           <dx:ASPxGridView ID="ASPxGridView2" runat="server" OnAfterPerformCallback="cargaPermisosPersonal">
               <SettingsText EmptyDataRow="No hay ningún permiso asignado" />
           </dx:ASPxGridView>


La función cargaPermisosPersonal no la pongo porque es bastante larga, pero lo que hace es obtener el identificador del personal y buscar en la base de datos sus permisos, además de otras funciones que no tienen nada que ver con esta entrada.

Para explicar un poco lo que hace, con OnLoad cargamos la primera vez los permisos del primer personal, que es el que se selecciona la primera vez, y luego con clientsideevents focusedrowchanged lo que hacemos es actualizar el  aspxgridview2, que como podeis ver con onafterperformcallback llamamos a la función para cargar los permisos del nuevo personal seleccionado.

Muchas gracias y espero que haya sido de ayuda.

viernes, 23 de diciembre de 2011

location.reload(true)

Si en algún botón de los elementos de visual studio queréis recargar la página con esta función lo podéis hacer, aquí vemoos un ejemplo:
<dx:ASPxGridView ID="ASPxGridView1" runat="server" ClientIDMode="AutoID" OnFocusedRowChanged="cargaPermisosPersonal"  >
             <ClientSideEvents RowClick="function(s, e) { ASPxGridView2.PerformCallback();location.reload(false);  }" />
        </dx:ASPxGridView>

Gracias y espero que sea de ayuda.

miércoles, 21 de diciembre de 2011

AutoPostBack

A menudo se quiere programar un botón o un checkbox para que cuando se modifique aparezcan nuevos elementos en una ventana de un programa. Con Visual Studio 2010, incluso teniendo bien programada la función no funciona. Probad a cambiar el valor del AutoPostBack a true y guardar la página. Próximamente publicaré un artículo completo sobre este atributo.

Session caducada

He solucionado un error que tenía referente a las sesiones en visual studio.

Las sessiones en visual studio tienen un tiempo de expiración, que se configura con la variable timeout. Pues al pasar este tiempo sin realizar ninguna acción aparece un error de "Referencia a objeto no establecida como instancia de un objeto." en la línea usuarioConexion = Session["stringUsuario"].ToString();

La forma que yo he tenido de solucionarlo en poner en todos los Page_Load este código:
 if (Session["stringUsuario"] == null)
                    Response.Redirect("~/portadaPrincipal.aspx");

Además en mi aplicación, el portadaPrincipal redirige a un index que tiene dos frames, para poder eliminar estos frames y dejar la pantalla limpia utilizo este javascript en el portadaPrincipal

<script type="text/javascript">
    function quitarFrame() {
        if (self.parent.frames.length != 0)
            self.parent.location = document.location.href;
    }
    quitarFrame()
</script>

Espero os sirva de ayuda.

martes, 20 de diciembre de 2011

Ventana de aviso en ASP.NET

En relación a la entrada anterior, si solamente quieres mostrar una ventana con un mensaje de error, puedes hacerlo así:

this.Page.Response.Write("<script language='JavaScript'>window.alert('<<Mensaje de error>>');</script>");

Hasta la próxima.

viernes, 16 de diciembre de 2011

MessageBox.Show en ASP.NET

 Tengo el siguiente error:


Exception Details: System.InvalidOperationException: No se puede mostrar un cuadro de diálogo o formulario modal cuando la aplicación no está en modo UserInteractive. Especifique el estilo ServiceNotification o DefaultDesktopOnly para mostrar una notificación de una aplicación de servicio.

En la siguiente línea de código:

   DialogResult result = MessageBox.Show("¿Desea borrar el perfil 
seleccionado?", 
"Confirmación", MessageBoxButtons.YesNo);
 
Según he leido viene dado porque los messagebox no se pueden poner en una 
aplicación web por el tema del cliente y el servidor.
 
Después de darle muchas vueltas he llegado a una solución bastante 
sencilla.
 
Lo he encontrado en esta dirección.
 
Al parecer existe para los botones una opción que es la de OnClientClick
que ejecuta
si está en el servidor.
 
<asp:Button ID="Button1" runat="server" 
OnClientClick="return confirm('Are you sure you want to delete?');"
                onclick="Button1_Click" Text="Delete" /> 

Con este elemento podemos decir que primero muestre una ventana de
 confirmación y si
es true, entra en Button1_Click, y si es false no hace nada

Espero que a alguie le sea de ayuda ya que me ha costado bastante
 encontrar esta
solución.
 
 
También lo he encontrado para este tipo de botón:
 
<dx:ASPxButton ID="ASPxButtonBorrar" runat="server" style="margin-left:0px" 
onclick="ASPxButtonBorrar_Click" Visible="true"  >
 
<Image Url="~/iconos/borrar.png" Height="30px" Width="70px">
</Image>
<Border BorderColor="White" BorderStyle="Outset" BorderWidth="5px" />
<ClientSideEvents Click="function(s,e){e.processOnServer = confirm('¿Está
seguro de borrar el registro?');}" />
</dx:ASPxButton> 

Programas para SCORM

Voy a publicar dos programas para poder crear cursos tipo SCORM:

eXe: http://exelearning.org

CourseLab:  http://www.courselab.com/

Y aquí tenéis uno para modificarlos una vez que están hechos, podéis abrirlos y ver el contenido.

Reload Scorm: http://www.reload.ac.uk/scormplayer.html


jueves, 15 de diciembre de 2011

Texto en mayúsculas de un programa

Estoy programando una aplicación en Visual Studio y quiero que en todos los input se vea el texto escrito en mayúsculas y luego al guardarlo en la base de datos también se guarde en mayúsculas.

Para verlo: input {text-transform :uppercase;} para ponerlo en la cabecera del .html, style="text-transform :uppercase" para ponerlo en el tag del input( por ejemplo textbox). Por si alguno en especial como por ejemplo el e-mail no quereis que esté en mayúsculas style="text-transform :none".

Para que se guarde en mayúsculas en la base de datos: TextBox.Text = TextBox.Text.ToUpper();
Así tenemos todo nuestro texto del programa en mayúsculas.

Gracias y hasta otra.


miércoles, 23 de noviembre de 2011

Informes en MOODLE

Estoy trabajando en la plataforma de MOODLE, para aquellos que no lo sabeis es una plataforma mediante la cual se pueden hacer cursos on-line, es totalmente de código abierto, OPEN SOURCE, para todo aquel que quiera modificarla a su antojo.
Aquí tenéis la web para descargarla e informaros un poco para los que estéis interesados. Y aquí tenéis la plataforma para cursos en la que estoy trabajando, por ahora no está operativa pero lo estará en una semana más o menos, en ella ofreceremos cursos a nivel nacional sobre LOPD.
Como habréis podido comprobar, MOODLE es bastante extenso, con muchísimas funciones y recursos tanto para administradores, profesores y alumnos, como por ejemplo, cursos, calificaciones, informes, asignación de roles, apariencia,....en definitiva bastante extenso.
Una de las partes más interesantes es poder añadirle bloques y módulos creado por distintos desarrolladores, en esto es en lo que estoy trabajando.

Más concreto en un bloque denominado dedication, desarrollador al parecer por El Centro de Innovación para la Sociedad de la Información (CICEI) en la Universidad de Las Palmas de Gran Canaria, aquí dejo el enlace para que os lo bajeis y lo probeis.

Respecto a las modificaciones que yo estoy haciendo, he estado trabajando tomando como base este bloque y le he añadido las funcionalidad de que te muestre un informe con los alumnos matriculados en un determinado curso y sus calificaciones en los correspondientes examenes de este.
Aquí podéis ver una captura de pantalla para haceros una idea del informe, a parte le he incluido la posibilidad de poder imprimirlo en pdf.



Bueno por ahora eso es todo, como siempre si estáis interesados, para opiniones o comentarios podéis contactar conmigo. Un saludo y hasta la siguiente entrada que espero sea pronto.

viernes, 18 de noviembre de 2011

Complementos indispensable para Firefox

He encontrado un artículo sobre los complementos indispensables de firefox para desarrolladores, más concretamente en este enlace

http://oldies.elguruprogramador.com.ar/articulos/complementos--para-firefox-indispensables-desarrollo-web.htm

pero para aquellos más novatos (como yo..jeje) voy a explicar un poco para que sirve cada uno..

Firebug: supongo que el más conocido y el más útil, por lo menos para mi. Con ese complemente podemos movernos por el código de la página para depurar etiquetas y estilos "in situ". Podemos modificar para ver como quedaría finalmente en la página a nuestro antojo, tanto html, como css.

Firecookie: con este podemos ver y manejar los cookis en nuestro navegador.

Yslow:un analizador de webs mediante unas reglas hechas por Yahoo para sitios webs de alto rendimiento.

Clear caché: a veces, sobre todo con estilos, los cambios realizados en el código no afectan al diseño de la página, y tienes que borrar los datos de la caché para que surgan efecto, bueno pues este complemento hace lo mismo pero simplemente clickeando un botón en lugar de entrar en opciones>>seguridad>>limpiar caché.

HTML Validator: muestra el número de errores de código html que tiene el código de tu página web.(No disponible todavía para Firefox 8).

Web Developer: añade varias funciones de desarrollo web a tu navegador Firefox.

Esto es todo, espero que si en alguno me estoy equivocando me corrigais sin nigún problema. Un saludo.

Tildes en SCORM

Bueno ahí va mi 3ª entrada, esta mañana he tenido un problema con unos cursos tipo SCORM. El caso es que conforme me los he bajado para subirlos a mi plataforma de MOODLE, algunos caracteres no venían correctamente y aparecían símbolos raros, más concretamente en las tíldes. Estaba claro que era un problema de codificación, bueno pues para solucionarlo, después de muchas pruebas, la mejor solución es:

En cada carpeta de los distintos módulos del curso, tiene que aparecer un index.html, abrimos el código para editarlo y en la primera línea de todas copiamos

<?xml version="1.0" encoding="ISO-8859-1"?>

y en algún lugar de la cabecera

<meta http-equiv='Content-Type' content='text/html; charset=ISO-8859-1' />

Con esto se debería de solucionar el problema, si hay alguna duda por favor no dudeis en contactar conmigo.Un saludo.


miércoles, 16 de noviembre de 2011

Salto de página en Microsoft.Office.Interop.World

Estoy realizando un proyecto en Visual Studio 2010 y he tenido un problema con un salto de página.
Lenguaje:C#


Aquí podemos ver como hacer un salto de página para empezar a copiar las cosas que hay en el portapapeles en la siguiente página.

aux = wordApp.Documents.Open(rutaActual + "\\documentos\\" + responsableSeleccionado + "\\AnexoB.doc");
aux.Content.Copy();
Final.Application.Selection.Paste();
Final.Application.ActiveDocument.Select();
Final.Application.Selection.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
Final.Application.Selection.InsertBreak(Word.WdBreakType.wdPageBreak);

Un saludo.

Bienvenidos

Bienvenidos a este mi blog, soy un Ingeniero Técnico Informático y en este subiré distintos códigos que utilizaré a lo largo de mi carrera profesional para uso y disfrute de otras personas. Totalmente en acuerdo por un mundo de código libre.Gracias a todos.