2010-12-09 36 views
1

Je suis (essayant) d'utiliser le DevExpress XtraScheduler pour - (ne demandez pas pourquoi) pour créer un rendez-vous sans réellement utiliser le contrôle du planificateur sous la forme J'ai essayé de faire comme ça ...XtraScheduler créer un rendez-programme par programme

conn = new SqlConnection("connectionstring"); 
    conn.Open(); 

int ResourceId = 18; 

    AppointmentsAdapter = new SqlDataAdapter(); 

    AppointmentsAdapter.SelectCommand = new SqlCommand("spGetAppointmentsForResourceById", conn); 
    AppointmentsAdapter.SelectCommand.CommandType = CommandType.StoredProcedure; 
    AppointmentsAdapter.SelectCommand.Parameters.AddWithValue("@ResourceID", ResourceID); 


    DataSet ds = new DataSet(); 
    AppointmentsAdapter.Fill(ds); 

    SchedulerStorage store = new SchedulerStorage(); 
    store.Appointments.DataSource = ds.Tables[0]; 
    store.Appointments.Mappings.Start = "StartDate"; 
    store.Appointments.Mappings.End = "EndDate"; 
    //etc etc 

    store.Appointments.CustomFieldMappings.Add(new AppointmentCustomFieldMapping("fkcase", "fkcase")); 
    //.. etc etc 

    AppointmentBaseCollection appts = store.GetAppointments(dateFrom, dateTo); 

cela fonctionne bien - ie. il me renvoie les rendez-vous entre les dates .. génial .. mais ce que je suis en train d'essayer de faire est d'interroger tous les rendez-vous afin que je puisse travailler si un nouveau peut être ajouté à un datetime particulier.

id aiment être en mesure de faire

AppointmentsAdapter.InsertCommand = new SqlCommand("spInsertAppointment", conn); 
    AppointmentsAdapter.InsertCommand.Parameters.Add("@Type", SqlDbType.Int); 
    AppointmentsAdapter.InsertCommand.Parameters.Add("@StartDate", SqlDbType.DateTime); 
    AppointmentsAdapter.InsertCommand.Parameters.Add("@EndDate", SqlDbType.DateTime); 
    //...etc etc 

puis faire

Appointment apt = store.CreateAppointment(DevExpress.XtraScheduler.AppointmentType.Normal); 
apt.Start = DateTime.Today.AddHours(8); 
apt.Duration = TimeSpan.FromHours(1); 
apt.Subject = "Subject"; 
apt.Description = "Description"; 
store.Appointments.Add(apt); 

mais il semble que le magasin - même si je l'ai mis en place les correspondances, etc, et l'adaptateur refuse de réellement ajoutez le nouveau rendez-vous. J'imagine que je fais juste quelque chose de mal, peut-être que je ne peux pas le faire de cette façon? juste pour confirmer, je n'ai pas réellement un contrôle de planificateur dans la forme, et ne veux pas un.

J'essaye juste de donner à l'utilisateur une liste de rendez-vous possibles pour une ressource/daterange particulière et puis une fois que l'utilisateur en a choisi un, sauver réellement le rendez-vous choisi loin.

toute aide très heureusement reçue.

grâce

nat

Répondre

2

Je suggère que vous vous abonnez aux AppointmentsChanged, événements AppointmentsInserted et AppointmentsDeleted du SchedulerStorage, mettre en œuvre un seul gestionnaire pour tous ces événements et enfin appeler la méthode de mise à jour de dataAdapter dans ce gestionnaire d'événements :

void schedulerStorage_AppointmentsChanged(object sender, DevExpress.XtraScheduler.PersistentObjectsEventArgs e) { 
      // the code below to apply changes. 
      myTableAdapter.Update(this.myDBDataSet); 
      myDBDataSet.AcceptChanges(); 
    }