环思产品论坛
标题: XtraReport交叉表自适应行高及最佳列宽 [打印本页]
作者: wanglj 时间: 2016-5-17 20:10
标题: XtraReport交叉表自适应行高及最佳列宽
本帖最后由 wutingting 于 2017-4-14 18:18 编辑
- 自适应行头的行高,绑定CustomRowHeight事件,代码如下:
private Graphics gr = Graphics.FromHwnd(IntPtr.Zero);
private void pivotGrid1_CustomRowHeight(object sender,HuanSi.XtraReports.UI.PivotGrid.PivotCustomRowHeightEventArgs e) {
e.RowHeight= 20;
var grid=sender as HuanSi.XtraReports.UI.XRPivotGrid;
varlist=e.Data.GetFieldsByArea(HuanSi.XtraPivotGrid.PivotArea.RowArea, false);
foreach (var item in list)
{
var obj=grid.GetFieldValue(item, e.RowIndex);
if (obj == null)
continue;
var font = (item asHuanSi.XtraReports.UI.PivotGrid.XRPivotGridField).Appearance.Cell.Font;
SizeF size =gr.MeasureString(obj.ToString(), font, item.Width);
int height =Convert.ToInt32(Math.Ceiling(size.Height));
e.RowHeight =e.RowHeight > height ? e.RowHeight : height;
}
}
效果图如下:
- 自适应数据的行高,同样绑定CustomRowHeight事件,代码如下:
private Graphics gr = Graphics.FromHwnd(IntPtr.Zero);
private void xrPivotGrid1_CustomRowHeight_1(object sender,PivotCustomRowHeightEventArgs e) {
e.RowHeight = 0;
for (int i = 0; i <= e.ColumnCount - 1;i++) {
string value =e.GetRowCellValue(i).ToString();
SizeF size = gr.MeasureString(value,e.DataField.Appearance.Cell.Font, e.DataField.Width);
int height =Convert.ToInt32(Math.Ceiling(size.Height));
e.RowHeight = e.RowHeight > height ?e.RowHeight : height;
}
}
盗用网上一张效果图:
自适应列宽则极其简单,绑定BeforePrint事件即可,代码如下:
private void pivotGrid1_BeforePrint(object sender,System.Drawing.Printing.PrintEventArgs e) {
var grid=sender as HuanSi.XtraReports.UI.XRPivotGrid;
grid.BestFit();
}
再次盗用DX官方的一张效果图:
欢迎光临 环思产品论坛 (http://bbs.huansi.cn/) |
Powered by Discuz! X3.2 |