【问题标题】:DevExpress Scheduler is not filled with data from SQL Server databaseDevExpress 调度程序未填充来自 SQL Server 数据库的数据
【发布时间】:2015-12-01 00:54:35
【问题描述】:

我想用来自数据库存储过程的数据填充 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 中将 Appointments Data Source 分配给代表我的存储过程的 reservationsBindingSource,我选择了如下映射:

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

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

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

不知何故,调度程序总是只显示一条记录,即使还有很多……问题出在哪里?..

【问题讨论】:

  • 您确定没有遗漏任何财产吗?您是否也设置了约会数据源和资源数据源属性???如果您想以自定义方式创建这些,请使用另一种方法来填充调度程序控件。
  • 为什么即使没有资源它也会填充那条记录?我想先在没有资源的情况下测试它

标签: c# sql-server winforms devexpress scheduler


【解决方案1】:

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

我建议您阅读有关Data Binding 如何与调度程序控件一起使用的文档。

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

Lesson 5 - Bind a Scheduler to MS SQL Database at Design Time

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

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

您还可以以自定义方式创建约会或资源。将 Resource Data Source 留空,然后手动将此创建资源放置在 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);

参考资料: Bind data to xtrascheduler programatically with resource.

希望对您有所帮助..

【讨论】:

    猜你喜欢
    • 2013-06-02
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多