Iniciar StoryBoard en WPF

La manera de iniciar una animacion en un proyecto Silverlight es diferente a la de un proyecto WPF.

Mientras que en Silverlight, solo tendremos que hacer:
         StoryBoard.Begin();

En WPF, se tiene que acceder al StoryBoard mediante los Recursos:
         Storyboard story = (Storyboard)Resources[“NombreStoryBoard”];
y luego:
         story.Begin();

Gracias

Bindear un ASP Label desde un SqlDataSource

Por default, el control ASP Label no es bindeable a un origen de datos, dado que no posee la propiedad DataSource.

Pero si por alguna razon se necesita mostrar informacion desde un origen en tiempo de ejecucion, esta es una buena solucion:

“Envolver” el control Label dentro de algun otro que sea bindeable, por ejemplo un Formview

<asp:FormView ID=”Saldo” runat=”server” DataSourceID=”SqlDataSourceSaldo”>
     <ItemTemplate>
              <asp:Label CssClass=”formulario negritas” ID=”SaldoActualLabel” runat=”server” Text='<%# Eval(“Monto_Ejercido”)%>’ />
    </ItemTemplate>
<asp:FormView>

Y si se requiere algun formato en particular:
     Text='<%# Eval(“Monto_Ejercido”,”{0:c}”) %>’

Gracias

Ajax Popup “Procesando”

Una forma de “controlar” la paciencia de los usuarios al estarse ejecutando procesos dentro del servidor, es la de mostrar un popup de progreso, deshabilitando la interaccion de cualquier control de la aplicacion.

Comenzamos con el codigo JavaScript que mostrara el Popup

<script type=”text/javascript”>
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginReq);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endReq);
function beginReq(sender, args)
{
      // muestra el popup
      $find(ModalProgress).show();
}
function endReq(sender, args)
{
      // esconde el popup
      $find(ModalProgress).hide();
}

var ModalProgress = ‘<%=ModalProgress.ClientID%>’;
</script>

El evento beginRequest se provoca antes de que se inicie el procesamiento de una devolución de datos asincrónica y se envíe la devolución (postback) al servidor.
El evento endRequest se provoca después de que finalice una devolución de datos asincrónica y se haya devuelto el control al explorador.
Si se observa en las funciones de JavaScript se hace Referencia a la variable ModalProgress la cual debe ser creada desde el code-behind para que luego pueda ser utilizada por javascript.

Luego de esto crearemos el control popup.

<asp:Panel runat=”server” CssClass=”modalPopup” ID=”panelUpdateProgress”>
<asp:UpdateProgress ID=”UpdatePrg” DisplayAfter=”0″ runat=”server”>
<ProgressTemplate>
<div style=”position:relative; top:50%; text-align:center; height:100px;”>
<img src=”../../../images/loading.gif” style=”vertical-align:middle” alt=”Procesando…” width=”90px” />
Procesando ….
</div>
</ProgressTemplate>
</asp:UpdateProgress>
</asp:Panel>
<asp:ModalPopupExtender runat=”server” ID=”ModalProgress” TargetControlID=”panelUpdateProgress” PopupControlID=”panelUpdateProgress”
BackgroundCssClass=”modalBackground”>
</asp:ModalPopupExtender>

Y por ultimo, el control que iniciara el proceso.

<asp:UpdatePanel ID=”UpdatePanel1″ runat=”server”>
<ContentTemplate>
<asp:Button ID=”Boton_guardar” runat=”server” Text=”Guardar”
ValidationGroup=”LoginUserValidationGroup” onclick=”Boton_guardar_Click” />
   
</ContentTemplate>
</asp:UpdatePanel>

Es importante que el boton este dentro de un PanelUpdate, ya que asi ajax sabra que es este el evento que procesara asincronicamente.

Fuente: Blog Guillermo G.

Gracias

Ocultar listado de archivos en IIS

Para evitar que se muestre un listado de archivos que componen la estructura de un sistema web, es necesario deshabilitar esta opcion en el servidor web IIS:

