Yo tengo este ejemplo que usa mi calendario que desarrolle utilizando VB.net y me funciona muy bien. El calendario es un popup calendar y no me ocupa espacio en el Datagrid a la hora de mostrarse. Lo unico que muestra es una imagen que al ser presionada muestra el calendario. Lo otro que hace el calendario es que uno asigna el Textbox que va a recibir el valor y el calendario toma control de este, lo que quiere decir que la fecha es validada sin tener que abrir el calendario, en otras palabras yo puedo escribir algo en el textbox y este es validado. Fijarse en el
<EditItemTemplate> del Ejemplo.
Mi Calendario es el RJS.PopCalendar 3.0 (3.0.4) y se encuentra publicado en GotDotNet en los user samples.
La ruta es
http://code.msdn.microsoft.com/RJSPopCalendar Código HTML:
<asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False" Width="734px" OnEditCommand="DataGrid1_EditCommand"
OnCancelCommand="DataGrid1_CancelCommand" OnUpdateCommand="DataGrid1_UpdateCommand" BorderWidth="1px"
BorderStyle="None" BorderColor="#999999" BackColor="White" CellPadding="3" GridLines="Vertical"
Height="182px">
<FooterStyle ForeColor="Black" BackColor="#CCCCCC"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#008A8C"></SelectedItemStyle>
<AlternatingItemStyle BackColor="Gainsboro"></AlternatingItemStyle>
<ItemStyle ForeColor="Black" BackColor="#EEEEEE"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#000084"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="Key" ReadOnly="True" HeaderText="Llave"></asp:BoundColumn>
<asp:BoundColumn DataField="FirstName" HeaderText="Nombre"></asp:BoundColumn>
<asp:BoundColumn DataField="LastName" HeaderText="Apellido"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="Fecha de Nacimiento">
<ItemTemplate>
<%# DataBinder.Eval(Container, "DataItem.birthDate") %>
</ItemTemplate>
<EditItemTemplate>
<asp:textbox id="txtDate" runat="server"></asp:textbox>
<rjs:popcalendar id="PopCalendar1" runat="server" Control="txtDate"
BorderWidth="1px" BorderStyle="Solid" BorderColor="Black"
BackColor="White" Culture="es-PA Spanish (Panama)"
RequiredDate="True" RequiredDateMessage="La Fecha es Requerida"
ToolTip="Fecha de Cumpleaños" Separator="-" ShowGoodFriday="Holiday"
ShowCarnival="Holiday" From-Message="Fuera de Rango" To-Today="True"
To-Message="Fuera de Rango" InvalidDateMessage="Día Inválido"
Shadow="True" ShowWeekend="True" Move="True" Format="dd mmmm yyyy"
Fade="0.5" CarnivalText="Martes de Carnaval"
GoodFridayText="Viernes Santo" ShowWeekNumber="True"
SelectedDate='<%#DataBinder.Eval(Container, "DataItem.BirthDate")%>'>
</rjs:popcalendar>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<ItemTemplate>
<asp:LinkButton id="ButtonEdit" runat="server" CausesValidation="false" CommandName="Edit" Text="Edición"></asp:LinkButton>
<asp:LinkButton id="ButtonDelete" runat="server" CausesValidation="false" CommandName="Delete" Text="Eliminar"></asp:LinkButton>
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton id="ButtonUpdate" runat="server" CausesValidation="True" CommandName="Update" Text="Actualizar"></asp:LinkButton>
<asp:LinkButton id="ButtonCancel" runat="server" CausesValidation="false" CommandName="Cancel" Text="Cancelar"></asp:LinkButton>
</EditItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle HorizontalAlign="Center" ForeColor="Black" BackColor="#999999" Mode="NumericPages"></PagerStyle>
</asp:datagrid>