DevExpress计划程序未填充SQL Server数据库中的数据

本文关键字:数据库 数据 Server SQL 计划 程序 填充 DevExpress | 更新日期: 2023-09-27 18:25:04

我想用数据库存储过程中的数据填充XtraScheduler。调度程序中只有一条记录,我不明白为什么。存储过程是正确的,并返回8条记录。

这是我的存储过程:

ALTER PROCEDURE [dbo].[Reservations]
AS
BEGIN
    SELECT  
        HallSeat.HallGroupID, Color, Price, SeatRow, SeatRowLetter, 
        SeatNumber, SeatNumberLetter, ReservationTime, IsReserved 
    FROM 
        HallSeat
    LEFT JOIN 
        HallGroup ON HallGroup.HallGroupID = HallSeat.HallGroupID
    LEFT JOIN 
        Hall ON HallGroup.HallID = Hall.HallID  
    WHERE 
        (IsReserved = 'true') 
END

我在Scheduler中将约会数据源分配给reservationsBindingSource,它代表我的存储过程,我选择了这样的映射:

https://i.stack.imgur.com/E6btH.png

在代码中,我像这样填写reservationDataAdapter(它是自动创建的):

this.reservationsTableAdapter.Fill(this.filharmonijaDataSet1.Reservations);

不知怎的,调度程序总是只显示一条记录,尽管还有很多。。。问题出在哪里?。。

DevExpress计划程序未填充SQL Server数据库中的数据

我怀疑您的代码在将XtraScheduler与SQL数据库绑定时缺少了一些东西。你需要熟悉DevExpress的工作方式,对于调度器,你唯一需要做的就是了解约会数据源和资源数据源的日历映射。

我建议您仔细阅读有关数据绑定如何使用Scheduler控件的文档。

如果您在设计时分配数据源,请按照以下文档链接进行参考,然后相应地修改您的数据源:

第5课-在设计时将调度器绑定到MS SQL数据库

它需要设置两个属性来显示约会:

  1. 约会数据源
  2. 资源数据源

您还可以以自定义方式创建约会或资源。将资源数据源留空,然后将此创建资源手动放置在Form_Load事件或其他位置:

ApptResourcesBO.fillAll();
Object resourceID = new Object();
DataTable dtSyatemUsers = ApptResourcesBO.getAll();
foreach (DataRow drUser in dtSyatemUsers.Rows)
{
resourceID = Convert.ToInt32(drUser["apr_UniqueID"]);
Resource resourceUser = new Resource(resourceID, Convert.ToString(drUser["apr_ResourceName"]));
schedulerStorage.Resources.Add(resourceUser);
}

您也可以通过编程方式将约会添加到XtraScheduler中。请查看以下代码:

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

参考文献:使用资源以程序方式将数据绑定到extrascheduler。

希望能帮上忙。。