1

タイムライン ビューに Telerik スケジューラを実装しました。Y 軸のリソース (支持者) と会議の間で M:M の関係を許可しています。私のスケジューラは次のようになります。

タイムライン ビュー

会議のインスタンスの 1 つをダブルクリックすると、高度な編集ダイアログが表示されます。ただし、ここでは、どの支持者も会議の参加者として選択されていません。

アドボケイト リソース - ミーティング ダイアログの編集

この会議がタイムラインに表示される支持者は多数います。編集フォームで選択されたように表示されないのはなぜですか?

問題はそれだけではありません。私は、会議との M:M 関係を持つ 2 番目のタイプのリソース (議員) を持っています。ここにも同様の問題があります。この会議と 4 人の議員に対して定義された関係がありますが、最初の議員のみがチェックされます (他の 3 人は未チェックのままです)。

議員リソース - 会議ダイアログの編集

他に 2 種類のリソースを追加する必要があります (ここでも、それぞれが M:M with Meetings になります)。既に追加した 2 つのリソースと同様の問題が発生することが予想されます。

スケジューラのグループ化を変更し、SQL クエリを使用して、データベース内の関係が有効であることを視覚的に確認できました。では、これらの関連する各リソースがチェックされているのを確認できないのはなぜですか? 私のスケジューラコードは次のとおりです。

<telerik:RadScheduler runat="server" ID="RadScheduler1" 
    AdvancedForm-Enabled="true"
    AllowEdit="true" 
    AllowInsert="true" 
    DataEndField="End"
    DataKeyField="ID" 
    DataSourceID="EventsDataSource" 
    DataStartField="Start"
    DataSubjectField="Subject" 
    DayEndTime="17:00:00" 
    DayStartTime="07:00:00" 
    EnableAdvancedForm="true"
    Localization-HeaderMultiDay="Work Week" 
    OverflowBehavior="Expand" 
    OnAppointmentDelete="OnAppointmentDelete"
    OnAppointmentInsert="OnAppointmentInsert" 
    OnAppointmentUpdate="OnAppointmentEdited"
    OnNavigationComplete="RadScheduler1_NavigationComplete"
    SelectedDate="9/20/2011" 
    SelectedView="TimelineView" 
    >
        <AppointmentContextMenuSettings EnableDefault="true" />     
    <AdvancedForm Modal="true" />
    <ResourceTypes>
        <telerik:ResourceType KeyField="Adv_AdvocateID" AllowMultipleValues="true" Name="Advocate" TextField="Adv_FullName" ForeignKeyField="Adv_AdvocateID"
            DataSourceID="AdvocatesDataSource" />
    </ResourceTypes>
    <ResourceTypes>
        <telerik:ResourceType KeyField="Leg_LegID" Name="Legislator" AllowMultipleValues="true" TextField="Leg_FullName" ForeignKeyField="Leg_LegID"
            DataSourceID="LegislatorsDataSource" />
    </ResourceTypes>
    <TimelineView UserSelectable="true" GroupBy="Advocate" GroupingDirection="Vertical" />
    <MultiDayView UserSelectable="false" />
    <DayView UserSelectable="false" />
    <WeekView UserSelectable="false" />
    <MonthView UserSelectable="false" />
</telerik:RadScheduler>

予定の編集ダイアログで選択したリソースを正しく表示する方法について誰かが洞察できることを願っています。ご協力いただきありがとうございます。

4

1 に答える 1

1

以前、あなたが見つけたそのフォームを見ていたので、質問するようになりました。以下のメソッドは、チェック ボックスの人口と各エントリのチェックを担当しているように見えるため、私が最も注目しているもののようです。

問題は、あなたが今持っているものが良いということです.チェックボックスコントロールをコードに代入するだけで、彼らのように作成する必要はありません.

EDIT:プログラムを調べて、順番に呼び出されるものを確認したので、データに合わせて調整できます。

protected void Page_Load(object sender, EventArgs e)
{
    SemanticCheckBoxList resourceValue = new SemanticCheckBoxList();
    resourceValue.ID = "ResourceValue";
    ResourceValuesPlaceHolder.Controls.Add(resourceValue);

    if (resourceValue.Items.Count == 0)
    {
        PopulateResources();
        MarkSelectedResources();
    }
}


private void PopulateResources()
{
    foreach (Resource res in GetResources(Type))
    {
        ResourceValue.Items.Add(new ListItem(res.Text, SerializeResourceKey(res.Key)));
    }
}

private IEnumerable<Resource> GetResources(string resType)
{
    List<Resource> availableResources = new List<Resource>();
    IEnumerable<Resource> resources = Owner.Resources.GetResourcesByType(resType);

    foreach (Resource res in resources)
    {
        if (IncludeResource(res))
        {
            availableResources.Add(res);
        }
    }

    return availableResources;
}

private bool IncludeResource(Resource res)
{
    return res.Available || ResourceIsInUse(res);
}

private string SerializeResourceKey(object key)
{
    LosFormatter output = new LosFormatter();
    StringWriter writer = new StringWriter();
    output.Serialize(writer, key);
    return writer.ToString();
}

private void MarkSelectedResources()
{
    foreach (Resource res in Appointment.Resources.GetResourcesByType(Type))
    {
        ResourceValue.Items.FindByValue(SerializeResourceKey(res.Key)).Selected = true;
    }
}

ページの読み込みを介したコードはあなたのものでは使用されないと思います。条件付き if ステートメント内でメソッドを呼び出すだけで済みます。

于 2011-09-27T14:41:35.250 に答える