引言
根据数据区域绑定的数据进行动态判断当前Page是否打印。
在实际使用中很容易遇到这样的需求,当数据源进行过滤后没有数据整个数据区域块绑定的数据源就会是空白的,这样很容易浪费纸张与打印机寿命。
解决方案
动态判断数据区域绑定的数据源是否有数据,没有则设置Page
的Visible
属性。
public class ReportScript
{
private void VisiblePageByData(){
foreach (Base obj in Report.AllObjects)
{
if(obj is DataBand){
DataBand dataBand=(DataBand)obj;
dataBand.DataSource.Init(dataBand.Filter);
if (dataBand.DataSource.RowCount==0)
{
dataBand.Page.Visible=false;
}
}
}
}
private void _StartReport(object sender, EventArgs e)
{
VisiblePageByData();
}
}
注意:
DataSource
的Init()
方法中调用的当前DataBand
的Filter
属性。
我也只是自行粗糙的这样设计,有什么好的方式欢迎指点,有更高的方法我会再次补录更新,附件下载。