2014-04-07 2 views
0

텍스트 상자 1 개와 Reoprt Wizard에서 만든 ReportViewer가 포함 된 간단한 webForm을 작성했습니다. 보고서를 실행하려고 할 때 오류가 발생하지 않지만 보고서가로드되지 않습니다. 나는 .rdlc 파일을 두 번 체크했다. (.xsd 파일 미리보기를 통해 예상되는 데이터를 표시한다.) 그래서 문제를 식별 할 수 있는지를 알기 위해 내 코드에 중단 점을 설정했다. 어떻게 든 코드가 성공적으로 완료되고 ReportViewer 코드를 새로 고친 다음 4 개의 함수를 실행하기 위해 Designer.vb 파일로 이동 한 다음 다시 ReportViewer 코드로 돌아갑니다. Designer.vb 코드에서 어떤 일이 발생하는지 이해하지 못합니다. 내가 잘못 했어 내가 ASP.net, 뒤에 VB 코드 및 Designer.vb 파일에서 코드의 4 개 블록을 포함 할 수 있습니다ReportViewer 및 Global.System.Diagnostics.DebuggerNonUserCodeAttribute가 포함 된 무한 루프

ASP.net 코드 :?.

<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/HRMaster.Master" CodeBehind="VacationSick_EmployeeReportByArea.aspx.vb" Inherits="CEI_PerformanceReviews.VacationSick_EmployeeReportByArea" %> 
    <%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="HRPlaceHolder" runat="server"> 
    <asp:Label ID="Label2" runat="server" style="z-index: 1; left: 74px; top: 215px; position: absolute" Text="Year:"></asp:Label> 
    <p> 
    </p> 
    <asp:DropDownList ID="ddl_Year" runat="server" DataSourceID="YearChooser" DataTextField="PeriodYYYY" DataValueField="PeriodYYYY" style="z-index: 1; left: 129px; top: 214px; position: absolute"> 
    </asp:DropDownList> 
    <asp:SqlDataSource ID="YearChooser" runat="server" ConnectionString="<%$ ConnectionStrings:CafeWorksConnectionString %>" SelectCommand="SELECT DISTINCT PeriodYYYY 
FROM Ted.CafeWorks.dbo.FatzPeriodDates 
WHERE PeriodYYYY &gt;= (DATEPART(YEAR, GetDate())-2) 
ORDER BY PeriodYYYY DESC"></asp:SqlDataSource> 
    <asp:Button ID="btn_Refresh" runat="server" style="z-index: 1; left: 269px; top: 212px; position: absolute" Text="Refresh" /> 
    <asp:ScriptManager ID="ScriptManager1" runat="server"> 
    </asp:ScriptManager> 
    <asp:Label ID="Label3" runat="server" Font-Bold="True" Font-Size="XX-Large" ForeColor="#000099" style="z-index: 1; left: 0px; top: 142px; position: absolute; width: 1179px; text-align: center" Text="Employee Vacation/Sick Days by Area Report"></asp:Label> 
    <rsweb:ReportViewer ID="rv_EmployeeReportByArea" runat="server" Font-Names="Verdana" Font-Size="8pt" style="z-index: 1; left: 29px; top: 280px; position: absolute; height: 400px; width: 710px" WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt"> 
     <LocalReport ReportEmbeddedResource="CEI_PerformanceReviews.VacationSick_ReportByArea.rdlc"> 
      <DataSources> 
       <rsweb:ReportDataSource DataSourceId="ObjectDataSource2" Name="Dilbert_VacationSickByArea" /> 
      </DataSources> 
     </LocalReport> 
    </rsweb:ReportViewer> 
    <asp:ObjectDataSource ID="ObjectDataSource2" runat="server" SelectMethod="GetData" TypeName="CEI_PerformanceReviews.Dilbert_VacationSickByAreaTableAdapters.VacationSick_CalculationsByAreaProcTableAdapter" OldValuesParameterFormatString="original_{0}"> 
     <SelectParameters> 
      <asp:ControlParameter ControlID="ddl_Year" DefaultValue="2014" Name="Year" PropertyName="SelectedValue" Type="String" /> 
     </SelectParameters> 
    </asp:ObjectDataSource> 
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetData" TypeName="CEI_PerformanceReviews.Dilbert_VacationSickByAreaTableAdapters.VacationSick_CalculationsByAreaProcTableAdapter" OldValuesParameterFormatString="original_{0}"> 
     <SelectParameters> 
      <asp:ControlParameter ControlID="ddl_Year" Name="Year" PropertyName="SelectedValue" Type="String" /> 
     </SelectParameters> 
    </asp:ObjectDataSource> 