Entonces, abrimos el Administrador del IIS. Seleccionamos la opcion “Examen de Directorios” y damos clic en “Deshabilitar”.

Y al final cuando se trate de acceder:

Gracias

Formato en columnas de un ASP GridView

En varias ocasiones, necesitaba mostrar informacion de una base de datos en un ASP GridView y colocarle los botones de Editar, Eliminar,etc.

Pero los datos no siempre eran de tipo texto (string), algunas ocasiones eran de tipo cantidad (money) o de tipo fecha (Date) y al momento de desplegar estos datos en el GridView se mostraban muy confusos o largos.

En lugar de mostrar $23.00 se mostraba 23.0000 o en lugar de mostrar 12/12/2010 se mostraba 12/12/2010 00:00:00 p.m..

Para cambiar esto, solo basta con darle el formato requerido a la columna del gridView dependiendo del tipo de dato que se obtendra de la base de datos.

En el GridView nos vamos al Smart Tag (Shift+Alt+F10) o hacemos click sobre el y del lado derecho aparecera un boton, hacemos click en el. Una vez ahi, seleccionamos Editar Columnas (edit columns), luego en el Listbox Campos Seleccionados (Selected Fields) seleccionamos la columna a la cual le daremos formato, del lado derecho apereceran las propiedades del este campo, buscamos DataFormatString y colocamos el patron de formateo, ver patrones.

De esta menera, logramos representar correctamnmete los datos que necesitamos. Muchas Gracias.

Imitando el menu de SharePoint

Hola a todos.

En esta ocasion le mostrare como añadir controles al Menu de ASP.NET, asi como estilos y codigo html para transformarlo completamente a como nuestro diseño lo demande. Para esto trataremos de imitar un menu de SharePoint.

Lo primero, es agregar un control al proyecto, una vez insertado, colocamos el cursor sobre el control, del lado derecho aparecera un boton, desplegamos el menu “Tasks”, y nos vamos a “Edit Templates” luego en “Displays” seleecionamos “DynamicItemTemplate”.

En el espacion en blanco colocamos dos controles “Label”, el primero sera el Titulo de la opcion del menu y el segundo sera la Descripcion de la opcion. A cada control “Label” le asignamos el tipo de letra,color,tamaño,etc. una vez hecho esto, nos vamos al codigo aspx de la pagina, y editamos dentro de la etiqueta “<DynamicItemTemplate>”.

Dentro de esta etiqueta, insertamos una tabla “<table>” y agregamos dos “<tr>” uno donde ira el Label del titulo y otro donde ira el Label Descripcion, y cada renglon contendra tres columnas “<td>” una sera la columna color gris de la izquierda, la segunda sera la separacion entre la primera columna y el texto, y la tercera sera el contenido, es decir los controles Label.

Luego de esto, en el control “Menu” agregamos los items que necesitemos.

Por ultimo, nos vamos al codigo .cs y aqui en el metodo “OnLoad()”, buscamos el control con el metodo Page.FindControl(), y a partir de aqui, buscamos los ID’s de los controles Label’s y cambiamos su propiedad “Text” con el valor que necesitemos.

Teniendo como resultado:

Y el nuestro:

No es 100% igual pero con un poco de paciencia y bastante lado femenino podremos darle un diseño muy profesional a nuestros controles.

Descargar ejemplo

Deshabilitar la cache y el boton “atras” del navegador



En ocasiones cuando en un sistema web se requiere que los usuarios inicien sesion, para asi, poder saber quien es la persona que entro y cuales son sus permisos, es conveniente, por seguridad, deshabilitar el boton “atras” del navegador o no permitir cache en la pagina.

Para deshabilitar el contenido anterior:

<script type="text/javascript">
{
if(history.forward(1))
location.replace(history.forward(1))
}
<script>

Para deshabilitar la cache:

<meta http-equiv="Expires" content="0" />
<meta http-equiv="Pragma" content="no-cache" />

Esto nos ayudara para que los usuarios no brinquen de una pagina a otra libremente, sobre todo cuando se tenga una pagina donde se realicen transacciones a bases de datos.

