ComponentOne の FlexGrid が私のニーズに合っているかどうか、現在調査中ですが、解決できない問題に遭遇しました。
私の目標は、不明な数の列を持つ行にデータを表示 (および後で編集) することです。これが私のモデルだとしましょう:
public class writtenTests
{
public Student student { get; set; }
public List<test> tests { get; set;}
}
ご覧のとおり、すべての学生がゼロから n 個のテストを受けている可能性があり、すべてのテストはプロパティ "NumberInCourse" によって識別されます。ほとんどの学生は同じ数のテストを受けますが、一部の学生は特定のテストを省略する可能性があります。
それらすべてをwrittenTests
ObservableCollection に収集し、学生が受けたテストの数を 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 つのオブジェクトとして、特定の (およびハードコーディングされた) 数のプロパティを持つように設計されているためだと思います。