2012-04-04 4 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? –

+0

У меня есть Telerik Winforms, но я говорю об использовании Telerik Reporting – CSharpDev

ответ

0

Что я хотел бы сделать, это создать свойство (или свойства) для вашего класса отчета и установить такие значения, как таблицы, диаграммы и другие элементы, которые вы связываете (или иным образом устанавливаете значения) в источнике NeedDataSource (который является «report_load», о котором вы спрашиваете) обработчик событий. Там вы можете просто привязать или установить значения в отчете, используя эти внутренние значения свойств. Таким образом, строка соединения не имеет отношения к вашему классу отчетов, вы просто устанавливаете свойства (например, DataSource) и оставляете класс отчета ответственным за установку внутренних значений.

Примечание: существует 2 класса, связанных с сообщением Telerik. Частичный класс дизайнера, который имеет все элементы управления отчетами и т. Д., И класс отчета (ваш собственный подкласс). Последнее - это то, где будет идти NeedDataSource.