2012-04-23 54 views
0

这是一个有趣的。在传递参数之后,我打开一个新窗口。在这个新窗口中是我的reportviewer控件。我加载控制和所有显示,直到我点击VIEW NEXT PAGE按钮 - 它重新加载报告,并从第1页开始。报告查看器loing参数当选择下一页

任何想法????

CODE:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     Dim strTitle As String 
     Dim strReportName As String 
     Dim tstr As String 

     tstr = "-o-" 
     strReportName = "" 
     strTitle = "Praxima CENTAURI Report Viewer : REPORT : " 

     'If Not IsPostBack Then 
     If Not String.IsNullOrEmpty(Request.QueryString("prm")) Then 
      tstr = Request.QueryString("prm").ToString() 
     End If 
     'End If 

     'tstr = Request.QueryString("prm").ToString() 
     Me.Title = tstr 'strTitle + strReportName 
     SetReportProperties(tstr) 
    End Sub 
    Private Sub SetReportProperties(ByVal CSVString As String) 
     Dim paramList As Generic.List(Of ReportParameter) = New Generic.List(Of ReportParameter)() 
     With ReportViewer1 
      .ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote 
      With .ServerReport 
       Dim PParm(0) As String 
       Dim PValue(0) As String 
       Dim cnt As Integer = 1 
       Dim AType As String = "P" 
       Dim Marker As Integer = 1 
       Dim Pcnt As Integer = 0 
       Dim Vcnt As Integer = 0 
       Dim iLoop as Integer 
       For cnt = 1 To Len(CSVString) 

        If Mid(CSVString, cnt, 1) = "," And AType = "P" Then 
         ReDim Preserve PParm(Pcnt) 
         PParm(Pcnt) = Mid(CSVString, Marker, cnt - Marker) 
         'CSVString = Mid(CSVString, cnt + 1, Len(CSVString) - cnt) 
         cnt = cnt + 1 
         AType = "V" 
         Marker = cnt 
         Pcnt = Pcnt + 1 
        End If 
        If Mid(CSVString, cnt, 1) = "," And AType = "V" Or cnt = Len(CSVString) Then 
         ReDim Preserve PValue(Vcnt) 
         If cnt = Len(CSVString) Then 
          PValue(Vcnt) = Mid(CSVString, Marker, (cnt - Marker) + 1) 
         Else 

          PValue(Vcnt) = Mid(CSVString, Marker, cnt - Marker) 
         End If 
         'CSVString = Mid(CSVString, cnt + 1, Len(CSVString) - cnt) 
         cnt = cnt + 1 
         AType = "P" 
         Marker = cnt 
         Vcnt = Vcnt + 1 
        End If 

        '     Dim pUri As New Uri(PValue(0)) 


       Next 
       .ReportServerUrl = New Uri("http://localhost/reportserver") 'New Uri(PValue(0).ToString) 
       .ReportPath = "/praxima/rptZZ-FullPayDetails" 'PValue(1) 


       Dim pinfo As ReportParameterInfoCollection = .GetParameters() 
       Dim Parray As Integer = 1 
       For Each p As ReportParameterInfo In pinfo 
        Parray = Parray + 1 
        If Parray > 1 And Parray < pinfo.Count Then 
         paramList.Add(New ReportParameter(PParm(Parray).ToString, PValue(Parray).ToString)) 
        End If 
       Next 



       If paramList.Count > 0 Then 
        'MsgBox(paramList.Item(2).Values.Item(1).ToString, vbOKOnly,) 

        .SetParameters(paramList) 

       End If 


      End With 
      .ShowParameterPrompts = False 

     End With 


    End Sub 
+0

在page_load中,是否检查过Me.IsPostBack? – rt2800 2012-04-23 15:24:16

+0

您可以发布处理“VIEW NEXT PAGE”按钮的代码吗?我们需要看看重新结果的位置。此外,在上面的代码中,我没有看到任何关于当前页面号的引用。 – 2012-04-23 15:55:29

+0

它是ReportViewer控件上的按钮(引用了ReportingServices)。我没有对它的直接控制。这是来自MS的专有控制的一部分。 – 2012-04-24 07:01:06

回答

0

我所谓的报告,而不是直接的担心有花哨的标识等在屏幕上。我正在使用CSS样式表来“漂亮”报告。

<title>Untitled Page</title> 
<script type="text/javascript"> 
    function open_win() 
     { 
      var Parms = document.getElementById('PassParmString').value; 
      window.open(Parms) 

}

和参数字符串传递这个样子的:

Me.PassParmString.Text = Me.PassParmString.Text + "&ClientName=ZZZZ&StartDateString=2011/01/01&EndDateString=2011/01/31&GiveBlankOutput=Yes&Level2From= &Level2To=ZZZZZZZZ&Level3From= &Level3To=ZZZZZZZZ&Level4From= &Level4To=ZZZZZZZZ&Level5From= &Level5To=ZZZZZZZZ&EmpNumFrom= &EmpNumTo=ZZZZZZZZ&EmpNameFrom= &EmpNameTo=ZZZZZZZZ&CostCentFrom= &CostCentTo=ZZZZZZZZ&OutputSeq=Name&EntireYear=No&StartYearString=2011-03-01" 

MAC

在Page_Load事件
-1

不要调用SetReportProperties。在button_click这样的事件上调用它。