【问题标题】:C# ASP.NET using Boolean variable from code behind in ASP.NETC# ASP.NET 使用 ASP.NET 后面代码中的布尔变量
【发布时间】:2016-06-21 07:10:58
【问题描述】:

我知道如何使用从代码到后面的字符串变量,并说在网页上显示该字符串。我想做的是类似的,除了显示字符串,我想将布尔值从后面的代码传递到 ASP.NET 页面,以便它的真/假值可以控制打印按钮(真/假)在报告查看器中。我的诊断的工作原理是它显示字符串“True”或“False”,这两个都是正确的。 “ShowPrintButton”和“ShowExportControls”只是不起作用,并且按钮未启用。我需要在这里做什么?我认为该值正在传递,但也许它作为字符串传递,我需要做一些事情以使其作为布尔值传递....

这是代码...

代码背后:

    //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>

【问题讨论】:

  • 你的代码中没有必要有这么多的空白,这只是意味着人们需要做更多的滚动而不是代码量。
  • 与其做if ((rolesList.Contains("admin")) || (rolesList.Contains("Admin"))),不如做if (rolesList.Contains("Admin", StringComparer.InvariantCultureIgnoreCase))

标签: c# asp.net variables boolean


【解决方案1】:

在您后面的代码中,只需将该属性设置为您想要的任何位置

    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;
    }

无需尝试在客户端执行此操作。

【讨论】:

  • 谢谢!效果很好,在 c# 中简单得多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-17
  • 2016-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多