2010-04-19 2 views
3

Как отключить опцию экспорта Excel при создании отчета через ReportViewer в моем приложении winforms?Отключить опцию экспорта Excel при создании отчета через ReportViewer

Сложение: В частности, я хочу, чтобы скрыть кнопку на панели инструментов, ссылающийся на выходе Excel/экспорта задачи, а не .the тот, который обрабатывает с возможностью экспорта в формате PDF.

+0

Следующий вопрос, который мне сопутствовал: http://stackoverflow.com/questions/1499885/reportviewer-hide-pdf-export –

ответ

2

Пока на взгляд это кажется легким, варианты экспорта трудно достать. Вы можете получить ToolStrip в ReportViewer, просто сделать это:

Dim myToolStrip As ToolStrip = DirectCast(ReportViewer1.Controls.Find("toolStrip1", True)(0), ToolStrip) 

... и вы можете перебирать коллекцию .items делать то, что вам нравится с помощью кнопок, однако сбор на DropDownItems для кнопки экспорта всегда появляется пустым.

Таким образом, простое решение - избавиться от кнопки экспорта по умолчанию и добавить свой собственный доступ к необходимой функциональности. Так что в вашем виде конструктора:

//Hide the default export button 
ReportViewer1.ShowExportButton = False 

//Define a new button 
Dim newExportButton As New ToolStripButton("Export PDF", Nothing, AddressOf Me.ExportPDF, "newExport") 

//And add it to the toolstrip 
DirectCast(ReportViewer1.Controls.Find("toolStrip1", True)(0), ToolStrip).Items.Add(newExportButton) 

Тогда все, что вам нужно сделать, это позаботиться о фактическом экспорте:

Private Sub ExportPDF() 

    Dim warnings As Microsoft.Reporting.WinForms.Warning() 
    Dim streamids As String() 
    Dim mimeType As String = "" 
    Dim encoding As String = "" 
    Dim extension As String = "" 

    Dim bytes As Byte() = ReportViewer1.LocalReport.Render("PDF", Nothing, mimeType, encoding, extension, streamids, warnings) 

    Dim fs As New IO.FileStream("C:\export.pdf", IO.FileMode.Create) 
    fs.Write(bytes, 0, bytes.Length) 
    fs.Close() 
    fs.Dispose() 

End Sub 
+0

Я не знаю, работает ли это, я попробую в ближайшее время, но вы заслуживаете того, чтобы его голосовали как ответ на мой вопрос. Спасибо за попытку. – 2010-04-29 13:00:00

+0

Нет проблем. Дайте мне знать, если у вас есть проблемы с этим, так как это работает отлично для меня здесь. –

-3

Пожалуйста, попробуйте следующее:

Dim instance As ReportViewer 

instance.ShowExportButton = false 

HTH

+0

Спасибо за ответ. Однако этот код отключит экспорт Excel и «pdf». Я хочу, чтобы иметь возможность экспортировать только файлы PDF. Я хочу скрыть кнопку, которая ссылается на экспорт Excel, а не тот, который использует параметр pdf ... – 2010-04-19 19:45:39

1
//Call This function from Page_Load Event 
private void CustomizeRV(System.Web.UI.Control reportControl) 
{ 
    foreach (System.Web.UI.Control childControl in reportControl.Controls) 
    { 
     if (childControl.GetType() == typeof(System.Web.UI.WebControls.DropDownList)) 
     { 
      System.Web.UI.WebControls.DropDownList ddList = (System.Web.UI.WebControls.DropDownList)childControl; 
      ddList.PreRender += new EventHandler(ddList_PreRender); 
     } 
     if (childControl.Controls.Count > 0) 
     { 
      CustomizeRV(childControl); 
     } 
    } 
} 

//Dropdown prerender event 
//You can hide any option from ReportViewer(Excel,PDF,Image) 
void ddList_PreRender(object sender, EventArgs e) 
{ 
    if (sender.GetType() == typeof(System.Web.UI.WebControls.DropDownList)) 
    { 
     System.Web.UI.WebControls.DropDownList ddList = (System.Web.UI.WebControls.DropDownList)sender; 
     System.Web.UI.WebControls.ListItemCollection listItems = ddList.Items; 

     if ((listItems != null) && (listItems.Count > 0) && (listItems.FindByText("Excel") != null)) 
     { 
      foreach (System.Web.UI.WebControls.ListItem list in listItems) 
      { 
       if (list.Text.Equals("Excel")) 
       { 
        list.Enabled = false; 
       } 
      } 
     } 
    } 
} 
+0

вопрос был о просмотре окон, а не в Интернете – redtetrahedron

2

Это выполнит то, что спросил плакат (использует немного LINQ для выбора объектов определенных типов из коллекций):

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