C1FlexGrid如何给列加上序号?
在C1DataGrid中,可以采用下面的代码实现列序号<c1:C1DataGrid Name="c1Datagrid" CanUserAddRows="False" CanUserEditRows="False"
ItemsSource="{Binding List}" CanUserFilter="False" IsReadOnly="True"
SelectedItem="{Binding CurrentItem, Mode=TwoWay}" SelectionMode="SingleRow">
<c1:C1RowIndexHeaderBehavior.RowIndexHeaderBehavior>
<Binding Path="PageInitialIndex"/>
</c1:C1RowIndexHeaderBehavior.RowIndexHeaderBehavior>
</c1:C1DataGrid>
效果:
问题:在C1FlexGrid中如何实现类似的效果? 回复 1楼CanYou8的帖子
C1FlexGrid下没有提供这个功能。
它需要自己去设置。
比如重写CellFactory,重写CreateRowHeaderContent方法,设置rowindex。 重写CellFactory,如何确定首列?列序号如何显示在制定位置?还有,分页时怎么处理? 回复 3楼CanYou8的帖子
根据您的需求,重写CellFactory较复杂。
您可以直接给FlexGrid的Rowheader设置值。
FlexGrid.RowHeader直接循环设置数字,您也可以自己根据需求去逻辑判断哪一行赋值是什么。 已实现,谢谢!
for (int i = 0; i < c1FlexGrid.Rows.Count; i++)
{
c1FlexGrid.RowHeaders = _vm.PageSize * (_vm.PageIndex - 1) + i + 1;
} 回复 5楼CanYou8的帖子
谢谢反馈。 给FlexGrid的Rowheader设置rowindex后,发现序号显示时是偏左的,如下图所示。请问如何设置,可以让它在左右方向上居中?
回复 7楼CanYou8的帖子
和之前提问设置表头居中的帖子类似。
http://gcdn.gcpowertools.com.cn/showtopic-20509.html
重写CellFactory的CreateRowHeaderContent方法,然后设置居中即可。
代码参考:
public class MyCellFactory : CellFactory
{
// static fields
static Thickness _thicknessEmpty = new Thickness(0);
public override void CreateRowHeaderContent(C1FlexGrid grid, Border bdr, CellRange rng)
{
// first column contains numbers
if (rng.Column == 0)
{
var tb = new TextBlock();
tb.HorizontalAlignment = HorizontalAlignment.Center;
tb.VerticalAlignment = VerticalAlignment.Center;
tb.Text = string.Format("{0}", rng.Row + 1);
bdr.Padding = _thicknessEmpty;
bdr.Child = tb;
}
}
} 回复 8楼Alice的帖子
非常感谢!采用重写CellFactory的CreateRowHeaderContent方法已经实现了居中的效果!
另外,如果C1FlexGrid序号比较大时,能否像C1DataGrid那样自动加宽,而不是像下图所示C1FlexGrid那样显示不全?
回复 9楼CanYou8的帖子
您可以使用在另一个帖子提到AutoSizeColumns方法设置自动列宽。
http://gcdn.gcpowertools.com.cn/showtopic-20218.html
页:
[1]
2