我目前正在调查,如果ComponentOne的FlexGrid符合我的需求,但我遇到了一个我无法解决的问题。
我的目标是在具有未知列数的行中显示(以及稍后:编辑)数据。让我们说这是我的模特:
public class writtenTests
{
public Student student { get; set; }
public List<test> tests { get; set;}
}
正如您所看到的,每个学生可能已经进行了零到n次测试,其中每个测试都由一个属性&#34; NumberInCourse&#34;来识别。虽然大多数学生将参加相同数量的考试,但有些学生可能会省略某项考试。
是否有可能(如果是:怎么做)收集ObservableCollection中的所有writtenTests
并让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被设计为将一行作为一个具有给定(和硬编码)数量的属性的对象。