2014-12-06 19 views
5

Ho creato un nuovo "Report Server Project" in VS2013 .Net 4.5. Ho aggiunto un'origine dati e la connessione di test ha esito positivo. Ho aggiunto un DataSet utilizzando l'opzione "Utilizza un set di dati incorporato nel mio report" scegliendo l'origine dati creata in precedenza. Il tipo di query è Stored procedure con un singolo parametro di testo. Nella casella dei dati del report posso fare clic con il tasto destro del mouse sul mio DataSet, selezionare Query ed eseguire lo sproc. Vedo una griglia compilata correttamente con i miei dati.Problemi nell'anteprima dei report

Tuttavia, quando si tenta di creare e visualizzare in anteprima un report non riesce. Faccio quanto segue:

Aggiungi un nuovo rapporto. Rilasciare una tabella su di essa dalla casella degli strumenti. Iniziare a trascinare i campi dal mio DataSet sulla tabella. Quando mi ha colpito anteprima compaiono i seguenti

enter image description here

+0

Ho provato il seguente esempio e non sembra che abbia il problema del "tempo". http://www.rajbandi.net/replacing-report-viewer-date-parameter-default-date-picker-with-jquery-ui-date-picker/ – goroth

+0

Quale versione di IE stai usando? Ho IE 11 e Chrome 39 e sembrano funzionare fintanto che la data ha una ora 12:00 alla fine. In IE puoi premere F12 e quindi in emulazione provare a utilizzare una "stringa agente utente" diversa e vedere quali versioni di IE non funzionano per te? Normalmente ho un problema inverso dove IE funziona, ma Chrome non lo fa. Ho dovuto farlo in passato per far funzionare Chrome http://www.rajbandi.net/fixing-ssrs-report-viewer-control-date-picker-in-google-chrome/#comment-1484 – goroth

+0

Un'opera intorno a ciò che si potrebbe fare è impostare ReportViewer.ShowParameterPrompts = False e quindi usare il proprio datapicker personalizzato per impostare il parametro del rapporto come - ReportViewer..SetParameters ("yourParameter") in questo modo la pagina web è quella che controlla i parametri e non il costruito nei parametri "brutti" di SSRS. – goroth

risposta

3

Si tratta di un "hack", ma farà quello che chiedete.

<%@ Page Title="Home Page" Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication24._Default" %> 

<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 

    <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-2.1.1.js"></script> 

    <script type="text/javascript"> 
     $(document).ready(function() { 
      Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(pageLoadingHandler); 

      function pageLoadingHandler() { 
       fixParameters(); 
      } 

      function fixParameters() { 
       $("table[id^='ParametersGridReportViewer1']").find('input[type=text]').each(function() { 
        if (isDate($(this).attr("value"))) { 
         $(this).val($(this).val().substring(0, 10)); 
        } 
       }); 
      } 

      function isDate(date) { 
       return ((new Date(date) !== "Invalid Date" && !isNaN(new Date(date)))); 
      } 

     }); 
    </script> 


</head> 
<body> 

    <form id="form1" runat="server"> 
     <div> 
      <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 

      <rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Font-Size="8pt" ProcessingMode="Remote" WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt" Width="1184px" ShowParameterPrompts="True"> 
       <ServerReport ReportPath="/Report Project1/Report1" /> 
      </rsweb:ReportViewer> 

     </div> 
    </form> 
</body> 
</html> 

sostituire la "ReportViewer1" con il nome del visualizzatore di report.
Fondamentalmente controllerà tutti i campi di input all'interno della tabella dei parametri del report e se uno di essi assomiglia a date allora rimuoverà l'ora durante il caricamento.

MODIFICA
Aggiunto intero codice di pagina.

+0

aggiunto l'intero codice di pagina. Non c'è alcun codice dietro. – goroth

+0

Hai provato a spostare il codice da fixParameters nel pageloadinghandler e quindi eliminare la funzione fixParameters? – goroth

+0

Pensavo che non volessi il timestamp? – goroth