有個需求是做一個動態的表頭 有點難度了 搜了好久 在阿泰的文章里找到了答案
如果實現這個動態列表呢
水晶報表里有離散值設置 通過公式可以來解決這個問題 通過參數來解決表頭問題
//使用報表對象加載報表
ReportDocument myReport = new ReportDocument();
string reportPath = Application.StartupPath + "/cp1.rpt";// Server.MapPath("~/app_data/crystalreport1.rpt");
myReport.Load(reportPath);
DataDefinition dataDefinition = myReport.DataDefinition;
string[] Text4formularFields = new string[] { "{Employee.EmployeeID}", "{Employee.EmployeeName}", "{Employee.ProductName}" };
FormulaFieldDefinitions formularFields = dataDefinition.FormulaFields;
formularFields[0].Text = Text4formularFields[0];
formularFields[1].Text = Text4formularFields[1];
formularFields[2].Text = Text4formularFields[2];
這地方可以搞個循環來解決
以下是加參數 有點亂
private ParameterFields GetParameterFields()
{
ParameterFields fields = new ParameterFields();
//單位、部門、人員、日期范圍參數
fields.Add(this.CreateParameterField("title", "單位"));
fields.Add(this.CreateParameterField("x1", "編號"));
fields.Add(this.CreateParameterField("x2", "員工名"));
fields.Add(this.CreateParameterField("x3", "產品名稱"));
//fields.Add(this.CreateParameterField("x2", "1"));
//fields.Add(this.CreateParameterField("x3", "0"));
//fields.Add(this.CreateParameterField("@empname", "人員"));
//fields.Add(this.CreateParameterField("@daterange", "日期"));
//返回
return fields;
}
private ParameterField CreateParameterField(string FieldName, object FieldValue)
{
ParameterField field = new ParameterField();
ParameterDiscreteValue pvalue = new ParameterDiscreteValue();
pvalue.Value = FieldValue;
field.Name = FieldName;
field.CurrentValues.Add(pvalue);
field.AllowCustomValues = false;
//返回參數字段
return field;
}