2015-12-12 7 views
0

Я хотел бы настроить asp.net web form reportviewer control. В частности, я хотел бы переопределить значение по умолчанию в элементе управления ReportViewer. Как это можно сделать? Я хотел бы иметь что-то вроде этого, например.Настройка веб-формы ReportViewerControl Настройка

Я не искал что-то вроде этого, но метод asyncrendering по умолчанию в ReportViewer является общественного BOOL AsyncRendering и не общественный виртуальный BOOL AsyncRendering

<crv:ReportViewer runat="server" AsyncRendering="false" /> 

Вместо этого, я ищу что-то вроде этого.

public class CustomReportViewer : ReportViewerControl 
{ 
    public override bool AsyncRendering 
    { 
     if(AsyncRendering.HasNoValue) 
     { 
      return false; 
     } 
     else 
     { 
      return true; 
     } 
    } 
} 

<crv:CustomReportViewer runat="server" /> 

ответ

1

Ну как вы не можете переопределить свойство, потому что это не виртуальные, что вы можете сделать это создать CustomReportViewer, как вы делали:

public class CustomReportViewer : Microsoft.Reporting.WebForms.ReportViewer 
{ 
    //You can create a customreportviewer like you did 
} 

Но тогда, фокус здесь было бы создать свой собственный составной элемент управления с помощью этого CustomReportViewer внутри.

[ToolboxData("<{0}:MyReportViewerControl runat=server></{0}:MyReportViewerControl>")] 
public class MyReportViewerControl : CompositeControl, IPostBackEventHandler, IPostBackDataHandler 
{ 
    //additional code 
    protected override void CreateChildControls() 
    { 
     //Here add you customized reportviewer 
     var rv = new CustomReportViewer(); 
     rv.AsyncRendering = false; 
    } 
    //additional code 
} 
+0

Привет, основанный на вашем коде. Я провел некоторое исследование данных на панели инструментов. Почему asynrendering должен переопределять CreateChildControls вместо этого? '[ToolboxData (" <{0}: MyReportViewerControl runat = 'server' AsyncRendering = 'false'> ")] public class MyReportViewControl: ReportViewerControl {}' – vincentsty

+0

Поскольку 'MyReportViewerControl' - ваш собственный пользовательский control, фактический элемент управления reportviewer - это то, что вы создаете конфиденциально внутри своего элемента управления, и вы не подвергаете никаким свойствам этого в MyReportViewerControl. Таким образом, у вас нет свойства 'AsyncRendering' в' MyReportViewerControl' – amuz

+0

@vincentsty забыл добавить, что 'MyReportViewerControl' основан на' CompositeControl', а не 'ReportViewerControl', что делает его настраиваемым сервером – amuz

Смежные вопросы