2011-09-13 2 views
3

저는 사람들 ("옹호자") 목록과 특정 날짜의 회의를 모두 한 화면에서 만들려하고 있습니다. 나는 ASP.NET AJAX 패키지의 RadControls에서 Telerik의 RadScheduler 컨트롤 (2011 Q2)을 사용하고 있습니다.asp.net이있는 Telerik Scheduler - Everyones 회의를 하나의 디스플레이에 표시합니다.

나는 옹호 모임과 모임 사이에 M : M 관계가 있습니다. 따라서 데이터베이스 테이블의 이름은 GRS_Advocate, GRS_MeetingGRS_AdvocateToMeeting입니다.

달성하려는 목표는 X 축 상단에 Y 축 및 시간 (1 시간 단위로 증가)의 지지자 목록을 작성하는 것입니다. 내가 찾을 수있는 Telerik의 웹 사이트에서 가장 가까운 예제는 http://demos.telerik.com/aspnet-ajax/scheduler/examples/timelineview/defaultcs.aspx이며 여기가 내 데이터를 모방하려고합니다.

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

그 두 "중요한 회의 :

이제 Desired look of scheduler control

, 여기에 내가 실제로 얻고 무엇을 screengrab가있다 : 여기

는 내가 좋아하는 것이 무엇의 시각적 표현이다 "기록은 동일한 회의인데이며 두 명의 다른 옹호자가 참석할 예정입니다. 이 회의는 첫 번째 그림에서 보여 지듯이 참석할 예정인 각 지지자에 대해 한 번씩 두 가지 다른 줄에 표시해야합니다.

여기에서 어떻게 접근합니까? 내가 격자에있는 <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); 
     } 
    } 

. 어떤 도움이라도 대단히 감사하겠습니다.

UPDATE는 위의 이미지는 날보기에 지적 된 의견에

, 나는 타임 라인을 사용해야합니다. 맞아요; 그러나 타임 라인보기를 볼 때 내 옹호자는 나열되지 않습니다. 사실, 아니 y 축과 x 축에 타임 라인하지만 아무것도 전혀 없다, 어떤 그리드는 표시하지 않을 :

Timeline Scheduler

+0

표시되는 스크린 샷은 당일보기의 스크린 샷입니다. 당신의 목발처럼 보이길 원한다면 타임 라인보기를 보지 않겠습니까?링크 된 예를 참조하고 있었는데 찾고있는 것과 비슷하지만 "일별보기"를 전혀 참조하지 않는 것 같습니다. – KreepN

+0

또한 코드 줄에서 다음을 수행하십시오. KreepN

+0

감사 KreepN. 위에 설명 된대로 GroupingDirection을 Vertical로 고정했습니다. 게시판의 끝에있는 업데이트 섹션을 참조하십시오. – splatto

답변

1

손에서 데모를 모방하기 위해 당신이 "타임 라인보기"를 사용해야합니다 이는 스케줄러 자체의 "SelectedView"등록 정보에서 선택할 수 있습니다.

또한 Adv_AdvocateID로 그룹화하려면 "ResourceTypes"속성 필드에 지정한 "Name"필드를 항상 참조해야합니다.

- :

+0

감사합니다. KreepN, 우리의 첫 번째 교환에서 훌륭한 답을 얻었습니다. – splatto

+0

Lol, Telerik 질문에 매달 리면 나를 더 많이 보게 될 것입니다. 다행히 도울 수있어. – KreepN

관련 문제