gpt4 book ai didi

c# - Telerik Scheduler with asp.net - 在一个显示器中显示每个人的 session

转载 作者:行者123 更新时间:2023-11-30 18:03:16 37 4
gpt4 key购买 nike

我正在创建一个图表,其中列出了人员(“倡导者”)及其特定日期的 session ,所有这些都在一个 View 中。我使用的是 Telerik 的 RadScheduler 控件(2011 年第二季度),来自他们的 RadControls for ASP.NET AJAX 包。

我在 Advocates 和 Meetings 之间建立了 M:M 关系。因此,我的数据库表被命名为 GRS_Advocate , GRS_Meeting , 和 GRS_AdvocateToMeeting .

我想要完成的是在 Y 轴上有一个倡导者列表,在 X 轴顶部有一个时间(以一小时为增量)。我在 Telerik 网站上找到的最接近的示例是 http://demos.telerik.com/aspnet-ajax/scheduler/examples/timelineview/defaultcs.aspx在这里,这是我试图用我的数据模拟的。

这是我想要的视觉表示:

Desired look of scheduler control

现在,这是我实际得到的屏幕截图:

Actual scheduler control rendered from the code below (included below)

这两个“重要 session ”记录针对的是同一次 session ,计划有两位不同的倡导者参加。此 session 应在两条不同的线上显示,如第一张图片所示,每个计划参加的倡导者各显示一次。

从这里到那里怎么走?我怀疑问题可能在 <ResourceTypes> 内我在网格中的标签。

这是我得到的代码 - 我也会分享 C#,尽管它在这里可能不那么重要。

<telerik:RadScheduler runat="server" ID="RadScheduler1" SelectedView="TimelineView"
DayStartTime="09:00:00" DayEndTime="19:00:00" DataSourceID="EventsDataSource"
DataKeyField="ID" DataSubjectField="Subject" DataStartField="Start" DataEndField="End"
OverflowBehavior="Expand"
Localization-HeaderMultiDay="Work Week" OnNavigationComplete="RadScheduler1_NavigationComplete">
<AdvancedForm Modal="true" />
<ResourceTypes>
<telerik:ResourceType KeyField="Adv_AdvocateID" Name="Advocate" TextField="Adv_FullName" ForeignKeyField="Adv_AdvocateID"
DataSourceID="AdvocatesDataSource" />
</ResourceTypes>
<TimelineView UserSelectable="true" GroupBy="Adv_AdvocateID" GroupingDirection="Horizontal" />
<MultiDayView UserSelectable="true" />
<DayView UserSelectable="false" />
<WeekView UserSelectable="false" />
<MonthView UserSelectable="false" />
</telerik:RadScheduler>

</asp:Panel>
<asp:SqlDataSource ID="EventsDataSource" runat="server"
ProviderName="System.Data.SqlClient" ConnectionString="<%$ ConnectionStrings:GRSConnectionString %>"
SelectCommand="select m.[Id], m.[Room], m.[Start], m.[End], m.[Notes], m.[Subject], a.[Adv_AdvocateID], a.[Adv_FullName] from GRS_Meeting m join GRS_AdvocateToMeeting am on am.Meeting = m.Id join GRS_Advocate a on am.advocate = a.Adv_AdvocateID">
</asp:SqlDataSource>
<asp:SqlDataSource ID="AdvocatesDataSource" runat="server"
ProviderName="System.Data.SqlClient" ConnectionString="<%$ ConnectionStrings:GRSConnectionString %>"
SelectCommand="SELECT [Adv_AdvocateID],[Adv_FullName] FROM [GRS_Advocate]">
</asp:SqlDataSource>

还有 C# 代码,如果您有兴趣:

private void Page_Load(object sender, EventArgs e)
{
if (RadScheduler1.SelectedView == SchedulerViewType.TimelineView)
{
RadScheduler1.TimelineView.SlotDuration = TimeSpan.Parse(DurationList.SelectedValue);
RadScheduler1.TimelineView.TimeLabelSpan = int.Parse(TimeLabelSpan.SelectedValue);
RadScheduler1.TimelineView.ColumnHeaderDateFormat = ColumnHeaderDateFormat.SelectedValue;
RadScheduler1.TimelineView.NumberOfSlots = int.Parse(NumberOfSlotsList.SelectedValue);
RadScheduler1.TimelineView.GroupingDirection = (GroupingDirection)Enum.Parse(typeof(GroupingDirection), GroupingDirection.SelectedValue);
}
else if (RadScheduler1.SelectedView == SchedulerViewType.MultiDayView)
{
RadScheduler1.MultiDayView.NumberOfDays = int.Parse(NumberOfDaysList.SelectedValue);
RadScheduler1.FirstDayOfWeek = (DayOfWeek)int.Parse(FirstDayOfWorkWeekList.SelectedValue);
RadScheduler1.SelectedDate = RadScheduler1.SelectedDate.AddDays((int)RadScheduler1.FirstDayOfWeek - (int)RadScheduler1.SelectedDate.DayOfWeek);

}
}
protected void RadScheduler1_NavigationComplete(object sender, SchedulerNavigationCompleteEventArgs e)
{
if (RadScheduler1.SelectedView == SchedulerViewType.MultiDayView)
{

RadScheduler1.MultiDayView.NumberOfDays = int.Parse(NumberOfDaysList.SelectedValue);
RadScheduler1.FirstDayOfWeek = (DayOfWeek)int.Parse(FirstDayOfWorkWeekList.SelectedValue);

//SelectedDate adjustment to make a Work Week view from Multi-day view
int WorkWeekAdjustmentTimeShift = (int)RadScheduler1.FirstDayOfWeek - (int)RadScheduler1.SelectedDate.DayOfWeek;
if (e.Command == SchedulerNavigationCommand.NavigateToNextPeriod)
{
if (WorkWeekAdjustmentTimeShift < 0)
WorkWeekAdjustmentTimeShift += 7;

}
else if (e.Command == SchedulerNavigationCommand.NavigateToPreviousPeriod)
{
if (WorkWeekAdjustmentTimeShift > 0)
WorkWeekAdjustmentTimeShift -= 7;
}
RadScheduler1.SelectedDate = RadScheduler1.SelectedDate.AddDays(WorkWeekAdjustmentTimeShift);
}
}

我已经为此工作了一段时间,但我无法超越这一点。任何帮助将不胜感激。

更新

在评论中有人指出上图是日 View ,我应该使用时间轴。那是对的;但是,当我查看时间轴 View 时,我的拥护者未列出。事实上,只有 x 轴上的时间轴,根本没有 y 轴,也没有网格显示:

Timeline Scheduler

最佳答案

要模仿手头的演示,您需要使用“时间轴 View ”,它可以在调度程序本身的“SelectedView”属性中选择。

此外,要按 Adv_AdvocateID 分组,您需要始终引用您在“ResourceTypes”属性字段中提供的“名称”字段。

-:)

关于c# - Telerik Scheduler with asp.net - 在一个显示器中显示每个人的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7405514/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com