XtraScheduler создает назначение программно - PullRequest
1 голос
/ 09 декабря 2010

Я (пытаюсь) использовать DevExpress XtraScheduler для - (не спрашиваю почему) создания встречи без фактического использования элемента управления планировщика в форме Я пытался сделать это так ...

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);

это работает нормально - т.е. он возвращает мне встречи между датами .. здорово .. но то, что я на самом деле пытаюсь сделать, это запросить все встречи, чтобы я мог определить, можно ли добавить новую в определенное время.

ID хотел бы иметь возможность сделать

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

, а затем сделать

 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);

но похоже, что хранилище - даже если я настроил сопоставления и т. Д., А адаптер отказывается добавлять новое назначение. Я предполагаю, что я просто делаю что-то не так, но, может быть, я не могу сделать это таким образом? просто чтобы подтвердить, у меня фактически нет элемента управления планировщиком в форме, и я не хочу его.

Я просто пытаюсь предоставить пользователю список возможных встреч для определенного ресурса / диапазона дат, а затем, как только пользователь выберет одно, фактически сохранить выбранное назначение.

1 Ответ

2 голосов
/ 16 декабря 2010

Я предлагаю подписаться на события AppointmentsChanged, AppointmentsInserted и AppointmentsDeleted SchedulerStorage, реализовать единый обработчик для всех этих событий и, наконец, вызвать метод Update dataAdapter в этом обработчике событий:

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