2012-04-04 63 views
1

我刚刚下载了Telerik,无法在互联网上找到很多帮助。我希望能够生成华丽的报告,并且Telerik看起来像是要走的路。话虽如此,我不想用所有的巫师和垃圾来建立我的报告。报告加载时是否没有某种“report_load”函数可用?我需要能够配置连接字符串,并且我有用户输入一些生成报告的值。Visual Studio c#Telerik Reporting

这里是生成报表的代码:

private void GenerateReport() 
    { 
     DBaseConn.Open(); 
     SqlCommand = new SqlCommand("SELECT Gate, Weight, Date_Created FROM Backrib_Manifest " + 
            "WHERE Date_Created >= '" + fromddate + "'" + 
            "AND Date_Created <= '" + todate + "'", DBaseConn); 
     DataReader = SqlCommand.ExecuteReader(); 

     while (DataReader.Read()) 
     { 
      switch (Convert.ToInt32(DataReader["Gate"])) 
      { 
       case 1: 
        gatecount[0]++; 
        gate1weight += double.Parse(DataReader["Weight"].ToString()); 
        break; 
       case 2: 
        gatecount[1]++; 
        gate2weight += double.Parse(DataReader["Weight"].ToString()); 
        break; 
       case 3: 
        gatecount[2]++; 
        gate3weight += double.Parse(DataReader["Weight"].ToString()); 
        break; 
       case 4: 
        gatecount[3]++; 
        gate4weight += double.Parse(DataReader["Weight"].ToString()); 
        break; 
       case 5: 
        gatecount[4]++; 
        gate5weight += double.Parse(DataReader["Weight"].ToString()); 
        break; 
       case 6: 
        gatecount[5]++; 
        gate6weight += double.Parse(DataReader["Weight"].ToString()); 
        break; 
       case 7: 
        gatecount[6]++; 
        gate7weight += double.Parse(DataReader["Weight"].ToString()); 
        break; 
       case 8: 
        gatecount[7]++; 
        gate8weight += double.Parse(DataReader["Weight"].ToString()); 
        break; 
       case 0: 
        gatecount[8]++; 
        gate0weight += double.Parse(DataReader["Weight"].ToString()); 
        break; 
       default: 
        break; 
      } 
     } 
     DBaseConn.Close(); 

     int totalcount = gatecount[0] + gatecount[1] + gatecount[2] + gatecount[3] + gatecount[4] + 
         gatecount[5] + gatecount[6] + gatecount[7] + gatecount[8]; 

     lblCount1.Text = gatecount[0].ToString(); 
     lblCount2.Text = gatecount[1].ToString(); 
     lblCount3.Text = gatecount[2].ToString(); 
     lblCount4.Text = gatecount[3].ToString(); 
     lblCount5.Text = gatecount[4].ToString(); 
     lblCount6.Text = gatecount[5].ToString(); 
     lblCount7.Text = gatecount[6].ToString(); 
     lblCount8.Text = gatecount[7].ToString(); 
     //lblCount0.Text = gatecount[8].ToString(); 
     if (totalcount != 0) 
     { 
      lblPct1.Text = (gatecount[0]/totalcount).ToString("P2"); 
      lblPct2.Text = (gatecount[1]/totalcount).ToString("P2"); 
      lblPct3.Text = (gatecount[2]/totalcount).ToString("P2"); 
      lblPct4.Text = (gatecount[3]/totalcount).ToString("P2"); 
      lblPct5.Text = (gatecount[4]/totalcount).ToString("P2"); 
      lblPct6.Text = (gatecount[5]/totalcount).ToString("P2"); 
      lblPct7.Text = (gatecount[6]/totalcount).ToString("P2"); 
      lblPct8.Text = (gatecount[7]/totalcount).ToString("P2"); 
      //lblPct0.Text = (gatecount[8]/totalcount).ToString("P2"); 
     } 

     lblWeight1.Text = (gate1weight/gatecount[0]).ToString(); 
     lblWeight2.Text = (gate2weight/gatecount[1]).ToString(); 
     lblWeight3.Text = (gate3weight/gatecount[2]).ToString(); 
     lblWeight4.Text = (gate4weight/gatecount[3]).ToString(); 
     lblWeight5.Text = (gate5weight/gatecount[4]).ToString(); 
     lblWeight6.Text = (gate6weight/gatecount[5]).ToString(); 
     lblWeight7.Text = (gate7weight/gatecount[6]).ToString(); 
     lblWeight8.Text = (gate8weight/gatecount[7]).ToString(); 
     //lblWeight0.Text = (gate0weight/gatecount[8]).ToString(); 
    } 

是否有办法在报告本身要做到这一点?当然,我实际上会将这些值放在报告中的指定位置。

+0

你在说什么Telerik产品? WinForms,WPF,Silverlight,ASP.Net? – 2012-04-04 15:16:45

+0

我有Telerik Winforms,但我正在谈论使用Telerik报告 – CSharpDev 2012-04-04 15:31:12

回答

0

我会做的是为您的报表类创建一个属性(或属性),并在NeedDataSource中设置值(例如表格,图表和其他要绑定到的元素)你正在询问的“report_load”)事件处理程序。在那里,您可以使用这些内部属性值简单地绑定或设置报表上的值。通过这种方式,连接字符串对您的报表类来说是无用的,您只需设置属性(例如,考虑DataSource)并让报表类负责在内部设置其控制值。

注意:有2类与Telerik报告相关联。具有所有报表控件等的设计器部分类以及报表类(您的自定义子类)本身。后者是NeedDataSource将去的地方。