Как открыть средство просмотра отчетов Syncfusion без reportpath - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть содержимое RDL в БД.Таким образом, на основе reportID я могу визуализировать содержимое БД.Я не хочу добавлять физический файл в систему, так как Reportviewer ищет reportpath, как этого добиться?

Непосредственно показывать средство просмотра отчетов со строкой содержимого RDL

Поскольку API являются конфиденциальными, они не могутпросмотрите желаемый метод для переопределения.

Страница aspx:

код позади:

string targetFolder = HttpContext.Current.Server.MapPath("~/") + @"Report Templates\ReportViewer\";
string reportPath = targetFolder + @"\" + reportDefID + ".rdl";

deDesign oDE = new deDesign();
deReportDefinition oDef = oDE.getReportDefinition(reportDefID);
string sXML = oDef.export();

Hashtable oProps = oDef.getProperties("REPORTNAME");
lblReportName.Text = oProps["REPORTNAME"].ToString();

File.WriteAllText(reportPath, sXML);
viewer.ReportPath = reportPath;

lblStatus.Text = string.IsNullOrEmpty(sXML) ? "No Data Found" : "";
dvReportViewer.Visible = string.IsNullOrEmpty(sXML) ? false : true;

1 Ответ

0 голосов
/ 18 февраля 2019

Да, мы можем удовлетворить ваши требования, передав FileStream в Syncfusion ReportViewer вместо ReportPath.Ниже приведен фрагмент, обработанный на стороне контроллера,

public class ReportApiController : ApiController, IReportController 
{ 
    public object PostReportAction(Dictionary<string, object> jsonResult) 
    { 
        return ReportHelper.ProcessReport(jsonResult, this); 
    } 

    [System.Web.Http.ActionName("GetResource")] 
    [AcceptVerbs("GET")] 
    public object GetResource(string key, string resourcetype, bool isPrint) 
    { 
        return ReportHelper.GetResource(key, resourcetype, isPrint); 
    } 

    public void OnInitReportOptions(ReportViewerOptions reportOption) 
    { 
        FileStream fs = new FileStream(HttpContext.Current.Server.MapPath("~/App_Data/GroupingAgg.rdl"), FileMode.Open, FileAccess.Read); 
        reportOption.ReportModel.Stream = fs; 
    } 

    public void OnReportLoaded(ReportViewerOptions reportOption) 
    { 

    } 
} 

Ниже приведен образец ссылки, который поможет вашему требованию,

http://www.syncfusion.com/downloads/support/directtrac/general/ze/ReportviewerSample141241572.zip

Примечание : В приведенном выше примере мы прочитали файл физического пути как поток и загрузили его.Вы можете изменить образец в соответствии с вашими потребностями, чтобы передать содержимое XML как FileStream.

...