Inicio > C#, SharePoint, Tips y trucos > Usa DateTimeControl para capturar fechas en SharePoint

Usa DateTimeControl para capturar fechas en SharePoint


En estos momentos me encuentro haciendo un WebPart para un proyecto de SharePoint (WSS 3.0). Me habían pedido que la captura de unos datos, de tipo fecha, se hiciera a través de controles que desplegaran la fecha, en lugar de un texto plano. Yo, cándidamente, puse un control de calendario. Cumple los requerimientos, pero tiene un no-sé-qué-qué-sé-yo que no me gusta. Muy… grande, digamos. 

Así que me dí a la tarea de investigar alternativas. La primera idea fue revisar cómo le hacía SharePoint, y explorando mis listas me encontré que utiliza una caja de texto seguida de un iconito de calendario, el cual al ser pulsado, despliega un bontio… ahm… calendario. Ejem. Mejor una imagen.

DateTimeControl1 

Y así las cosas, me dije a mí mismo: “Mí-mismo, seguro eso es un control”. Bueno, ya saben que a SharePoint le gusta encapsular todo dentro de controles web, una buena práctica a mi parecer. Así que me agarré el Reflector, abrí la librería Microsoft.SharePoint.dll y me puse a explorar el espacio de nombres Microsoft.SharePoint.WebControls. Y encontré la joya que buscaba.

El control en cuestión es DateTimeControl. La documentación existente apesta, como suele pasar con SharePoint. Pero en el caso de este control no hay mucho que averiguar, y en el peor de los casos nuestro buen amigo Reflector nos dice todo lo que tenemos que saber.

En primer lugar, la propiedad más importante y la más obvia es SelectedDate. Esta propiedad obtiene o establece la fecha que el calendario tenga seleccionada. MinDate y MaxDate establecen los rangos válidos para una fecha. Por supuesto, no podía faltar AutoPostBack para determinar si el control debe hacer un post back cuando haya un cambio en la fecha seleccionada.

Tambén existen algunas propiedades para controlar la forma en que se captura y muestra la fecha. Por ejemplo, ShowWeekNumber controla si se muestra o no el número de semana del año, DateOnly y TimeOnly indican si solo se mostrarán fechas o tiempo, HoursMode24 indica si el tiempo mostrado será en formato de 24 horas, etc.

En el caso de mi WebPart, mi código luce algo así:

protected override void CreateChildControls()
{
    try
    {            
        _startDateText = new DateTimeControl();
        _startDateText.ID = "_startDateText";
        _startDateText.DateOnly = true;
        _startDateText.SelectedDate = DateTime.Now;
        ...etc....
    }
    catch
    {
        ...etc....
    }
}

Y así es como se ve el WebPart en acción.

DateTimeControl2

¡Así sí gana la gente! Moraleja: siempre revisa los controles que SharePoint tiene antes de crear los tuyos propios… vale la pena, creeme.

Anuncios
Categorías:C#, SharePoint, Tips y trucos Etiquetas:
  1. Eric
    mayo 23, 2015 en 6:35 pm

    Amigo acabaste como implento tu codigo

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s