找回密码
 立即注册

QQ登录

只需一步,快速开始

feiyan0320

中级会员

17

主题

70

帖子

615

积分

中级会员

积分
615

活字格认证微信认证勋章

QQ
feiyan0320
中级会员   /  发表于:2015-7-14 22:41  /   查看:17527  /  回复:14
  1. <c1:C1FlexGrid Name="FlexGrid" ItemsSource="{Binding CVList}"
  2.             <c1:C1FlexGrid.Columns>
  3.                 <c1:Column Header="生产厂区" HeaderFontSize="16" Width="Auto"   Binding="{Binding Cq}" />
复制代码

  1. FlexGrid.ColumnHeaders.Rows.Add(new Row());
  2.             FlexGrid.ColumnHeaders.Rows.Add(new Row());
  3.             FlexGrid.ColumnHeaders.Rows[1][0] = "生产厂区";
  4.             FlexGrid.ColumnHeaders.Rows[2][0] = "生产厂区";
  5.             FlexGrid.ColumnHeaders.Rows[0].AllowMerging = true;
  6.             FlexGrid.ColumnHeaders.Rows[1].AllowMerging = true;
  7.             FlexGrid.ColumnHeaders.Rows[2].AllowMerging = true;
  8.             FlexGrid.ColumnHeaders.Columns[0].AllowMerging = true;
复制代码





请教下,这样为什么不能合并表头呢

本帖子中包含更多资源

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

x

14 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2015-7-15 09:27:00
沙发
回复 1楼feiyan0320的帖子

感谢对该问题的反馈。
从你的代码来看,这是合并的策略。
ColumnHeaders[0,0]的内容是通过XAML代码的Column添加的,和其他的不一致。
建议你使用如下代码,即可实现:
  1.        <c1:C1FlexGrid.Columns>
  2.                 <c1:Column HeaderFontSize="16" Width="Auto"  />
  3.             </c1:C1FlexGrid.Columns>
复制代码
  1.     FlexGrid.ColumnHeaders.Rows.Add(new Row());
  2.             FlexGrid.ColumnHeaders.Rows.Add(new Row());
  3.             FlexGrid.ColumnHeaders.Rows[0][0] = "生产厂区";
  4.             FlexGrid.ColumnHeaders.Rows[1][0] = "生产厂区";
  5.             FlexGrid.ColumnHeaders.Rows[2][0] = "生产厂区";

  6.             FlexGrid.ColumnHeaders.Columns[0].AllowMerging = true;
  7.             FlexGrid.AllowMerging = AllowMerging.All;
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
feiyan0320
中级会员   /  发表于:2015-7-15 18:27:00
板凳
在例子WpfApplication36中
  1. <c1:C1DataGrid.Columns>
  2.                 <!-- First two columns must be headers, put several headers using this custom syntax-->
  3.                 <c1:DataGridRowHeaderColumn Header="[Country, Continent]" Binding="{Binding Continent}" />
  4.                 <c1:DataGridRowHeaderColumn Header="[Country, Name]" Binding="{Binding Country}" />

  5.                 <c1:DataGridTextColumn Header="[Final, Champion]" Binding="{Binding First}" />
  6.                 <c1:DataGridTextColumn Header="[Final, Runner-up]" Binding="{Binding Second}" />
  7.                 <c1:DataGridTextColumn Header="[Semi-Finals, Third]" Binding="{Binding Third}" />
  8.                 <c1:DataGridTextColumn Header="[Semi-Finals, Fourth]" Binding="{Binding Fourth}" />
  9.             </c1:C1DataGrid.Columns>
复制代码

这种列表头合并方式是否无法在FlexGrid中实现

另外在FlexGrid中能否实现这个界面中通过拖拉列冻结的分割线来自动冻结几列呢(好像DataGrid中是用CanUserFreezeColumns实现的)



如果FlexGrid、DataGrid都能实现列表头合并、拖拉列冻结分割线,我只是用于用绑定方式显示报表明细数据,版主建议用哪个更好呢

本帖子中包含更多资源

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

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-7-16 11:37:00
地板
回复 3楼feiyan0320的帖子

你好。
首先说下C1FlexGrid不支持冻结的拖拽。

从你的描述和截图来看。C1DataGrid比较好。
你可以参考如下c1datagrid合并示例,看看是否可以满足你的需求:


如果依然有问题,欢迎提出来讨论。

本帖子中包含更多资源

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

x

评分

参与人数 1满意度 +5 收起 理由
feiyan0320 + 5 非常详实

查看全部评分

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

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
feiyan0320
中级会员   /  发表于:2015-7-16 11:50:00
5#
回复 4楼Alice的帖子

