Hola Lista.

     Tengo un sitio en net 2008, en una de las paginas tengo un control
asp:Calendar que al darle click a los distintos días ejecuta un SP y trae 1
registro de la Base de datos. Ese registro tiene 2 campos y el segundo lo
muestro en un label.

    Esto anda perfecto y hace que se puedan mostrar mensajes para distintos
días. El problema surge cuando agrego un asp:UpdatePanel. Cuando hago click
sobre el calendario la primera vez funciona perfectamente pero al darle por
segunda vez (en otro día o semana) me sale el siguiente error:

Linea:        605
Carácter:    13
Error:        Sys.WebForms.PageRequestManagerServerErrorExeption: Argumento
de devolución o de devolución de llamadas no valido. La valuación de eventos
se habilita usando <Pages enableEventValidation="true"> en la conflagración
o <%@ Pages enableEventValidation="true" %> en una pagina. Por motivos de
seguridad, esta característica comprueba que los argumentos pasados a
eventos de devolución o de devolución de llamadas se originan desde el
control del servidor que inicialmente los proceso. si los datos son validos
y son los que se esperaba, utilice el método
ClientScriptManager.RegisterForEventValidation para registrar los datos de
devolución o de devolución de llamadas para su valuación.
Codigo:        0

     Para colmo después que me da el error si recargo la pagina funciona
perfectamente sin importar en cuantos links del calendar clikee.

    Ya probé de agregar enableEventValidation="true" pero sigue todo igual,
busque en google y solo encuentro lo de enableEventValidation="true".

    Desde ya agradezco cualquier ayuda.

    Saludos Luis


PD: Pego parte del código

*En la Pagina:*

            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>

          ....................


                <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                    <ContentTemplate>

                            <asp:Calendar ID="Calendar1" runat="server"
BackColor="#f1eed3"
                                BorderColor="White" BorderWidth="1px"
Font-Names="Verdana" Font-Size="9pt"
                                ForeColor="Black" Height="190px"
NextPrevFormat="ShortMonth" Width="196px"
                                ondayrender="Calendar1_DayRender"

onselectionchanged="Calendar1_SelectionChanged"

onvisiblemonthchanged="Calendar1_VisibleMonthChanged" TitleFormat="Month"
                                DayNameFormat="FirstTwoLetters"
SelectWeekText="*" SelectionMode="DayWeek"
                                CellPadding="2" EnableViewState="true">
                                <OtherMonthDayStyle ForeColor="#999999" />
                                <SelectedDayStyle BackColor="#FFFFCC"
ForeColor="Black" BorderColor="Black"
                                    BorderStyle="Solid" BorderWidth="1px" />
                                <NextPrevStyle Font-Bold="True"
Font-Size="8pt" ForeColor="#333333"
                                    VerticalAlign="Bottom" />
                                <DayHeaderStyle Font-Bold="True"
Font-Size="8pt" />
                                <TitleStyle BackColor="#f1eed3"
BorderColor="Black" BorderWidth="4px"
                                    Font-Bold="True" Font-Size="12pt"
ForeColor="#333399" />
                            </asp:Calendar>


                           <asp:Label ID="lblMsgTitulo" runat="server"
Text=""></asp:Label>

                    </ContentTemplate>
             </asp:UpdatePanel>




*En archivo .cs*


    protected void Calendar1_SelectionChanged(object sender, EventArgs e)
    {
        // al seleccionar un dia

        Entidades.Usuario us = (Entidades.Usuario)Session["USLOG"];

        if (Calendar1.SelectedDates.Count == 1) // Se selecciono solo 1 dia
        {
            this.SeleccionDia(us);
        }
        else
        {
            this.SeleccionSemana(us);
        }
    }


    protected void SeleccionSemana(Entidades.Usuario us)
    {
        BLLs.SemanasBLL oBS = new BLLs.SemanasBLL();
        int nSemana = ((Calendar1.SelectedDates[0].DayOfYear / 7) + 1) ;

        Entidades.Semana s = oBS.GetXId(us.Id,
Calendar1.SelectedDates[0].Year, nSemana);

        this.lblMsgTitulo.Text = "Semana Numero " + nSemana.ToString() +
"<br />" +
                                  "<span style=\"font-size:10px\"> del " +
Calendar1.SelectedDates[0].Date.ToShortDateString() +
                                  " al " +
Calendar1.SelectedDates[6].Date.ToShortDateString() + "</span>";

        this.lblMensaje.Text =
Aplicacion.Servicios.Strings.HTMLTags(s.Texto);
    }

    protected void SeleccionDia(Entidades.Usuario us)
    {
        DateTime dt = Calendar1.SelectedDate;
        Entidades.Dia d = oDB.GetXId(us.Id, dt.Year, dt.Month, dt.Day);

        this.lblMsgTitulo.Text = dt.ToLongDateString();
        this.lblMensaje.Text =
Aplicacion.Servicios.Strings.HTMLTags(d.Texto);
    }

Responder a