1. telerik radgrid控件合并单元格;
参考链接:telerik官方文档
https://docs.telerik.com/devtools/wpf/controls/radgridview/styles-and-templates/styling-mergedcell
我主要用到了垂直方向上的单元格合并,将特定列,数据相同的单元格进行合并。
第一步:首先需要对radgridview进行绑定,具体操作详见:https://blog.csdn.net/u014693181/article/details/80069695
第二步:在radgridview中设定属性 MergedCellsDirection="Vertical",表示垂直合并单元格,当然也可以合并水平的单元格。运行后发现全部的列,只要数据相同,都会合并。
第三步:设定每一列的属性,设定不进行合并单元格的列属性 IsCellMergingEnabled="False"
<telerik:RadGridView x:Name="InnerPressureView" GroupRenderMode="Flat" NewRowPosition="Bottom" MergedCellsDirection="Vertical" CanUserInsertRows ="True" AutoGenerateColumns="False" DataContext="{StaticResource MyViewModel}" ItemsSource="{Binding InnerPressure}" Margin="1,0,1,1" Grid.Row="1" > <telerik:RadGridView.Columns> <telerik:GridViewDataColumn DataMemberBinding="{Binding WellDepth}" IsCellMergingEnabled="False" Header="井深(m)"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding VerticalDepth}" IsCellMergingEnabled="False" Header="垂深(m)"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding FluidName}" Header="流体名称"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding Density}" Header="密度(g/cm^3)"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding AnnularPressure}" IsCellMergingEnabled="False" Header="环空静压(Mpa)"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding AnnularDensity}" IsCellMergingEnabled="False" Header="当量密度(g/cm^3)"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding PipePressure}" IsCellMergingEnabled="False" Header="管内静压(Mpa)"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding PipeDensity}" IsCellMergingEnabled="False" Header="当量密度(g/cm^3)"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding Remark}" Header="压稳提示"/> </telerik:RadGridView.Columns> </telerik:RadGridView>
执行结果如下:
此外,在官网文档中,还可以自己定义合并单元格的样式,更多更具体的操作详见官网文档。
2. Telerik radgridview实现复合表头
类似于这样的复合表头,使用Telerik radgridview的GridViewColumnGroup属性可以实现。
第一步:为radgrid设定GridViewColumnGroup:
<telerik:RadGridView x:Name="InnerPressureView" GroupRenderMode="Flat" NewRowPosition="Bottom" MergedCellsDirection="Vertical" CanUserFreezeColumns="False" IsFilteringAllowed="False" ShowGroupPanel ="False" CanUserInsertRows ="True" AutoGenerateColumns="False" DataContext="{StaticResource MyViewModel}" ItemsSource="{Binding bindSource}" Margin="1,0,1,1" Grid.Row="1" > <telerik:RadGridView.ColumnGroups> <telerik:GridViewColumnGroup Name="IOD" Header="ItemDetails" /> </telerik:RadGridView.ColumnGroups> </telerik:RadGridView>
第二步:设定列属性 ColumnGroupName="IOD"
<telerik:RadGridView x:Name="InnerPressureView" GroupRenderMode="Flat" NewRowPosition="Bottom" MergedCellsDirection="Vertical" CanUserFreezeColumns="False" IsFilteringAllowed="False" ShowGroupPanel ="False" CanUserInsertRows ="True" AutoGenerateColumns="False" DataContext="{StaticResource MyViewModel}" ItemsSource="{Binding bindSource}" Margin="1,0,1,1" Grid.Row="1" > <telerik:RadGridView.ColumnGroups> <telerik:GridViewColumnGroup Name="IOD" Header="ItemDetails" /> </telerik:RadGridView.ColumnGroups> <telerik:RadGridView.Columns> <telerik:GridViewDataColumn DataMemberBinding="{Binding ItemID}" Header="ItemID"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding ProductID}" Header="ProductID" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding ListPrice}" ColumnGroupName="IOD" Header="ListPrice"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding UnitCost}" ColumnGroupName="IOD" Header="unitCost"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding Attribute}" ColumnGroupName="IOD" Header="Attribute"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding Status}" ColumnGroupName="IOD" Header="Status"/> </telerik:RadGridView.Columns> </telerik:RadGridView>Telerik的radgridview用起来也挺方便,就是文档不好找。