0

ComponentOne の FlexGrid が私のニーズに合っているかどうか、現在調査中ですが、解決できない問題に遭遇しました。

私の目標は、不明な数の列を持つ行にデータを表示 (および後で編集) することです。これが私のモデルだとしましょう:

public class writtenTests
{
    public Student student { get; set; }
    public List<test> tests { get; set;}
}

ご覧のとおり、すべての学生がゼロから n 個のテストを受けている可能性があり、すべてのテストはプロパティ "NumberInCourse" によって識別されます。ほとんどの学生は同じ数のテストを受けますが、一部の学生は特定のテストを省略する可能性があります。

それらすべてをwrittenTestsObservableCollection に収集し、学生が受けたテストの数を C1FlexGrid に判断させることは可能ですか?

結果のテーブルは次のようになります

Student Name    |   Test 1    |   Test 2   |   Test 3 | ...
-----------------------------------------------------------
Name1           |   80%       |   60%      |   66%    | ...
Name2           |   80%       |   n.a.     |   66%    | ...
Name3           |   80%       |   60%      |   66%    | ...

等々。

これが C1FlexGrid で不可能な場合 (恐れ入りますが): 誰かがこれを解決する別の方法を提案できますか? 与えられた (暗黙のうちに: 最大の) テスト数をハードコーディングすることは避けたいと思います。

よろしくお願いします

エイドリアン

編集1:

ユーザー 3wic から、xaml の初期化を投稿するように依頼されたので、以下に示します。

xaml は、誰もが FlexGrid を初期化するのと同じように、通常の atm に見えます。

<c1:C1FlexGrid x:Name="c1FlexGrid1" Grid.Row="1" 
                       AutoGenerateColumns="False"
                       ShowOutlineBar="True"
                       SelectionMode="CellRange"
                       AllowMerging="All"
                       BorderThickness="1">
            <c1:C1FlexGrid.Columns>
                <c1:Column Binding="{Binding Path=student.Nachname}" Width="180"/>
                <c1:Column Binding="{Binding Path=student.Vorname}" Width="120"/>
            </c1:C1FlexGrid.Columns>
        </c1:C1FlexGrid>

コードビハインドでは、データソースをフレックスグリッドに設定します

ObservableCollection<writtenTests> data = dbMethods.getWrittenTests(selectedCourse);

c1FlexGrid1.ItemsSource = new C1.Xaml.C1CollectionView(data);

ここでの問題は、次のような別のバインディングを追加できないことです

<c1:Column Binding="{Binding Path=tests}" />

(設定も)メソッドAutoGenerateColumns=trueの結果を含む 1 つの列のみが生成されるためです。List.toString()

これらの困難の理由は、C1FlexGrid が、1 つの行を 1 つのオブジェクトとして、特定の (およびハードコーディングされた) 数のプロパティを持つように設計されているためだと思います。

4

0 に答える 0