65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.14/5 (4投票s)

2010年2月26日

CPOL
viewsIcon

29577

如何从 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];
  }
}

快照

launch.jpg

filters.jpg

在本示例中,当用户单击使用四个参数(两个 DateTime 和两个多选类型)的 report1 时,将动态创建 ReportView.aspx 页面。日期时间选择器具有一个简单的客户端 JavaScript,它作为 AddDateTimeFilter() 方法中的属性添加。多选过滤器使用一个特殊的 DropCheck webcontrol,它不是标准的内置 webcontrol,但可以作为 DLL 下载。

摘要

此示例中存在一个已知的较小错误,我希望在此处获得解答。该错误:当您单击 report1 时,一切正常,但之后,如果您单击 report2,ReportView.aspx 页面将不会刷新。第二个报告只有三个参数,但第一个报告的参数再次出现,这真的很烦人。

希望这篇文章对您有所帮助,如果您有任何问题,请告诉我。

© . All rights reserved.