Introduction
This is the second part of my article: Programmatically Pass Parameters into Crystal Reports from ASP.NET (C#) - Part 1.
Using the code
We use the filters
variable which is declared as a ParamType
class:
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];
}
}
Snapshots
In this sample, when the user clicks on report1 which uses four parameters (two DateTime
, and two multiselect type), the ReportView.aspx page will be dynamically created. The datetime picker has a simple client-side JavaScript which was added as an attribute in the AddDateTimeFilter()
method. The multiselect filters use a special DropCheck
webcontrol which is not a standard built-in webcontrol, but can be downloaded as a DLL.
Summary
There is a known small bug in this sample and I'm hoping to get an answer here. The bug: when you click on report1, everything goes fine, but after that, if you click on report2, the ReportView.aspx page does not refresh. The second report has only three parameters, but the first report's parameters are coming in again, and this is really annoying.
I hope you found this article useful, and if you have any questions, please let me know.