2010-12-09 138 views
1

我(試圖)使用DevExpress XtraScheduler來 - (不要問爲什麼)創建一個約會,而不用實際使用調度控制的形式 我試圖做到這樣...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); 

但現在看來,商店 - 儘管我已成立的映射等和適配器拒絕實際上添加新的約會。 我想我只是做錯了什麼,也許我不能這樣做呢? 只是爲了確認,我實際上沒有在表單中的調度器控件,並且不想要一個。

我只是想給用戶一個特定資源/日期範圍的可能約會列表,然後一旦用戶選擇了一個,實際上保存所選的約會。

任何幫助非常高興地收到。

感謝

NAT

回答

2

我建議你訂閱SchedulerStorage的AppointmentsChanged,AppointmentsInserted和AppointmentsDeleted活動,實現對所有這些事件的單一處理,最後調用DataAdapter的更新方法,在此事件處理程序:

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