Пример #1
0
        /// <summary>
        /// Raises the <see cref="E:System.Web.UI.Control.Load" /> event.
        /// </summary>
        /// <param name="e">The <see cref="T:System.EventArgs" /> object that contains the event data.</param>
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            RegisterScript();
            LoadAttributes();
            ShowError(string.Empty, string.Empty);
            if (!Page.IsPostBack)
            {
                if (standaloneMode)
                {
                    pnlFolders.CssClass += " panel panel-block";
                    pnlTree.CssClass    += " panel-body";
                    pnlHeader.Visible    = true;
                    lTitle.Text          = headerText;
                }
                else
                {
                    pnlFolders.CssClass = pnlFolders.CssClass.Replace("panel panel-block", "").Trim();
                    pnlTree.CssClass    = pnlTree.CssClass.Replace("panel-body", "").Trim();
                    pnlHeader.Visible   = false;
                    lTitle.Text         = string.Empty;
                }
            }
            var provider = new ReportingServicesProvider();

            if (provider.CredentialsStored)
            {
                BuildTree();
            }
            else
            {
                ShowError("Configuration Error", "Reporting Services has not been configured.");
            }
        }
Пример #2
0
        /// <summary>
        /// Tests the connection.
        /// </summary>
        private void TestConnection()
        {
            var provider = new ReportingServicesProvider();

            if (!provider.CredentialsStored)
            {
                return;
            }
            var message           = string.Empty;
            var connectionSuccess = provider.TestConnection(out message, UserType.Browser);

            if (!connectionSuccess)
            {
                DisplayMessage(message, NotificationBoxType.Danger);
                return;
            }

            if (!provider.TestPath())
            {
                message = string.Format("<strong>Warning</strong> - Report Path not found ({0})", provider.ReportPath);
                DisplayMessage(message, NotificationBoxType.Warning);
                //btnConfigure.Visible = true;
                return;
            }

            if (!provider.TestDataSource(out message))
            {
                DisplayMessage("<strong>Datasource Error</strong> - " + message, NotificationBoxType.Warning);
                //btnConfigure.Visible = true;
                return;
            }

            DisplayMessage("<strong>Success</strong> - Successfully Configured.", NotificationBoxType.Success);
        }
Пример #3
0
        /// <summary>
        /// Saves the credentials.
        /// </summary>
        private void SaveCredentials()
        {
            var provider = new ReportingServicesProvider
            {
                ServerUrl = tbReportingServicesURL.Text.Trim()
            };

            if (string.IsNullOrWhiteSpace(provider.ServerUrl))
            {
                DisplayMessage("<strong>Error</strong> - Server URL is not formatted properly.", NotificationBoxType.Danger);
                return;
            }
            provider.ReportPath = tbReportRootFolder.Text.Trim();

            provider.BrowserUser = tbUserName.Text.Trim();

            if (!hfPasswordSet.Value.AsBoolean() || !string.IsNullOrWhiteSpace(tbPassword.Text))
            {
                provider.BrowserPassword = tbPassword.Text;
            }

            if (useCMUser)
            {
                provider.ContentManagerUser = tbAdminUserName.Text.Trim();
                if (!hfAdminPasswordSet.Value.AsBoolean() || !string.IsNullOrWhiteSpace(tbAdminPassword.Text))
                {
                    provider.ContentManagerPassword = tbAdminPassword.Text.Trim();
                }
            }
            else
            {
                provider.ContentManagerUser = tbUserName.Text.Trim();
                if (!hfPasswordSet.Value.AsBoolean() || !string.IsNullOrWhiteSpace(tbPassword.Text))
                {
                    provider.ContentManagerPassword = tbPassword.Text;
                }
            }

            var message = string.Empty;

            if (provider.SaveCredentials(out message))
            {
                LoadCredentials();
                DisplayMessage("<strong>Success</strong> - Credentials Saved", NotificationBoxType.Success);
            }
            else
            {
                DisplayMessage(message, NotificationBoxType.Danger);
            }
        }
