从 ASP.NET (C#) 向 Crystal Reports 编程传递参数 - 第 2 部分






2.14/5 (4投票s)
如何从 ASP.NET 使用 C# 编程向 Crystal Reports 传递参数 - 第 2 部分。
引言
这是我文章的第二部分:从 ASP.NET (C#) 向 Crystal Reports 编程传递参数 - 第 1 部分。
使用代码
我们使用声明为 ParamType
类的 filters
变量
public class FilterType
{
public const string DateTime = "DateTime";
public const string MultiSelect = "MultiSelect";
public const string String = "String";
public FilterType()
{
}
}
public class ParamType
{
private TextBox[] datetimeFilters = new TextBox[100];
private xMilk.DropCheck[] multiselectFilters = new xMilk.DropCheck[100];
private TextBox[] stringFilters = new TextBox[100];
public string[] filterType = new string[100];
private int index = -1;
public ParamType()
{
}
public void AddDateTimeFilter(TextBox myTextBox)
{
index += 1;
filterType[index] = FilterType.DateTime;
datetimeFilters[index] = myTextBox;
}
public void AddMultiSelectFilter(xMilk.DropCheck myDropCheck)
{
index += 1;
filterType[index] = FilterType.MultiSelect;
multiselectFilters[index] = myDropCheck;
}
public void AddStringFilter(TextBox myTextBox)
{
index += 1;
filterType[index] = FilterType.String;
stringFilters[index] = myTextBox;
}
public string GetParamTextByIndex(int i)
{
string returnText = "";
switch (filterType[i])
{
case FilterType.DateTime:
returnText = datetimeFilters[i].Text;
break;
case FilterType.MultiSelect:
returnText = multiselectFilters[i].Text;
break;
case FilterType.String:
returnText = stringFilters[i].Text;
break;
}
return returnText;
}
public string GetParamTypeByIndex(int i)
{
return filterType[i];
}
}
快照
在本示例中,当用户单击使用四个参数(两个 DateTime
和两个多选类型)的 report1 时,将动态创建 ReportView.aspx 页面。日期时间选择器具有一个简单的客户端 JavaScript,它作为 AddDateTimeFilter()
方法中的属性添加。多选过滤器使用一个特殊的 DropCheck
webcontrol,它不是标准的内置 webcontrol,但可以作为 DLL 下载。
摘要
此示例中存在一个已知的较小错误,我希望在此处获得解答。该错误:当您单击 report1 时,一切正常,但之后,如果您单击 report2,ReportView.aspx 页面将不会刷新。第二个报告只有三个参数,但第一个报告的参数再次出现,这真的很烦人。
希望这篇文章对您有所帮助,如果您有任何问题,请告诉我。