Использование доступа по URL-адресу в приложении Windows
Доступ к серверу отчетов по URL-адресу оптимизирован для веб-среды, его также можно использовать для внедрения отчетов служб Службы Reporting Services в приложение Microsoft Windows. Однако для доступа по URL-адресу, в котором используется Windows Forms, по-прежнему необходимо применение технологии веб-браузера. Для интеграции доступа по URL-адресу и Windows Forms можно использовать следующие сценарии.
Отображение отчета из приложения Windows Forms путем программного запуска веб-браузера.
Использование элемента управления WebBrowser на форме Windows Forms для отображения отчета.
Запуск обозревателя Internet Explorer из формы Windows Forms
С помощью класса Process можно получить доступ к процессу, выполняющемуся на компьютере. Класс Process является конструкцией Microsoft .NET Framework, которую удобно использовать для запуска и остановки приложений, для управления приложениями и для наблюдения за приложениями. Чтобы просмотреть определенный отчет в базе данных сервера отчетов, можно запустить процесс IExplore, передав URL-адрес отчета. С помощью следующего примера кода можно запустить обозреватель Microsoft Internet Explorer и передать определенный URL-адрес отчета, когда пользователь нажимает кнопку на форме Windows Forms.
Private Sub viewReportButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles viewReportButton.Click
' Build the URL access string based on values supplied by a user
Dim url As String = serverUrlTextBox.Text + "?" & reportPathTextBox.Text & _
"&rs:Command=Render" & "&rs:Format=HTML4.0"
' If the user does not select the toolbar check box,
' turn the toolbar off in the HTML Viewer
If toolbarCheckBox.Checked = False Then
url += "&rc:Toolbar=False"
End If
' load report in the Web browser
Try
System.Diagnostics.Process.Start("IExplore", url)
Catch
MessageBox.Show("The system could not start the specified report using Internet Explorer.", _
"An error has occurred", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub 'viewReportButton_Click
// Sample click event for a Button control on a Windows Form
private void viewReportButton_Click(object sender, System.EventArgs e)
{
// Build the URL access string based on values supplied by a user
string url = serverUrlTextBox.Text + "?" + reportPathTextBox.Text +
"&rs:Command=Render" + "&rs:Format=HTML4.0";
// If the user does not check the toolbar check box,
// turn the toolbar off in the HTML Viewer
if (toolbarCheckBox.Checked == false)
url += "&rc:Toolbar=False";
// load report in the Web browser
try
{
System.Diagnostics.Process.Start("IExplore", url);
}
catch (Exception)
{
MessageBox.Show(
"The system could not open the specified report using Internet Explorer.",
"An error has occurred", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
Дополнительные сведения о синтаксисе строки доступа к серверу отчетов по URL-адресу см. в разделе Синтаксис доступа по URL-адресу.
Внедрение элемента управления браузера в форму Windows Forms
Если нужно просматривать отчет во внешнем веб-браузере, можно естественным образом внедрить веб-браузер в форму Windows Forms, используя элемент управления WebBrowser.
Добавление элемента управления WebBrowser в форму Windows Forms
Создайте новое приложение Windows на языке Microsoft Visual C# или Microsoft Visual Basic.
Перейдите к элементу управления WebBrowser в диалоговом окне Область элементов.
Если окно Область элементов скрыто, его можно вызвать, выбрав в меню Вид пункт Область элементов.
Перетащите элемент управления WebBrowserв область конструктора на форме Windows Forms.
В форму будет добавлен элемент управления WebBrowser с именем webBrowser1.
Чтобы направить элемент управления WebBrowser на URL-адрес, вызовите метод Navigate. Для элемента управления WebBrowser можно назначить строку доступа по URL-адресу во время выполнения, как показано в следующем примере.
Dim url As String = "https://localhost/reportserver?/" & _
"AdventureWorks2008R2 Sample Reports/" & _
"Company Sales&rs:Command=Render"
WebBrowser1.Navigate(url)
string url = "https://localhost/reportserver?/" +
"AdventureWorks2008R2 Sample Reports/" +
"Company Sales&rs:Command=Render";
webBrowser1.Navigate(url);
См. также