2015-06-23 3 views
0

Я пытаюсь отправить свой файл данных, который был отфильтрован с использованием ввода пользователя в отчет, но отчеты могут принимать только наборы данных. Проблема, которую я имею здесь, заключается в том, что я не хочу делать это через SQL Server. Я хочу, чтобы информация была локальной. Есть ли в любом случае, что я могу отправить данные, относящиеся к отчету, или я SOL?Пытается использовать данные, которые генерируются из datagridview по пользовательскому вводу

Как отфильтровал datagridveiw и превратил его в годную к употреблению таблицы:

// If & Try block 
    string filter = " (DateTime >= #" + startDateTime.ToString("MM/dd/yyyy HH:mm:ss") + "# And DateTime <= #" + endDateTime.ToString("MM/dd/yyyy HH:mm:ss") + "# And TagIndex =" + integerProdNum + ")"; 

    view.RowFilter = filter; 

    passingDataToReport = view.ToTable(); 

очевидно есть, если и попытаться блоки вокруг них, но это, как я пытаюсь преобразовать DataGridView, который отфильтрован назад в виде данных.

Затем в средстве просмотра отчетов У меня есть следующий код:

 DataSet Data = new DataSet("Data"); 
     reportData = DataSheet.getPassingDataToReport(); 
     reportData.TableName = "DateTimeValue"; 
     Microsoft.Reporting.WinForms.ReportDataSource source = new Microsoft.Reporting.WinForms.ReportDataSource("Data_DateTimeValue", reportData); 
     this.reportViewer1.LocalReport.DataSources.Clear(); 
     this.reportViewer1.LocalReport.DataSources.Add(source); 
     this.reportViewer1.DataBind(); 
     reportViewer1.LocalReport.Refresh(); 

Я смотрел это вверх широко и не нашли ничего помощь. В качестве помощника; Какова директива, связанная с .DataBind()?

+0

'DataSet myDataSet = новый DataSet (« Данные »); myDataSet.Tables.Add (view.ToTable()); ' – Fabio

+0

Да, это добавит таблицу в набор данных, но так как набор данных создается во время выполнения, он не будет отображаться в мастере генератора отчетов. Поэтому я не могу получить к нему доступ для создания отчета. – TommyBoy

ответ

0

Мне пришлось отправить DataTable в pdf-автору и написать это с использованием циклов for и if. Я узнал, что вы не можете отправить данные, созданные во время выполнения, в средство просмотра отчетов. Код ниже:

