0

我目前正在调查 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:

<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>

在代码隐藏中,我将数据源设置为 flexgrid

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

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

这里的问题是我不能添加另一个绑定,比如

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

因为(也使用设置AutoGenerateColumns=true)只生成一列包含该List.toString()方法的结果。

我认为这些困难的原因是 C1FlexGrid 被设计成将一行作为一个具有给定(和硬编码)属性数量的对象。

4

0 回答 0