Пример #4
0
        /// <summary>
        /// Loads the credentials.
        /// </summary>
        private void LoadCredentials()
        {
            var provider = new ReportingServicesProvider();

            btnVerify.Visible           = provider.CredentialsStored;
            tbReportingServicesURL.Text = provider.ServerUrl;
            tbReportRootFolder.Text     = provider.ReportPath;

            if (useCMUser)
            {
                tbAdminUserName.Text     = provider.ContentManagerUser;
                tbAdminUserName.Required = true;
                tbAdminPassword.Text     = string.Empty;
                if (!string.IsNullOrWhiteSpace(provider.ContentManagerPassword))
                {
                    tbAdminPassword.Placeholder = "Stored";
                    tbAdminPassword.Required    = false;
                    hfAdminPasswordSet.Value    = bool.TrueString;
                }
                else
                {
                    tbAdminPassword.Placeholder = string.Empty;
                    tbAdminPassword.Required    = true;
                    hfAdminPasswordSet.Value    = bool.FalseString;
                }
            }
            else
            {
                tbAdminUserName.Required = false;
                tbAdminPassword.Required = false;
            }

            tbUserName.Text = provider.BrowserUser;

            if (!string.IsNullOrWhiteSpace(provider.BrowserPassword))
            {
                tbPassword.Placeholder = "Stored";
                tbPassword.Required    = false;
                hfPasswordSet.Value    = bool.TrueString;
            }
            else
            {
                tbPassword.Placeholder = string.Empty;
                tbPassword.Required    = true;
                hfPasswordSet.Value    = bool.FalseString;
            }
        }
Пример #5
0
        /// <summary>
        /// Gets the report path.
        /// </summary>
        /// <param name="provider">The provider.</param>
        /// <returns></returns>
        private string GetReportPath(ReportingServicesProvider provider)
        {
            //get path from attributes
            var reportPath = GetAttributeValue("ReportPath");

            //if path not provided attempt to get it from query string
            if (string.IsNullOrWhiteSpace(reportPath))
            {
                reportPath = HttpUtility.UrlDecode(PageParameter("reportPath"));
            }

            //if report path found, format it
            if (!string.IsNullOrWhiteSpace(reportPath))
            {
                reportPath = provider.GetFolderPath(reportPath);
            }

            return(reportPath);
        }