Agregar ASP.NET Ajax a Visual Studio 2010

Primero descargamos el toolkit de ajax para .Net de aqui.

Una vez descargado, abrimos VS2010, y en el panel Toolbox, hacemos click con boton derecho sobre superficie blanca. Y agregamos una nueva categoria.

Luego, colocamos el nombre.

Y sobre el espacio en blanco debajo de la nueva categoria hacemos click con boton derecho y elegimos Choose Items.

Cuando nos pida que elijamos items, nos vamos al boton de Navegar.

Y nos dirigimos a la ruta donde se encuentra la dll. del ajax toolkit. lo seleccionamos y abrimos.

De regreso en el dialogo de Choose Items, dejamos seleccionados los items por default y aceptamos.

Por ultimo, vemos como se agregan los controles de Ajax.

Gracias.

Importar un Web Part al servidor WSS

Hasta ahora hemos creado web parts en el mismo ámbito en el que se encuentra nuestro servidor WSS, y gracias a que Visual Studio se encarga de “dar de alta” el web part en el servidor, nosotros no nos damos cuenta de lo que se hace para que pueda funcionar.
Pero ¿Qué pasa cuando necesitamos exportar un web part que hemos creado de manera local e importarlo hacia otro servidor?, pues necesitamos conocer los pasos para incorporarlo, además claro, de conocer las especificaciones de dichos servidores.
A continuación listaremos los pasos para incluir un web part en un servidor WSS.

1.- Copiar los archivos .dll, recursos (script, imágenes, audio, video), archivo feature.xml, .webpart y .xml del webpart, al servidor.

2.- Copiar el archivo .dll en el GAC del servidor.

3.- Modificar web.config agregando un un control en la sección SafeControls:

<SafeControl Assembly=”NombreEnsamblado(.dll), Version=versión, 
     Culture=cultura, PublicKeyToken=keytoken”
     Namespace=” NombreEnsamblado(.dll)” TypeName=” NombreEnsamblado(.dll)” 
     Safe=”True”
/>.

4.- Guardar y cerrar.

5.- Copiar los Features del web part en el directorio Features del servidor.

6.- Crear el directorio de los recursos en el servidor y copiar los archivos de recursos del webpart dentro de el.

7.- Verificar que estos archivos puedan ser interpretados por el servidor, ingresamos al Administrador de IIS y buscamos que en Tipos MIME existan los formatos que necesitamos.

  • En caso de que faltara alguna extensión, creamos un nuevo Tipo MIME .Por ejemplo:

Extension: .xap
Tipo MIME: application/x-silverlight-app

Y reiniciamos IIS.

Luego de esto el web part esta disponible en el servidor para ser agregado a cualquier sitio
dentro de la colección de sitios.

Gracias.

Agregar una aplicación Silverlight a SharePoint

Como anteriormente comentamos, la forma de incrustar una aplicación Silverlight en SharePoint es la misma que utiliza Visual Studio al crear el sitio huésped, es decir agregar un objeto y pasarle como parámetros el archivo .xap y lo que necesite.

Tomando esto en cuenta, diseñaremos en Expression Blend un reproductor de videos o audio Silverlight y agregaremos el archivo .xap en un web part.

Comenzamos creando el proyecto en Expression Blend, agregamos un control ExpressionMediaPlayer y definimos la ruta en donde se encuentra el archivo a reproducir. Compilamos y corremos, verificando que no haya errores.

SilverlightWebPart1

SilverlightWebPart1

Ubicamos el archivo .xap generado y entonces lo copiamos a nuestro servidor WSS.
Luego de esto, en el servidor WSS creamos un proyecto SharePoint web part, y creamos su carpeta de recursos, colocamos ahí el archivo .xap que copiamos antes, y agregamos el método Render:

protected override void Render(HtmlTextWriter writer)
{
    base.RenderContents(writer);

    string html="";
    /*Agregar el objeto silverlight a la pagina SharePoint*/
            html += "<div id="silverlightControlHost">";
            html += "</div>";

     writer.Write(html);
}

Gracias