C1FlexGrid 被设计用来和ICollectionView数据源配合使用,充分利用其提供的功能。
但是它也可以工作在非绑定模式。如果您仅向Grid添加行和列,则您可可以通过下面所示熟悉的索引表示法获取或设置单元格的值:
C# |
拷贝代码
|
---|---|
// 为非绑定模式的Grid添加行和列 for (int i = 0; i < 20; i++) { fg.Columns.Add(new Column()); } for (int i = 0; i < 500; i++) { fg.Rows.Add(new Row()); } // 填充非绑定Grid for (int r = 0; r < fg.Rows.Count; r++) { for (int c = 0; c < fg.Columns.Count; c++) { fg[r, c] = string.Format("cell [{0},{1}]", r, c); } } |
索引表示法应当也是C1FlexGrid用户所熟悉的。这是和该控件的WinForms版本所实现的同样的表示方法。可以指定行和列索引、行索引和列名称、或行索引和列对象指定单元格。
索引表示法针对绑定和非绑定模式同样有效。在绑定模式中,将获取或者应用位于数据源中各个项目的数据。在绑定模式下,数据是由Grid内部存储。
WinForms 以及Silverlight及WPF版本C1FlexGrid控件之间一个最重要的区别在于,该控件的WinForms版本,索引包含固定的行和列。在Silverlight及WPF版,固定的行和列不包括在内。
下图显示了在Grid的WinForms版本中,单元格索引的方案:
0,0 | 0,1 | 0,2 | 0,3 |
---|---|---|---|
1,0 | 1,1 | 1,2 | 1,3 |
2,0 | 2,1 | 2,2 | 2,3 |
3,0 | 3,1 | 3,2 | 3,3 |
下图显示了在Silverlight及WPF版Grid中使用的新的单元格索引方案:
0,0 | 0,1 | 0,2 | |
1,0 | 1,1 | 1,2 | |
2,0 | 2,1 | 2,2 |
新的标注方式使得索引更加容易使用,因为索引将匹配数据项的索引值(第零行包含索引值为零的项),同时列数匹配显示的属性个数。
唯一的缺点是,您需要一种新的方法来访问固定的单元格的内容,而不是使用标准的索引方案。这种新的方法由额外的叫做RowHeaders以及ColumnHeaders的属性组成。
这些属性返回一个GridPanel类型的对象,该对象可以被看作具有其行和列的集合的“子-Grid”。
例如,您可以使用以下代码来自定义行标题:
C# |
拷贝代码
|
---|---|
// 获得Grid的行标题 GridPanel rh = fg.RowHeaders; // 向Grid添加一个新的固定列 rh.Columns.Add(new Column()); // 设置宽度和行标题内容 for (int c = 0; c < rh.Columns.Count; c++) { //该列的宽度 rh.Columns[c].Width = 60; for (int r = 0; r < rh.Rows.Count; r++) { // 该单元格的内容 rh[r, c] = string.Format("hdr {0},{1}", r, c); } } |
注意这里GridPanel类提供了和主Grid一样的Rows和Columns集合,并支持一样的索引表示法。您可以使用和操作Grid内容区域单元格(可滚动区域)相同的技术自定义以及填充行头和列头。