Итак, я развернул отчет в 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);
Теперь я не получаю сообщение об ошибке, но в веб-форме ничего не загружается. Подойдя ближе?