public void ExportToPdfTableFULL(DataTable dt, string path) 
    { 
     Document document = new Document(iTextSharp.text.PageSize.LETTER, 10, 10, 42, 35); 

     if (path.Equals(null) | path.Equals("")) { path = defaultFilename; } 
     try 
     { 
      PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(path + "_FULL.pdf", FileMode.Create)); 
     } 
     catch (System.NotSupportedException) 
     { 
      MessageBox.Show("Invalid File Path. The PDF was saved at " + defaultFilename); 
      path = defaultFilename; 

      PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(path + "_FULL.pdf", FileMode.Create)); 
     } 
     catch (Exception) 
     { 
      MessageBox.Show("Please Close Your PDF Viewer to Allow the " + "\nProgram to Overwrite or change the Filename"); 
     } 

     document.Open(); 

     try 
     { 
      iTextSharp.text.Image PNG = iTextSharp.text.Image.GetInstance("EisenmannLogo.png"); 

      document.Add(PNG); 
     } 
     catch (Exception) { } 

     Paragraph companyInfo = new Paragraph("\n" + companyName.Text + "-" + textBox4.Text + "\n" + phoneNumber.Text + " | " + textBox3.Text + "\n" + address.Text + "\n" + state.Text + ", " + zipCode.Text + " " + textBox2.Text + "\n"); 
     document.Add(companyInfo); 

     Paragraph TagName = new Paragraph("\n" + description.Text + "\n" + "\n"); 

     document.Add(TagName); 
     try 
     { 
      iTextSharp.text.Image Chart_Image = iTextSharp.text.Image.GetInstance(graphedTags[0] + "_chart.png"); 
      Chart_Image.ScalePercent(62f); 

      document.Add(Chart_Image); 
     } 
     catch(Exception) { } 
     Paragraph Disclaimer = new Paragraph("\n" + "*The data has been printed out at " + printOutInterval + " minute intervals to reduce PDF size.*" + "\n" + "\n"); 
     Disclaimer.Alignment = Element.ALIGN_CENTER; 
     int counterToShorten = 0; 
     for (int namesGraphed = 0; namesGraphed < graphedTags.Count; namesGraphed++) 
     { 
      Paragraph spacing = new Paragraph("\n" + "\n"); 

      document.Add(spacing); 

      PdfPTable table = new PdfPTable(dt.Columns.Count-1); 
      BaseFont bfTimes = BaseFont.CreateFont(BaseFont.TIMES_BOLD, BaseFont.CP1252, false); 

      iTextSharp.text.Font fontSize = new iTextSharp.text.Font(iTextSharp.text.Font.NORMAL, 8f, iTextSharp.text.Font.NORMAL, iTextSharp.text.BaseColor.BLACK); 
      iTextSharp.text.Font fontSize1 = new iTextSharp.text.Font(bfTimes, 14, iTextSharp.text.Font.NORMAL, iTextSharp.text.BaseColor.BLACK); 
      iTextSharp.text.Font fontSize2 = new iTextSharp.text.Font(bfTimes, 14, iTextSharp.text.Font.NORMAL, iTextSharp.text.BaseColor.WHITE); 
      PdfPCell cell = new PdfPCell(new Phrase(graphedTags[namesGraphed], fontSize2)); 
      cell.Colspan = 3; 
      cell.HorizontalAlignment = 1; 
      cell.BackgroundColor = new iTextSharp.text.BaseColor(0, 0, 0); 
      table.AddCell(cell); 
      for (int j = 1; j < dt.Columns.Count; j++) 
      { 
       PdfPCell cell2 = new PdfPCell(new Phrase(dt.Columns[j].ToString(), fontSize1)); 
       cell2.HorizontalAlignment = 1; 
       cell2.BackgroundColor = new iTextSharp.text.BaseColor(185, 185, 185); 
       table.AddCell(cell2); 
      } 
      table.HeaderRows = 1; 
      for (int p = 0; p < columnHeaders.Count; p++) { Console.WriteLine(columnHeaders[p]); } 


       document.Add(Disclaimer); 
       for (int i = 0; i < (dt.Rows.Count); i++) 
       { 
        if (columnHeaders.Contains("Tagname")) 
        { 
         if (graphedTags[namesGraphed].Equals(dt.Rows[i]["Tagname"].ToString())) 
         { 
          counterToShorten++; 
          if (counterToShorten >= printOutInterval) 
          { 
           for (int k = 1; k < (dt.Columns.Count); k++) 
           { 

            if (!dt.Rows[i][k].Equals(null)) 
            { 
             PdfPCell cell3 = new PdfPCell(new Phrase(dt.Rows[i][k].ToString(), fontSize)); 
             cell3.HorizontalAlignment = 1; 
             table.AddCell(cell3); 
             counterToShorten = 0; 
            } 
           } 
          } 
         } 

        } 
        if (columnHeaders.Contains("TagIndex")) 
        { 
         if (graphedTags[namesGraphed].Equals(dt.Rows[i]["TagIndex"].ToString())) 
         { 
          counterToShorten++; 
          if (counterToShorten >=printOutInterval) 
          { 
           for (int k = 1; k < (dt.Columns.Count); k++) 
           { 
            int mulitplier = 10 * i; 
            if (!dt.Rows[i][k].Equals(null)) 
            { 
             PdfPCell cell3 = new PdfPCell(new Phrase(dt.Rows[i][k].ToString(), fontSize)); 
             cell3.HorizontalAlignment = 1; 
             table.AddCell(cell3); 
             counterToShorten = 0; 
            } 
           } 
          } 
         } 

        } 
       } 


      document.Add(table); 
     } 
     document.Close(); 

Вот автор, которого я создал.

Смежные вопросы