Hi,
I'm using RadScheduler control with AdvancedInsertTemplate and AvancedEditTemplate.
I'm using the same ascx to declare the template, and when I create an Appointment it works correctly, but when I try to edit it or another appointment I don't find the new values in e.ModifiedAppointment object but in e.Appointment.
I've fired the event AppointmentCommand e AppointmetInsert, AppointmentUpdate.
In the first event I check the CommandName to find the correct template in which find the controls (eg: textbox, dropdownlist)
After fire the AppointmetInsert and it works.
In EditMode this not works.
This is my ASCX codebehind
And this are the three events in ASPX code behind
Where I wrong?
Best Regards
I'm using RadScheduler control with AdvancedInsertTemplate and AvancedEditTemplate.
I'm using the same ascx to declare the template, and when I create an Appointment it works correctly, but when I try to edit it or another appointment I don't find the new values in e.ModifiedAppointment object but in e.Appointment.
I've fired the event AppointmentCommand e AppointmetInsert, AppointmentUpdate.
In the first event I check the CommandName to find the correct template in which find the controls (eg: textbox, dropdownlist)
After fire the AppointmetInsert and it works.
In EditMode this not works.
This is my ASCX codebehind
/// <summary> /// Restituisce o imposta la modalità di accesso alla form /// </summary> [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)] public SchedulerFormMode Modalita { get; set; } // qui non è necessario usare il viewstate perchè non viene agganciata da un datareader /// <summary> /// Restituisce o imposta il titolo della form /// </summary> [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)] public string FormTitle { get; set; } // qui non è necessario usare il viewstate perchè non viene agganciata da un datareader /// <summary> /// Restituisce o imposta l'id dell'attività /// </summary> [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)] public int AppointmentId { get { return Convert.ToInt32(this.ViewState["AppointmentId"]); } set { this.ViewState["AppointmentId"] = value; } } /// <summary> /// Restituisce o imposta l'oggetto dell'attività /// </summary> [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)] public string Subject { get { return this.ViewState["Subject"].ToString(); } set { this.ViewState["Subject"] = value; } } /// <summary> /// Restituisce o imposta l'autore dell'attività /// </summary> [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)] public string Author { get { return this.ViewState["Author"].ToString(); } set { this.ViewState["Author"] = value; } } /// <summary> /// Restituisce o imposta a descrizione dell'attività /// </summary> [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)] public string Description { get { return this.ViewState["Description"].ToString(); } set { this.ViewState["Description"] = value; } } /// <summary> /// Restituisce o imposta la data e l'ora di inizio dell'attività /// </summary> [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)] public DateTime Start { get { return Convert.ToDateTime(this.ViewState["Start"]); } set { this.ViewState["Start"] = value; } } /// <summary> /// Restituisce o imposta la data e l'ora di fine dell'attività /// </summary> [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)] public DateTime End { get { return Convert.ToDateTime(this.ViewState["End"]); } set { this.ViewState["End"] = value; } } /// <summary> /// Restituisce o imposta la regola di ripetizione dell'attività /// </summary> [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)] public string RecurrenceRule { get { return this.ViewState["RecurrenceRule"].ToString(); } set { this.ViewState["RecurrenceRule"] = value; } } /// <summary> /// Restituisce o imposta la regole di promemoria dell'attività /// </summary> [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)] public string Reminders { get { return this.ViewState["Reminders"].ToString(); } set { this.ViewState["Reminders"] = value; } }And this are the three events in ASPX code behind
protected void Scheduler_AppointmentUpdate(object sender, AppointmentUpdateEventArgs e) { SchedulerTask taskToEdit = Scheduler[Convert.ToInt32(e.Appointment.ID)]; taskToEdit.Comments = e.ModifiedAppointment.Description; taskToEdit.StartTime = e.ModifiedAppointment.Start; taskToEdit.EndTime = e.ModifiedAppointment.End; taskToEdit.Subject = e.ModifiedAppointment.Subject; taskToEdit.Tipologia = e.ModifiedAppointment.Resources.GetResourceByType("Tipologia") != null ? (TipologiaTask)Convert.ToInt32(e.ModifiedAppointment.Resources.GetResourceByType("Tipologia").Key) : TipologiaTask.Varie_Note; taskToEdit.Reminder = e.ModifiedAppointment.Reminders.ToString(); taskToEdit.Recurrence = e.ModifiedAppointment.RecurrenceRule; taskToEdit.RecurrenceParentID = e.ModifiedAppointment.RecurrenceParentID; taskToEdit.Stato = StatoTask.MODIFICA; taskToEdit.Salva(); this.schGestioneLocazioni.DataSource = Scheduler.CopyToDataTable(); } protected void Scheduler_AppointmentInsert(object sender, AppointmentInsertEventArgs e) { try { // recupero la tipologia selezionata dall'utente tramite la finestra modale di editing // se non ha impostato nulla imposto io una tipologia di default TipologiaTask tipologia = e.Appointment.Resources.GetResourceByType("Tipologia") == null ? TipologiaTask.Property_Management_Note : (TipologiaTask)Convert.ToInt32(e.Appointment.Resources.GetResourceByType("Tipologia").Key); string autore = e.Appointment.Attributes["Autore"] == null ? SchedulerConstants.Autori.SCH_AUTORE_SYS : e.Appointment.Attributes["Autore"].ToString(); SchedulerTask taskToAdd = Scheduler.NewSchedulerTask( e.Appointment.Subject, // oggetto e.Appointment.Description, // descrizione e.Appointment.Start, // inizio e.Appointment.End, // fine tipologia, // tipologia e.Appointment.Reminders.ToString(), // promemoria (basta fare il ToString della Collection e ottengo il reminder formattato e.Appointment.RecurrenceRule, // regola di ricorrenza e.Appointment.RecurrenceParentID, // parent ID StatoTask.INSERIMENTO, SchedulerTaskAvvisato.NO, autore, DateTime.Now); Scheduler.Add(taskToAdd); this.schGestioneLocazioni.DataSource = Scheduler.CopyToDataTable(); RadAjaxManager.GetCurrent(this).Alert("Appointment was inserted successfully."); } catch (SqlForeignKeyConstraintException ex) { RadAjaxManager.GetCurrent(this).Alert(ex.Message); } catch (SqlException ex) { RadAjaxManager.GetCurrent(this).Alert(ex.Message); } catch (Exception) { RadAjaxManager.GetCurrent(this).Alert(MessaggiException.Exception); } } protected void Scheduler_AppointmentCommand(object sender, AppointmentCommandEventArgs e) { Control SchedulerAdvancedForm; switch (e.CommandName.ToLower()) { case "insert": SchedulerAdvancedForm = e.Container.FindControl("advTemplateInsert"); break; case "update": Scheduler.ReadTasks(); // rileggo per avere eventuali nuove task inserite sul db SchedulerAdvancedForm = e.Container.FindControl("advTemplateEdit"); break; default: SchedulerAdvancedForm = e.Container.FindControl("advTemplateInsert"); break; } if (SchedulerAdvancedForm != null) { e.Container.Appointment.Subject = ((RadTextBox)SchedulerAdvancedForm.FindControl("txtAdvInsertSubject")).Text; e.Container.Appointment.Description = ((RadTextBox)SchedulerAdvancedForm.FindControl("txtAdvInsertDescription")).Text; e.Container.Appointment.Attributes["Autore"] = ((RadTextBox)SchedulerAdvancedForm.FindControl("txtAdvInsertAuthor")).Text; e.Container.Appointment.Start = ((RadDateTimePicker)SchedulerAdvancedForm.FindControl("rtpAdvInsertStartTime")).SelectedDate.Value; e.Container.Appointment.End = ((RadDateTimePicker)SchedulerAdvancedForm.FindControl("rtpAdvInsertEndTime")).SelectedDate.Value; } }Where I wrong?
Best Regards