Пример #6
0
        /// <summary>
        /// Loads the report.
        /// </summary>
        private void LoadReport()
        {
            pnlPdfViewer.Visible = false;
            phViewer.Controls.Clear();
            var provider   = new ReportingServicesProvider();
            var reportPath = GetReportPath(provider);

            lReportTitle.Text = "Report Viewer";

            if (string.IsNullOrWhiteSpace(reportPath))
            {
                SetError("Report Path Error", "Report Path is required.");
                return;
            }

            var rsItem = ReportingServiceItem.GetItemByPath(reportPath);

            if (rsItem == null)
            {
                SetError("Report Path Error", "Report Not Found");
                return;
            }

            var paramNames = ReportingServiceItem.GetReportParameterList(provider, reportPath);

            lReportTitle.Text = string.Format("{0} Viewer", rsItem.Name);
            var paramValues    = new Dictionary <string, string>();
            var paramAttribute = GetAttributeValue("ReportParameters").AsDictionaryOrNull();

            foreach (var pn in paramNames)
            {
                string paramValue = null;
                if (paramAttribute != null)
                {
                    paramValue = paramAttribute
                                 .Where(a => a.Key.Equals(pn, StringComparison.InvariantCultureIgnoreCase))
                                 .Select(a => a.Value)
                                 .FirstOrDefault();
                }

                if (!string.IsNullOrWhiteSpace(paramValue))
                {
                    paramValue = HttpUtility.UrlEncode(paramValue);
                }
                else
                {
                    paramValue = PageParameter(pn);
                }

                if (!string.IsNullOrWhiteSpace(paramValue))
                {
                    paramValues.Add(pn, paramValue);
                }
            }

            var urlBuilder = new StringBuilder();

            urlBuilder.AppendFormat("{0}?reportPath={1}",
                                    ResolveRockUrlIncludeRoot("~/Plugins/rocks_kfs/Reporting/GetReportingServicesPDF.ashx"),
                                    reportPath);
            foreach (var param in paramValues)
            {
                urlBuilder.AppendFormat("&{0}={1}", param.Key, param.Value);
            }

            if (!mRenderPDFOnly)
            {
                var iframeTag = string.Format("<iframe src=\"{0}\" id=\"ifReportPDF\" class=\"col-sm-12\"></iframe>", urlBuilder.ToString());
                phViewer.Controls.Add(new LiteralControl(iframeTag));
                pnlPdfViewer.Visible = true;
            }
            else
            {
                var pdfBytes = GetPDFStream(urlBuilder.ToString());
                base.Response.Clear();
                var dispositionType = string.Empty;

                if (pdfBytes == null)
                {
                    base.Response.StatusCode = 404;
                }
                else
                {
                    base.Response.AppendHeader("content-length", (pdfBytes.Length).ToString());
                    //base.Resp
                    base.Response.AppendHeader("content-disposition", string.Format("filename={0}.pdf", rsItem.Name));
                    base.Response.ContentType = "applicaton/pdf";
                    base.Response.OutputStream.Write(pdfBytes, 0, pdfBytes.Length);
                }
                base.Response.Flush();
                base.Response.Close();
                base.Response.End();
            }
        }
        /// <summary>
        /// Loads the report.
        /// </summary>
        private void LoadReport()
        {
            string reportPath = null;

            const string pageTitleFormat       = "{0} Report Viewer";
            var          reportPathAttribute   = GetAttributeValue("ReportPath");
            var          reportParamAttributes = GetAttributeValue("ReportParameters").AsDictionaryOrNull();

            if (!string.IsNullOrWhiteSpace(reportPathAttribute))
            {
                reportPath = reportPathAttribute;
            }
            else if (!string.IsNullOrWhiteSpace(PageParameter("reportPath")))
            {
                reportPath = PageParameter("reportPath");
                reportPath = Server.UrlDecode(reportPath);
            }
            else
            {
                pnlReportViewer.Visible = false;
                lReportTitle.Text       = string.Format(pageTitleFormat, string.Empty).Trim();
                return;
            }
            var rsItem = ReportingServiceItem.GetItemByPath(reportPath);

            if (rsItem == null)
            {
                ShowError("Error", "Report Not Found");
                pnlReportViewer.Visible = false;
                lReportTitle.Text       = string.Format(pageTitleFormat, string.Empty).Trim();
                return;
            }

            lReportTitle.Text = string.Format(pageTitleFormat, rsItem.Name);

            var provider = new ReportingServicesProvider();

            rsViewer.ProcessingMode = ProcessingMode.Remote;
            rsViewer.Height         = Unit.Percentage(98);
            rsViewer.Width          = Unit.Percentage(100);
            var report = rsViewer.ServerReport;

            report.ReportServerUrl         = new Uri(provider.ServerUrl);
            report.ReportPath              = reportPath;
            report.ReportServerCredentials = provider.GetBrowserCredentials();

            var reportParams = new List <ReportParameter>();

            foreach (ReportParameterInfo parameter in report.GetParameters())
            {
                string paramValue = null;
                if (reportParamAttributes != null && reportParamAttributes.ContainsKey(parameter.Name))
                {
                    paramValue = reportParamAttributes[parameter.Name];
                }
                else if (!string.IsNullOrWhiteSpace(PageParameter(parameter.Name)))
                {
                    paramValue = PageParameter(parameter.Name);
                }

                if (!string.IsNullOrWhiteSpace(paramValue))
                {
                    reportParams.Add(new ReportParameter(parameter.Name, paramValue));
                }
            }
            if (reportParams.Count > 0)
            {
                report.SetParameters(reportParams.ToArray());
                report.Refresh();
            }

            pnlReportViewer.Visible = true;
        }