Поделиться через


Использование доступа по 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

  1. Создайте новое приложение Windows на языке MicrosoftVisual C# или MicrosoftVisual Basic.

  2. Перейдите к элементу управления WebBrowser в диалоговом окне Область элементов.

    Если окно Область элементов скрыто, его можно вызвать, выбрав в меню Вид пункт Область элементов.

  3. Перетащите элемент управления WebBrowserв область конструктора на форме Windows Forms.

    На форму будет добавлен элемент управления WebBrowserс именем webBrowser1.

Чтобы направить элемент управления WebBrowser на URL-адрес, вызовите метод Navigate. Для элемента управления WebBrowser можно назначить строку доступа по URL-адресу во время выполнения, как показано в следующем примере.

Dim url As String = "https://localhost/reportserver?/" & _                    "AdventureWorks Sample Reports/" & _                    "Company Sales&rs:Command=Render"WebBrowser1.Navigate(url)
string url = "https://localhost/reportserver?/" +             "AdventureWorks Sample Reports/" +             "Company Sales&rs:Command=Render";webBrowser1.Navigate(url);