VB.NET/Windows Forms — данные из пользовательского ввода в DataReport?

Я разрабатываю приложение Windows Forms, используя VB.NET. В настоящее время я работаю над DataReport (от Microsoft, а не от Crystal). Все работает нормально при использовании DataSet в качестве источника данных. Но у меня есть вопрос о том, как я буду помещать данные в свой DataReport из пользовательского ввода? Предпочтительно, когда пользователь находится в процессе печати (нажав кнопку печати в ReportViewer), появится всплывающая форма и попросит его ввести данные. Ввод, о котором я говорю, — это случайные имена людей, и нам не нужно отслеживать их имена, поэтому нет причин помещать их в базу данных.

Вот моя простая установка:

  • MainForm.vb (Форма)

    • MyReportViewer (ReportViewer)
  • MyReport.rdlc (отчет данных)

  • ВводФорма (Форма)

    • MyInputBox (TextBox)

Если это невозможно сделать по акту печати. Возможно, на событии MainForm_Load или перед генерацией отчета. Я искал сеть в течение часа, но мне не повезло.


person dpp    schedule 22.07.2011    source источник


Ответы (1)


Я нашел ответ, он называется ReportParameters. Вот как это сделать:

'Get input from user...
Dim OneParameter As String = InputBox("Enter something to display on report!", "Report Parameter")

'Prepare report parameters... The `SetParameters` requires array of `ReportParameter`...
Dim ReportParameters As New List(Of ReportParameter)
'Add the user input to `ReportParameter` array...
ReportParameters.Add(New ReportParameter("OneParameter", OneParameter, True))

'Set the `ReportParameters` of the `ReportViewer`...
FormWithReportViewer.TheReportViewer.LocalReport.SetParameters(ReportParameters)
FormWithReportViewer.Show()
FormWithReportViewer.Focus()

В DataReport(.rdlc) мы должны добавить ReportParameters (Меню>Отчет>Параметры отчета). Во избежание ошибки следует использовать одно и то же имя (OneParameter). Теперь мы можем использовать параметр в нашем текстовом поле, просто введите =Parameters!OneParameter.Value, и все готово!

Примечание. Мы должны установить параметры отчета перед рендерингом отчета. Если мы не можем этого избежать, обновите отчет после добавления параметров, чтобы он обновился:

FormWithReportViewer.TheReportViewer.RefreshReport
person dpp    schedule 25.07.2011