Отображение отчетов SSRS в Kentico приводит к ошибкам ClientID, как интерпретировать документированное решение? - PullRequest
0 голосов
/ 26 ноября 2018

Итак, я развернул отчет в SSRS, и я могу просмотреть его по месту его размещения на локальном хосте.Теперь я пытаюсь отобразить отчет в элементе управления ReportViewer в веб-части Kentico.Я получаю сообщение об ошибке: «Внутренняя ошибка: ссылка на ClientID перед OnInit».В процессе поиска я нашел эту статью:

https://devnet.kentico.com/articles/how-to-display-a-microsoft-sql-server-reporting-services-(ssrs)-report-in-kentico

, которая советует добавить ReportViewer "не в качестве элемента управления (ascx), а в событии On_Load WebPart, добавив следующее: Controls.Add (ReportViewer).

Пример:

ReportViewer rv = new ReportViewer();
Controls.Add(rv);"

Понятия не имею, как это сделать. Я попытался удалить элемент управления со страницы ascx и добавить следующее вмой код:

ReportViewer ReportViewer1 = new ReportViewer();
Controls.Add(ReportViewer1);

Это ничего не сделало. Вот мой код:

using CMS.PortalControls;
using CMS.GlobalHelper;

using Telerik.Web.UI;
using System.Windows.Forms;
using Microsoft.Reporting.WebForms;

/**
 * [Comment Header Content]
 **/
public partial class CMSWebParts_Custom_Development_DispatchForm_Demo: 
CMSAbstractWebPart
{
// Global variables
public string paramId;
public string urlString;
// On page load events
protected void Page_Load(object sender, EventArgs e)
{
    // Check for postback status
    if (!IsPostBack)
        {
            // Set viewstate
        ViewState["RefUrl"] = Request.UrlReferrer.ToString();
        }
    // Set urlstring and parse for "Theid"

    urlString = Request.UrlReferrer.ToString();
    paramId = HttpUtility.ParseQueryString(urlString).Get("Theid");

    ReportViewer ReportViewer1 = new ReportViewer();
    ReportViewer1.ServerReport.ReportPath = "http://localhost/reportserver?%2fReport+Project1%2fReport1&rs:Command=Render";

    Controls.Add(ReportViewer1);
}

А вот мой ASCX:

<%@ Control Language="C#" AutoEventWireup="true" 
CodeFile="~/CMSWebParts/Custom/Development/DispatchForm_Demo.ascx.cs" 
Inherits="CMSWebParts_Custom_Development_DispatchForm_Demo" %>
<%@ Register assembly="CrystalDecisions.Web, Version=13.0.3500.0, 
Culture=neutral, PublicKeyToken=692fbea5521e1304" 
namespace="CrystalDecisions.Web" tagprefix="CR" %>
<%@ Register assembly="Microsoft.ReportViewer.WebForms" 
namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>
<style type="text/css">
.auto-style8 {
    width: 100%;
}
</style>

<rsweb:ReportViewer ID="ReportViewer1" runat="server" BackColor="" 
ClientIDMode="AutoID" HighlightBackgroundColor="" 
InternalBorderColor="204, 204, 204" InternalBorderStyle="Solid" 
InternalBorderWidth="1px" LinkActiveColor="" LinkActiveHoverColor="" 
LinkDisabledColor="" PrimaryButtonBackgroundColor="" 
PrimaryButtonForegroundColor="" PrimaryButtonHoverBackgroundColor="" 
PrimaryButtonHoverForegroundColor="" ProcessingMode="Remote" 
SecondaryButtonBackgroundColor="" SecondaryButtonForegroundColor="" 
SecondaryButtonHoverBackgroundColor="" 
SecondaryButtonHoverForegroundColor="" 
SplitterBackColor="" ToolbarDividerColor="" ToolbarForegroundColor="" 
ToolbarForegroundDisabledColor="" ToolbarHoverBackgroundColor="" 
ToolbarHoverForegroundColor="" ToolBarItemBorderColor="" 
ToolBarItemBorderStyle="Solid" ToolBarItemBorderWidth="1px" 
ToolBarItemHoverBackColor="" ToolBarItemPressedBorderColor="51, 102, 153" 
ToolBarItemPressedBorderStyle="Solid" ToolBarItemPressedBorderWidth="1px" 
ToolBarItemPressedHoverBackColor="153, 187, 226">
<ServerReport ReportPath="/Report Project1/Report1" />
</rsweb:ReportViewer>

РЕДАКТИРОВАТЬИтак, согласно первому полученному предложению, я добавил заполнитель, а затем попытался добавить элемент управления с таким кодом:

    ReportViewer rv = new ReportViewer();
    Uri siteUri = new Uri("http://localhost/reportserver");
    rv.ServerReport.ReportServerUrl = siteUri;
    rv.ServerReport.ReportPath = "/Report Project1/Report1";
    plcContent.Controls.Add(rv); 

Теперь я не получаю сообщение об ошибке, но в веб-форме ничего не загружается. Подойдя ближе?

1 Ответ

0 голосов
/ 26 ноября 2018

Попробуйте добавить заполнитель в ascx:

<asp:PlaceHolder ID="plcContent" runat="server" />

Затем в своем коде добавьте элемент управления к этому:

ReportViewer rv = new ReportViewer();
plcContent.Controls.Add(rv);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...