2010-09-01 20 views
9

Por alguna razón, no se actualizará ningún CalendarExtenders en un sitio ASP.NET en el que se esté trabajando. Ya he comprobado todos los lugares obvios (como AutoPostBack y AutoEventHandler). El problema es que cuando selecciono una fecha del Calendario y la publico en el formulario, se está actualizando el TextBox que se está ampliando, pero la fecha del extensor del calendario simplemente no se está actualizando (por ejemplo, SelectedDate sigue siendo el mismo que antes) . Busqué en Google cualquier posible solución pero ninguna ha funcionado.ASP.NET Ajax CalendarExtender no actualizará el valor SelectedDate

Aquí está el código:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" 
    AutoEventWireup="true" CodeBehind="ThePage.aspx.cs" Inherits="ThePage" %> 

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> 

<asp:TextBox runat="server" ID="txtBlah" /> 
<asp:CalendarExtender ID="txtBlahExtender" runat="server" TargetControlID="txtBlah" Format="MMMM d, yyyy" /> 
<asp:Button runat="server" ID="btnSubmit" CausesValidation="false" /> 

y el código subyacente:

public partial class ThePage : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       txtBlahExtender.SelectedDate = DateTime.Today.AddDays(4); 
      } 
     } 

     protected void btnSubmit_Click(object sender, EventArgs e) 
     { 
     //do postback actions   
     } 
    } 
} 

Cuando mi código llega a "hacer las acciones de devolución de datos", txtBlahExtender.SelectedDate es SIEMPRE DateTime.Today.AddDays (4) . Simplemente no registra el cambio.

¿Alguna idea?

Gracias, Logain Smith

(¿Es posible dar formato a una pregunta?)

+0

Me encuentro con el mismo problema – Starwfanatic

Respuesta

15

Después de buscar en Internet innumerables veces, no parece haber una solución para este problema. Una solución (si quieres llamarlo así) podría ser asignar manualmente SelectedDate mediante la conversión de la caja de texto (esto requiere que establezca el formato en el marcado, sin embargo):

if(IsPostBack) { 
blahCalendarExtender.SelectedDate = DateTime.ParseExact(blah.Text, blahCalendarExtender.Format, null); 
// do postback actions 
} else { 
// for instance, maybe initalize blahCalendarExtender to today 
blahCalendarExtender.SelectedDate = DateTime.Today; 
} 

(Donde bla es el texto Control y blahCalendarExtender es el extensor que se extiende a bla)

Parece que el control calendarExtender debería ser lo suficientemente inteligente como para hacerlo solo.

+0

+1 Arreglo muy útil. –

+1

Configuré ** blahCalendarExtender.SelectedDate = null; ** Así evito los problemas si el usuario inserta alguna fecha no verificable en ** blah.Text **. La última fecha elegida por el usuario se completa automáticamente por el estado de vista. – Ephedra

0

Asegúrese de poner el TexBox y extensor en un UpdatePanel (no veo esto en el código tu has previsto).

+0

Actualización - no funcionó. Después de agregar el UpdatePanel, el valor se revierte inmediatamente, por lo que el valor inicial y se niega a dejarme cambiar. – logain

0

He encontrado una solución muy extraña para esto.

No inicialice el valor para el cuadro de texto que tiene extensión de calendario adjunta. Mantenga el cuadro de texto en blanco.

Cuestiones relacionadas