</asp:Content> 

VB 코드 뒤에 :

Imports Microsoft.Reporting.WebForms 

Public Class VacationSick_EmployeeReportByArea 
Inherits System.Web.UI.Page 

'Declare Variables 
Dim Choose_Year As String 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    'Default the Year in ddl to this year 
    If (Page.IsPostBack) = False Then 
     ddl_Year.SelectedValue = Now.Year 
    End If 

    'When the page loads, fill the report with the current year's data 
    Choose_Year = ddl_Year.SelectedValue.ToString() 
    rv_EmployeeReportByArea.LocalReport.ReportPath = "VacationSick\VacationSick_ReportByArea.rdlc" 
    Dim Param As New ReportParameter("Year", "2014") 
    rv_EmployeeReportByArea.LocalReport.SetParameters({Param}) 
    rv_EmployeeReportByArea.ServerReport.Refresh() 
End Sub 

파일 Dilbert_VacationSickByArea.Designer.vb에서이 4 개 코드 블록이 실행 된 후 그것은의 ReportViewer에 대한 PageLoad 코드로 돌아갑니다 :

<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _ 
     Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")> _ 
     Public Property ClearBeforeFill() As Boolean 
      Get 
       Return Me._clearBeforeFill 
      End Get 
      Set 
       Me._clearBeforeFill = value 
      End Set 
     End Property 


<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _ 
     Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")> _ 
     Protected Friend ReadOnly Property Adapter() As Global.System.Data.SqlClient.SqlDataAdapter 
      Get 
       If (Me._adapter Is Nothing) Then 
        Me.InitAdapter 
       End If 
       Return Me._adapter 
      End Get 
     End Property 


<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _ 
     Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")> _ 
     Protected ReadOnly Property CommandCollection() As Global.System.Data.SqlClient.SqlCommand() 
      Get 
       If (Me._commandCollection Is Nothing) Then 
        Me.InitCommandCollection 
       End If 
       Return Me._commandCollection 
      End Get 
     End Property 


<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _ 
     Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")> _ 
     Protected Friend ReadOnly Property Adapter() As Global.System.Data.SqlClient.SqlDataAdapter 
      Get 
       If (Me._adapter Is Nothing) Then 
        Me.InitAdapter 
       End If 
       Return Me._adapter 
      End Get 
     End Property 


<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _ 
     Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")> _ 
     Protected Friend ReadOnly Property Adapter() As Global.System.Data.SqlClient.SqlDataAdapter 
      Get 
       If (Me._adapter Is Nothing) Then 
        Me.InitAdapter 
       End If 
       Return Me._adapter 
      End Get 
     End Property 
+0

코드를 Page_Load에서 가져 와서 동일한 코드를 호출하는 버튼을 추가했습니다. 내 보고서 정의가 지정되지 않은 페이지로드시 오류가 발생하지만 버튼을 클릭하면 보고서가 완벽하게로드됩니다. 페이지로드시 코드가 실패하지만 button_clck에서 실행되는 이유는 무엇입니까? 나는 아직도 절망적이기 때문에 더 많은 정보가 내 문제를 진단하는 데 도움이되기를 바랍니다. – Wendy

+0

테스트하지는 않았지만 rv_EmployeeReportByArea.ServerReport.Refresh()는 쓸모가 없다고 생각합니다 (LocalReport를 사용하고 있습니다). Not Me.Page.IsPostBack 인 경우에만 인쇄 해보십시오. – tezzo

+0

당신 말이 맞아요, 나는 새로 고침() 아웃 주석과 차이가 없어, 그래서 아무것도하지 않는다고 생각하지 않습니다. 내 ReportViewer 코드를 "If (Page.IsPostBack) = False Then"코드 블록에 추가하고 무한 루프를 중단했습니다. 고맙습니다! 이것을 답변으로 작성하면 기꺼이 "내 답변"으로 선택할 수 있습니다. – Wendy

답변

1

보고서에만 If Not Me.Page.IsPostBack을 인쇄 해보십시오.

LocalReport을 사용 중이기 때문에 rv_EmployeeReportByArea.ServerReport.Refresh()을 삭제할 수도 있습니다.