2011-09-13 5 views
3

リストの人々( "支持者")と特定の日の会議をすべて1つのビューで作成する作業を進めています。私はASP.NET AJAXパッケージのRadControlsからTelerikのRadSchedulerコントロール(2011年第2四半期)を使用しています。asp.netを使用したTelerikスケジューラ - Everyonesの会議を1つのディスプレイに表示

私はAdvocatesとMeetingsの間にM:Mの関係があります。したがって、データベーステーブルの名前はGRS_AdvocateGRS_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だ:ここでは

は、私が希望するものを視覚的に表現します"レコードは 同じ会議のためのものであり、2人の異なる支持者が出席予定です。このミーティングは、最初の写真に示されているように、出席予定の各スポンサーに1回ずつ、2つの異なる行に表示する必要があります。

ここからはどうすれば入手できますか?私は問題がグリッドにある<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それは上の画像は、日ビュー上にあることが指摘されたコメントで

、と私はタイムラインを使用する必要があります。それは正しいです;しかし、タイムラインビューを見ると、私の主張者はリストに載っていません。

Timeline Scheduler

+0

表示されているスクリーンショットは、日表示のものです。あなたのモックアップのように見せたいのであれば、タイムラインビューを表示してはいけませんか?私はあなたがリンクしている例を参照していましたが、あなたが探しているものに似ているようですが、 "Day View"を参照していないようです。 – KreepN

+0

また、コード行に:グループ化の方向を[縦]に変更します – KreepN

+0

ありがとうKreepN。私は上記を明確にし、GroupingDirectionをVerticalに固定しました。投稿の末尾の更新セクションを参照してください。 – splatto

答えて

1

手でデモを模倣するために、あなたが「タイムラインビュー」を使用する必要があります:実際には、まったくy軸とx軸上のタイムラインに過ぎ、およびディスプレイへのグリッドなしはありませんこれはスケジューラ自体の "SelectedView"プロパティで選択可能です。

また、Adv_AdvocateIDでグループ化するには、「ResourceTypes」プロパティフィールドで指定した「名前」フィールドを常に参照する必要があります。

- :

+0

ありがとう、KreepN、私たちの初めての交換でのあなたの素晴らしい答えのために:) – splatto

+0

Lol、Telerikの質問にこだわるなら、あなたはもっと私に会うことになります。お役に立てて嬉しいです。 – KreepN

関連する問題