在实现用户自定义字段前,先往源码中添加几个checkBox控件,和一个Button,再加一个报表的 CrystalReportViewer
结果如图:
然后往报表中添加几个参数:
http://www.cnblogs.com/babyt/articles/142908.html跟阿泰的参数一样的!
并设置各个公式的边框的背景颜色,记住各个公式的值都是空的!
具体如图:
运行结果如图:
代码是这样的,不过要记住,在做真正项目时要把代码放进 protected void Page_Load(object sender, EventArgs e) {
}
中这样就可以查看下一页的信息了:
using System;using System.Collections;using System.Configuration;using System.Data;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 System.Data.SqlClient;using CrystalDecisions.CrystalReports.Engine;using CrystalDecisions.Shared;using CrystalDecisions.CrystalReports;
public partial class CRport3 : System.Web.UI.Page{
DB db = new DB();
protected void Page_Load(object sender, EventArgs e) {
} 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");
ReportDocument crReportDocument = new ReportDocument(); crReportDocument.Load(Server.MapPath("CRport3.rpt"));
//------------------------- 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] + "/"";
}
for (j = i + 1; j <= 6; j++) { crReportDocument.DataDefinition.FormulaFields["mt" + (j).ToString()].Text = ""; }
crReportDocument.SetDataSource(ds1);
CrystalReportViewer1.ReportSource = crReportDocument; }}
了解具体的报表情况请看 阿泰的水晶报表,他做的挺不错的!
http://www.cnblogs.com/babyt/articles/142908.html
对了一定要把源中的 <%--<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">--%>把它隐掉,这样就可以就可以看到了