ReportDocument的参数设置问题

chenmincun 2009-07-10 11:10:23
ReportDocument 的ParameterFields.Add 需要的参数是ParameterField
我是这么写的
ReportDocument rd=new ReportDocument();
rd.ParameterFields.Add(WriteField("name", "xiaoxiao"));

-------------------------------------------------------------
public static CrystalDecisions.Shared.ParameterField WriteField(string FieldName, string FieldValue)
{
CrystalDecisions.Shared.ParameterField paramField = new CrystalDecisions.Shared.ParameterField();
CrystalDecisions.Shared.ParameterDiscreteValue paramFieldV = new CrystalDecisions.Shared.ParameterDiscreteValue();
//这个方法用.是找不出来的
paramField.ParameterFieldName = FieldName;
paramFieldV.Value = FieldValue;
paramField.CurrentValues.Add(paramFieldV);
return paramField;
}
但是为什么WriteField 没错。到了ParameterFields.Add时候就报错了呢?
...全文
216 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenmincun 2009-07-10
  • 打赏
  • 举报
回复
谢谢。感谢你的热心。我自己给解决了。
ReportDocument rd=new ReportDocument();
rd.SetParameterValue("name", "xiaoxiao");
chenmincun 2009-07-10
  • 打赏
  • 举报
回复
报表格式里面已经是有的了。。。
现在我是要在web里面代码要控制打印
llsen 2009-07-10
  • 打赏
  • 举报
回复
看了以前写的代码
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using System.Data.SqlClient;

using System.IO;
using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
try
{
this.CrystalReportSource1.ReportDocument.SetDataSource(GetDataSource());
//this.CrystalReportViewer1.ParameterFieldInfo = GetParameterField();
this.CrystalReportSource1.ReportDocument.ParameterFields = GetParameterField();
}
catch (Exception ex)
{
}
}

private DataSet GetDataSource()
{
//DataSet1 ds = new DataSet1();
System.Random rd = new Random();
DataSet ds = new DataSet();
DataTable dt = new DataTable("DataTable1");
dt.Columns.Add("Column1", typeof(string));
dt.Columns.Add("Column2", typeof(string));
dt.Columns.Add("Column3", typeof(string));
dt.Columns.Add("Column4", typeof(string));
dt.Columns.Add("Column5", typeof(string));
dt.Columns.Add("Column6", typeof(string));
dt.Columns.Add("Column7", typeof(string));

for (int i = 0; i < 100; i++)
{
DataRow dr = dt.NewRow();
dr[0] = rd.Next(100).ToString();
dr[1] = rd.Next(100).ToString();
dr[2] = "11";
dr[3] = rd.Next(100).ToString();
dr[4] = rd.Next(100).ToString();
dr[5] = rd.Next(100).ToString();
dr[6] = rd.Next(100).ToString();

dt.Rows.Add(dr);
//ds.DataTable1.Rows.Add(dr);
}
ds.Tables.Add(dt);
return ds;
}

#region 获得报表参数信息
/// <summary>
/// 获得报表参数信息
/// </summary>
private ParameterFields GetParameterField()
{
ParameterFields pfs = new ParameterFields();
pfs.Add(this.CreateParameterField("p1", "aaa"));
pfs.Add(this.CreateParameterField("p2", "tt"));

return pfs;
}
#endregion

#region 建立参数字段
/// <summary>
/// 建立参数字段
/// </summary>
/// <param name="FieldName">字段名</param>
/// <param name="FieldValue">字段值</param>
/// <returns>参数字段</returns>
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);

//返回参数字段
return field;
}
#endregion

}



load里面这两句
this.CrystalReportViewer1.ParameterFieldInfo = GetParameterField();
this.CrystalReportSource1.ReportDocument.ParameterFields = GetParameterField();

第一句可以
第二句会提示是只读属性,编译不通过

pfs.Add(this.CreateParameterField("p1", "aaa"));
pfs.Add(this.CreateParameterField("p2", "tt"));

这两句 报表只有参数p1
这样写,load里面用第一句,会提示参数个数不正确
因为没p2
llsen 2009-07-10
  • 打赏
  • 举报
回复

private ParameterFields AddParameter
(string paramName, string paramValue,
ParameterFields paramFields)
{
ParameterField paramField= new ParameterField ();
ParameterDiscreteValue paramDiscreteValue = new
ParameterDiscreteValue ();
ParameterValues paramValues = new ParameterValues ();

paramField.ParameterFieldName = paramName;

paramDiscreteValue.Value = paramValue
paramValues.Add (paramDiscreteValue);
paramField.CurrentValues = paramValues;

paramFields.Add (paramField);
return paramFields;
}
llsen 2009-07-10
  • 打赏
  • 举报
回复
没试过这样动态加参数

不知道水表支持不
应该是不支持这样的
是先在页面上加载好,然后赋值。

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