2016-03-07 108 views
1

我知道如何使用代碼中的字符串變量來隱藏並在網頁上顯示該字符串。我想要做的是類似的,除了不是顯示一個字符串,我想從後面的代碼傳遞布爾值到ASP.NET頁面,以便其true/false值可以控制Print按鈕(true/false)在ReportViewer中。我的診斷工作,它顯示字符串「真」或「假」,這是正確的。雖然「ShowPrintButton」和「ShowExportControls」不起作用,並且按鈕未啓用。我需要在這裏做什麼?我覺得值被通過,但也許它被作爲字符串傳遞,我需要做一些事情,使它當作一個布爾....C#ASP.NET使用布爾變量從代碼隱藏在ASP.NET中

下面的代碼...

代碼背後:

//Variables 
    public Boolean exportEnabled { get; set; } 
    public Boolean printEnabled { get; set; } 

    //Page Load 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     // Add a handler for SubreportProcessing 
     reportViewerPrintAndExport.LocalReport.SubreportProcessing += 
      new SubreportProcessingEventHandler(LocalReport_SubreportProcessing); 

     if (!IsPostBack) 
     { 
      // Display the report 
      DisplayReport(Session[SessionKeys.KEY_CERT_NO].ToString(), (CalibrationType)Session[SessionKeys.KEY_CERT_TYPE]); 
     } 
     DataBind(); 
    } 

    private void DisplayReport(string certNo, CalibrationType calType) 
    { 
     string[] rolesList = Roles.GetRolesForUser(); 

     //manage print and export buttons. 
     if ((rolesList.Contains("admin")) || (rolesList.Contains("Admin"))) 
     { 
      exportEnabled = true; 
      printEnabled = true; 
     } 
     else if ((rolesList.Contains("Operator")) || (rolesList.Contains("operator"))) 
     { 
      exportEnabled = false; 
      printEnabled = false; 
     } 
    } 

ASPX:

<!-- DIAGNOSTIC --> 
<asp:label runat="server" text="-" /><asp:label runat="server" text="<%# printEnabled %>" /><asp:label runat="server" text="-" /> 

<asp:Panel ID="ReportPanelPrintAndExport" runat="server" HorizontalAlign="Left"> 

    <!--Why does this not work? --> 
    <rsweb:ReportViewer ShowPrintButton="<%# printEnabled %>" ShowExportControls="<%# exportEnabled %>" ID="reportViewerPrintAndExport" runat="server" Height="100%" Width="100%" 
     ShowBackButton="False" ZoomMode="FullPage" 
     ShowRefreshButton="False" ProcessingMode="Local"> 
    </rsweb:ReportViewer> 
+0

你的代碼中沒有必要有太多的空白,這只是意味着人們需要做更多的滾動而不是代碼合理的數量。 – user1666620

+0

而不是做'如果((rolesList.Contains( 「管理員」))||(rolesList.Contains( 「管理」)))'你可以做'如果(rolesList.Contains( 「管理」,StringComparer.InvariantCultureIgnoreCase) )' –

回答

5

在後面的代碼只是設置該屬性,不管你想要

if ((rolesList.Contains("admin")) || (rolesList.Contains("Admin"))) 
    { 
     reportViewerPrintAndExport.ShowPrintButton = true; 
     reportViewerPrintAndExport.ShowExportControls = true; 
    } 
    else if ((rolesList.Contains("Operator")) || (rolesList.Contains("operator"))) 
    { 
     reportViewerPrintAndExport.ShowPrintButton = false; 
     reportViewerPrintAndExport.ShowExportControls = false; 
    } 

有沒有必要嘗試在客戶端做到這一點。

+0

謝謝!這非常完美,在c#中更簡單。 – Ewan