找回密码
 立即注册

QQ登录

只需一步,快速开始

CanYou8

银牌会员

67

主题

191

帖子

2047

积分

银牌会员

积分
2047

活字格认证微信认证勋章元老葡萄

CanYou8
银牌会员   /  发表于:2016-1-27 14:25  /   查看:11107  /  回复:10
在C1DataGrid中,可以采用下面的代码实现列序号
  1.                         <c1:C1DataGrid Name="c1Datagrid" CanUserAddRows="False" CanUserEditRows="False"
  2.                                    ItemsSource="{Binding List}" CanUserFilter="False" IsReadOnly="True"
  3.                                    SelectedItem="{Binding CurrentItem, Mode=TwoWay}" SelectionMode="SingleRow">
  4.                             <c1:C1RowIndexHeaderBehavior.RowIndexHeaderBehavior>
  5.                                 <Binding Path="PageInitialIndex"/>
  6.                             </c1:C1RowIndexHeaderBehavior.RowIndexHeaderBehavior>
  7.                         </c1:C1DataGrid>
复制代码


效果:


问题:在C1FlexGrid中如何实现类似的效果?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

10 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2016-1-27 15:47:00
沙发
回复 1楼CanYou8的帖子

C1FlexGrid下没有提供这个功能。
它需要自己去设置。
比如重写CellFactory,重写CreateRowHeaderContent方法,设置rowindex。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
CanYou8
银牌会员   /  发表于:2016-1-27 16:08:00
板凳
重写CellFactory,如何确定首列?列序号如何显示在制定位置?还有,分页时怎么处理?
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-1-27 17:29:00
地板
回复 3楼CanYou8的帖子

根据您的需求,重写CellFactory较复杂。
您可以直接给FlexGrid的Rowheader设置值。
FlexGrid.RowHeader[row, 0]直接循环设置数字,您也可以自己根据需求去逻辑判断哪一行赋值是什么。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
CanYou8
银牌会员   /  发表于:2016-1-29 09:55:00
5#
已实现,谢谢!
  1.             for (int i = 0; i &lt; c1FlexGrid.Rows.Count; i++)
  2.             {
  3.                 c1FlexGrid.RowHeaders[i, 0] = _vm.PageSize * (_vm.PageIndex - 1) + i + 1;
  4.             }
复制代码
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-1-29 10:05:00
6#
回复 5楼CanYou8的帖子

谢谢反馈。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
CanYou8
银牌会员   /  发表于:2016-2-15 11:38:00
7#
给FlexGrid的Rowheader设置rowindex后,发现序号显示时是偏左的,如下图所示。请问如何设置,可以让它在左右方向上居中?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-2-15 12:19:00
8#
回复 7楼CanYou8的帖子

和之前提问设置表头居中的帖子类似。
http://gcdn.gcpowertools.com.cn/showtopic-20509.html

重写CellFactory的CreateRowHeaderContent方法,然后设置居中即可。

代码参考:
  1. public class MyCellFactory : CellFactory
  2. {
  3.     // static fields
  4.     static Thickness _thicknessEmpty = new Thickness(0);
  5.     public override void CreateRowHeaderContent(C1FlexGrid grid, Border bdr, CellRange rng)
  6.     {
  7.         // first column contains numbers
  8.         if (rng.Column == 0)
  9.         {
  10.             var tb = new TextBlock();
  11.             tb.HorizontalAlignment = HorizontalAlignment.Center;
  12.             tb.VerticalAlignment = VerticalAlignment.Center;
  13.             tb.Text = string.Format(&quot;{0}&quot;, rng.Row + 1);
  14.             bdr.Padding = _thicknessEmpty;
  15.             bdr.Child = tb;
  16.         }
  17.     }
  18. }
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
CanYou8
银牌会员   /  发表于:2016-2-15 15:18:00
9#
回复 8楼Alice的帖子

非常感谢!采用重写CellFactory的CreateRowHeaderContent方法已经实现了居中的效果!
另外,如果C1FlexGrid序号比较大时,能否像C1DataGrid那样自动加宽,而不是像下图所示C1FlexGrid那样显示不全?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-2-15 16:38:00
10#
回复 9楼CanYou8的帖子

您可以使用在另一个帖子提到AutoSizeColumns方法设置自动列宽。
http://gcdn.gcpowertools.com.cn/showtopic-20218.html
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部