实现效果:
用户自定义水晶报表字段代码:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports;
public partial class CReportEm2 : System.Web.UI.Page
{
DB db = new DB();
protected void Page_Load(object sender, EventArgs e)
{
//String cnstr = "";
//保持字段的字符串
String fldstr = "";
//保持字段名称的数组
String[] fldArr = new string[6];
int i = 0;
int j = 0;
//获取选取的字段并进行处理
if (checkBox1.Checked == true)
{
fldstr = fldstr + "," + checkBox1.ToolTip;
}
if (checkBox2.Checked == true)
{
fldstr = fldstr + "," + checkBox2.Text;
}
if (checkBox3.Checked == true)
{
fldstr = fldstr + "," + checkBox3.Text;
}
if (checkBox4.Checked == true)
{
fldstr = fldstr + "," + checkBox4.Text;
}
if (checkBox5.Checked == true)
{
fldstr = fldstr + "," + checkBox5.Text;
}
if (checkBox6.Checked == true)
{
fldstr = fldstr + "," + checkBox6.Text;
}
if (fldstr == "")
{
//Response.Write("<script language='javascript'>alert('请选择要显示的字段!');</script>");
return;
}
if (fldstr.Substring(0, 1) == ",")
{
fldstr = fldstr.Substring(1, fldstr.Length - 1);
}
fldArr = fldstr.Split(new Char[] { ',' });
db.Open();
string sql = "";
sql = " Select " + fldstr + " From Employee";//--------------------------------------
SqlDataAdapter da1 = new SqlDataAdapter(sql, db.Open());
DataSet ds1=new DataSet();
da1.Fill(ds1, "Employee");
//CrystalReport1 crReportDocument = new CrystalReport1();
ReportDocument crReportDocument = new ReportDocument();
// ReportDoc.Load(Server.MapPath("crystalreport.rpt"));
crReportDocument.Load(Server.MapPath("CReport2.rpt"));
//-------------------------
//CrystalReport1 crReportDocument = new CrystalDecisions.Web.CrystalReportViewer();
for(i=0;i<fldArr.Length;i++)
{
// 将公式绑定到具体字段
crReportDocument.DataDefinition.FormulaFields["mf" + (i + 1).ToString()].Text = "{Employee." + fldArr[i] + "}";
crReportDocument.DataDefinition.FormulaFields["mt" + (i + 1).ToString()].Text = "/"" + fldArr[i] + "/"";
//crReportDocument.DataDefinition.ParameterFields["myParaField" + (i + 1).ToString()].ToString = "/"" + fldArr[i] + "/"";
//ParameterDiscreteValue DiscreteVal = new ParameterDiscreteValue();
}
for (j =i+ 1; j <= 6; j++)
{
crReportDocument.DataDefinition.FormulaFields["mt" + (j).ToString()].Text = "";
}
crReportDocument.SetDataSource(ds1);
CrystalReportViewer1.ReportSource = crReportDocument;
}
protected void Button1_Click(object sender, EventArgs e)
{
//String cnstr = "";
//保持字段的字符串
String fldstr = "";
//保持字段名称的数组
String[] fldArr = new string[6];
int i = 0;
int j = 0;
//获取选取的字段并进行处理
if (checkBox1.Checked == true)
{
fldstr = fldstr + "," + checkBox1.ToolTip;
}
if (checkBox2.Checked == true)
{
fldstr = fldstr + "," + checkBox2.Text;
}
if (checkBox3.Checked == true)
{
fldstr = fldstr + "," + checkBox3.Text;
}
if (checkBox4.Checked == true)
{
fldstr = fldstr + "," + checkBox4.Text;
}
if (checkBox5.Checked == true)
{
fldstr = fldstr + "," + checkBox5.Text;
}
if (checkBox6.Checked == true)
{
fldstr = fldstr + "," + checkBox6.Text;
}
if (fldstr == "")
{
Response.Write("<script language='javascript'>alert('请选择要显示的字段!');</script>");
return;
}
if (fldstr.Substring(0, 1) == ",")
{
fldstr = fldstr.Substring(1, fldstr.Length - 1);
}
fldArr = fldstr.Split(new Char[] { ',' });
db.Open();
string sql = "";
sql = " Select " + fldstr + " From Employee";//--------------------------------------
SqlDataAdapter da1 = new SqlDataAdapter(sql, db.Open());
DataSet ds1=new DataSet();
da1.Fill(ds1, "Employee");
//CrystalReport1 crReportDocument = new CrystalReport1();
ReportDocument crReportDocument = new ReportDocument();
// ReportDoc.Load(Server.MapPath("crystalreport.rpt"));
crReportDocument.Load(Server.MapPath("CReport2.rpt"));
//-------------------------
//CrystalReport1 crReportDocument = new CrystalDecisions.Web.CrystalReportViewer();
for(i=0;i<fldArr.Length;i++)
{
// 将公式绑定到具体字段
crReportDocument.DataDefinition.FormulaFields["mf" + (i + 1).ToString()].Text = "{Employee." + fldArr[i] + "}";
crReportDocument.DataDefinition.FormulaFields["mt" + (i + 1).ToString()].Text = "/"" + fldArr[i] + "/"";
//crReportDocument.DataDefinition.ParameterFields["myParaField" + (i + 1).ToString()].ToString = "/"" + fldArr[i] + "/"";
//ParameterDiscreteValue DiscreteVal = new ParameterDiscreteValue();
}
for (j =i+ 1; j <= 6; j++)
{
crReportDocument.DataDefinition.FormulaFields["mt" + (j).ToString()].Text = "";
}
crReportDocument.SetDataSource(ds1);
CrystalReportViewer1.ReportSource = crReportDocument;
}
}