非常感谢!请假上班后第一时间就回复了,辛苦了!
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-7-16 13:33:00
6#
回复 5楼feiyan0320的帖子

不用客气,应该的。
之后你的问题我会来负责,如果产品上遇到问题,请提出来。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
feiyan0320
中级会员   /  发表于:2015-7-17 00:51:00
7#
回复 6楼Alice的帖子

hi,版主:
在FlexGrid中绑定列设置GroupAggregate=&quot;Sum&quot;,然后增加ColumnFooterRows即可很方便得到合计行
为什么DataGrid中只有一个DataGridSummaryRow,而且并不是每列都可以合计呢?有什么跟FlexGrid类似的合计功能呢?

另外依据4楼的例子,标题背景色是下图的样子,我想把标题背景色设为其他颜色或者透明色,如何做呢



如果以上合并和设置透明色都能很方便解决,用DataGrid我没有什么问题了。

其实询问了这么多,我就想在下图的基础上增加多表头合并,如果DataGrid的合计没有FlexGrid那么方便,至于FlexGrid冻结分割线不能拖拽的问题可以暂时放弃:

本帖子中包含更多资源

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

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-7-17 10:26:00
8#
回复 7楼feiyan0320的帖子

你好。
谢谢提供的图片和文字反馈。
C1DataGrid可以实现图片的效果。
1.首先讲下C1DataGrid的SummaryRow。
C1DataGrid有TopRows和BottomRows,提供给用户,使得可以将DataGridSummaryRow合计行放在上面或是下面的位置。
  1.             <c1:C1DataGrid.BottomRows>
  2.                 <c1:DataGridSummaryRow />
  3.             </c1:C1DataGrid.BottomRows>
复制代码


2.然后你想实现图片上的合计效果,只要给Column列下加入相应的合计Aggreates就可以了。
比如你想合计开机天数,那么代码参考:
  1.    <c1:DataGridBoundColumn Header="开机天数" Binding="{Binding 开机天数}">
  2.                     <c1:DataGridAggregate.AggregateFunctions>
  3.                         <c1:DataGridAggregatesCollection>
  4.                             <c1:DataGridAggregateSum   ></c1:DataGridAggregateSum>
  5.                         </c1:DataGridAggregatesCollection>
  6.                         </c1:DataGridAggregate.AggregateFunctions>
  7.                 </c1:DataGridBoundColumn>
复制代码

注:合计哪一列,就在该列里写"DataGridAggregate"。合计数据会写在该列的下方。

3.合计列的输出展示和样式,还可以通过DataGridAggregateSum的ResultFormat和ResultTemplate属性控件。
比如:                           
  1. <c1:DataGridAggregateSum  ResultFormat="合计= {0}" ></c1:DataGridAggregateSum>
复制代码

显示内容就是   “合计=460” 的样式

你可以参考我们的随机安装示例:
\Documents\ComponentOne Samples\Studio for WPF\C1.WPF.DataGrid\CS\DataGridSamples\Grouping\GrandTotal

最后回答下背景色的问题。
可以通过C1DataGrid的LoadedColumnHeaderPresenter事件来设置。代码参考:
  1.   private void grid_LoadedColumnHeaderPresenter(object sender, C1.WPF.DataGrid.DataGridColumnEventArgs e)
  2.         {
  3.             e.Column.HeaderPresenter.Background = System.Windows.Media.Brushes.Red;
  4.         }
复制代码


相应的RowHeader也有LoadedRowHeaderPresenter事件可以控制。这里可以参考随机安装示例的ConditionFormat。路径:
\Documents\ComponentOne Samples\Studio for WPF\C1.WPF.DataGrid\CS\DataGridSamples\Advanced\ConditionalFormat

如果还有其他问题,欢迎提出来讨论。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
feiyan0320
中级会员   /  发表于:2015-7-17 13:08:00
9#
回复 8楼Alice的帖子
  1. LoadedColumnHeaderPresenter=&quot;Grid_OnLoadedColumnHeaderPresenter&quot;
复制代码


  1.         private void Grid_OnLoadedColumnHeaderPresenter(object sender, C1.WPF.DataGrid.DataGridColumnEventArgs e)
  2.         {
  3.             e.Column.HeaderPresenter.Background = System.Windows.Media.Brushes.SteelBlue;
  4.         }
复制代码


试了下,没有起作用
回复 使用道具 举报
feiyan0320
中级会员   /  发表于:2015-7-17 14:16:00
10#


这个没有合并,没有太明白是为什么,麻烦版主给看看
如果方便的话,顺便帮我看看标题背景色透明的问题

附件是例子

本帖子中包含更多资源

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

x
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部