找回密码
 立即注册

QQ登录

只需一步,快速开始

jim_hujun

初级会员

14

主题

47

帖子

464

积分

初级会员

积分
464

活字格认证

jim_hujun
初级会员   /  发表于:2013-6-9 14:25  /   查看:7700  /  回复:5
使用合并代码如下
  1. #region datagrid合并单元格
  2.         void grid_MergingCells(object sender, DataGridMergingCellsEventArgs e)
  3.         {
  4.             // view port columns & rows without headers
  5.             var nonHeadersViewportCols = grid.Viewport.Columns.Where(c => !_headerRowColumns.Contains(c)).ToArray();
  6.             var nonHeadersViewportRows = grid.Viewport.Rows.Where(r => !_headerColumnRows.Contains(r)).ToArray();

  7.             // merge column & rows headers
  8.             foreach (var range in MergingHelper.Merge(Orientation.Vertical, _headerColumnRows, nonHeadersViewportCols, true))
  9.             {
  10.                 e.Merge(range);
  11.             }
  12.             foreach (var range in MergingHelper.Merge(Orientation.Horizontal, nonHeadersViewportRows, _headerRowColumns, true))
  13.             {
  14.                 e.Merge(range);
  15.             }

  16.             // merge header intersection as we want, in this case, horizontally
  17.             foreach (var range in MergingHelper.Merge(Orientation.Horizontal, _headerColumnRows, _headerRowColumns, true))
  18.             {
  19.                 e.Merge(range);
  20.             }

  21.             // merge content
  22.             foreach (var range in MergingHelper.Merge(Orientation.Vertical, nonHeadersViewportRows, nonHeadersViewportCols, false))
  23.             {
  24.                 e.Merge(range);
  25.             }
  26.         }
  27.         #endregion
复制代码

实现效果如下



但是我只想合并前三列,后面的数据列不想合并 代码需要如何写呢?

本帖子中包含更多资源

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

x

5 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-6-9 18:33:00
沙发
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-6-13 11:42:00
板凳
回复 1楼jim_hujun的帖子

jim_hujun 你好

不知通过以上Sample是否可以解决你的问题,如果问题依然存在,你可以给我发送一个可以从先你问题的完整工程,我会协助你进行调试。
回复 使用道具 举报
jim_hujun
初级会员   /  发表于:2013-7-1 15:12:00
地板
回复 3楼dof的帖子

没有弄出来,这是数据列表的代码 整个工程比较大,实在不好摘出来,想就合并第一列
前台

  1.                             <c1datagrid:C1DataGrid x:Name="grid" Grid.Row="1" HeadersVisibility="None" AutoGenerateColumns="False" SelectionMode="MultiRange" CanUserAddRows="False" AlternatingRowBackground="White" RowBackground="White" GridLinesVisibility="All" CanUserFreezeColumns="Left" FrozenTopRowsCount="2" FrozenColumnCount="2" c1:C1NagScreen.Nag="True">
  2.                                 <c1datagrid:C1DataGrid.Columns>
  3.                                     <!-- First two columns must be headers, put several headers using this custom syntax-->
  4.                                     <c1datagrid:DataGridRowHeaderColumn Header="[参保类型]" Binding="{Binding TYPE_NAME}" />
  5.                                     <c1datagrid:DataGridRowHeaderColumn Header="[就医方式]" Binding="{Binding MED_TYPE_NAME}" />
  6.                                     <c1datagrid:DataGridTextColumn Header="[次均费用]" Binding="{Binding AVERAGE_COST}" />
  7.                                     <c1datagrid:DataGridTextColumn Header="[环比增长率]" Binding="{Binding GROWTH_RATE}" />
  8.                                     <c1datagrid:DataGridTextColumn Header="[同比增长率]" Binding="{Binding YEAR_ON_YEAR_GROWTH_RATE}" />

  9.                                 </c1datagrid:C1DataGrid.Columns>
  10.                                 <c1datagrid:C1DataGrid.TopRows>
  11.                                     <!-- Add two rows of headers -->
  12.                                     <c1datagrid:DataGridColumnHeaderRow />
  13.                                     <c1datagrid:DataGridColumnHeaderRow />
  14.                                 </c1datagrid:C1DataGrid.TopRows>
  15.                             </c1datagrid:C1DataGrid>
复制代码

后台

  1.                 #region 初始化加载
  2.         public AnalysisOfAverageExpensesByVisitStyle()
  3.         {
  4.             InitializeComponent();
  5.             this.Loaded += new RoutedEventHandler(AnalysisOfAverageExpensesByVisitStyle_Loaded);
  6.             this.btnQuery.Click += new RoutedEventHandler(btnQuery_Click);
  7.             this.btnListShow.Click += new RoutedEventHandler(btnListShow_Click);
  8.             this.btnChartShow.Click += new RoutedEventHandler(btnChartShow_Click);
  9.             //初始化隐藏搜索
  10.             VisualStateManager.GoToState(this, "GoUp", true);

  11.             #region 合并单元格
  12.             _headerRowColumns = grid.Columns.Take(2).ToArray();
  13.             _headerColumnRows = grid.TopRows.Take(2).ToArray();
  14.             // forbid unfreezing headers
  15.             grid.FrozenColumnCountChanged += delegate
  16.             {
  17.                 if (grid.FrozenColumnCount < _headerRowColumns.Length)
  18.                     grid.FrozenColumnCount = _headerRowColumns.Length;
  19.             };
  20.             // handle merging when view port changes
  21.             grid.MergingCells += new EventHandler<DataGridMergingCellsEventArgs>(grid_MergingCells);
  22.             #endregion
  23.         }

  24.         #endregion 初始化加载

  25.         #region datagrid合并单元格
  26.         void grid_MergingCells(object sender, DataGridMergingCellsEventArgs e)
  27.         {
  28.             // view port columns &amp; rows without headers
  29.             var nonHeadersViewportCols = grid.Viewport.Columns.Where(c => !_headerRowColumns.Contains(c)).ToArray();
  30.             var nonHeadersViewportRows = grid.Viewport.Rows.Where(r => !_headerColumnRows.Contains(r)).ToArray();

  31.             // merge column &amp; rows headers
  32.             foreach (var range in MergingHelper.Merge(Orientation.Vertical, _headerColumnRows, nonHeadersViewportCols, true))
  33.             {
  34.                 e.Merge(range);
  35.             }
  36.             foreach (var range in MergingHelper.Merge(Orientation.Horizontal, nonHeadersViewportRows, _headerRowColumns, true))
  37.             {
  38.                 e.Merge(range);
  39.             }

  40.             // merge header intersection as we want, in this case, horizontally
  41.             foreach (var range in MergingHelper.Merge(Orientation.Horizontal, _headerColumnRows, _headerRowColumns, true))
  42.             {
  43.                 e.Merge(range);
  44.             }

  45.             // merge content
  46.             foreach (var range in MergingHelper.Merge(Orientation.Vertical, nonHeadersViewportRows, nonHeadersViewportCols, false))
  47.             {
  48.                 e.Merge(range);
  49.             }
  50.         }
  51.         #endregion datagrid合并单元格

复制代码
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-7-1 18:59:00
5#
回复 4楼jim_hujun的帖子

jim_hujun

谢谢你发来的代码,我这边先测试一下,看能否重现问题,如有需要我会给你回帖。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-7-8 16:10:00
6#
回复 4楼jim_hujun的帖子

jim_hujun 你好

我在你提供的代码基础上进行测试,出现附件中的错误,能否修改附件中的代码以重现你的问题,然后再发送给我,谢谢!

本帖子中包含更多资源

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

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