我花了几天时间试图解决这个问题......
我所拥有的是需要传递给报表然后使用reportViewer显示的GUID列表。
我可以用guid组装逗号分隔列表没问题......但是我不确定如何将参数传递给报告。该报告的作曲家说,我需要做的就是传递逗号分隔的GUID列表
我没有创建报告,也没有直接访问其构图....(我是否需要直接访问它?)
private void getreport_Click(object sender, EventArgs e)
{
//May/20/14 (02:07PM) [AST] - Bootty ton for getting the new RDL report.
outputBox.Clear();
reportViewer.Show();
reportViewer.ServerReport.ReportServerUrl = new Uri("http://prdukhscasq01/reportserver");
//reportViewer.ServerReport.ReportServerCredentials.ImpersonationUser = WindowsIdentity.GetCurrent();
//reportViewer.ServerReport.ReportPath = "/Charge Reconciliation/Combined Charge Report";
reportViewer.ServerReport.ReportPath = "Scheduled Reports/HandOver/UK_HandOver_RoundingReport";
//May/20/14 (04:14PM) [AST] - Must manually declare the reporting type because Obj+ contains its own report params
// Dynamically creates a container for the paramerter to be passed to the report.
int additional_params = 1;
string patients_guids = "";
// Counter for keeping track of where we are in the rows to inject the params
int count = 0 + additional_params;
Microsoft.Reporting.WinForms.ReportParameter[] yourParams
= new Microsoft.Reporting.WinForms.ReportParameter[dataGridViewPatients.RowCount+additional_params];
// additional peramiters can be added here. you must add to the counter for each param in order for thet count to be correnct in the for each loop
// Grabs current context to allow pulling of data from current session
//CustomContextObj cc = CustomContextObj.GetInstance();
//Param #1 logge in user guid
//** need to create a DB connection using Current connection find this in the CV3ClientVisit table.
foreach (Patient p in getSelectedPatients().Value)
{
patients_guids += p.VisitGUID + "'";
MessageBox.Show(p.VisitGUID);
}
// yourParams[0] = new Microsoft.Reporting.WinForms.ReportParameter("User_Guid",cc.UserGUID.ToString())
// goes threw all of the names populated to the list
/* foreach (DataGridViewRow row in dataGridViewPatients.Rows)
{
//keeps our current position in check
yourParams[count] =
new Microsoft.Reporting.WinForms.ReportParameter(row.Cells[0].Value.ToString(),row.Cells[1].Value.ToString());
MessageBox.Show(row.Cells[0].Value.ToString()+ "," +row.Cells[1].Value.ToString());
++count;
}*/
// EX.. yourParams[0] = new Microsoft.Reporting.WinForms.ReportParameter("Employe", "data");//Adjust value
// Completed Refresh
reportViewer.RefreshReport();
}
我对这份RDL报道很新,并为我的无知道歉......任何帮助都将不胜感激。
答案 0 :(得分:0)
通过一些搜索和探索,我想出了答案。
您的参数必须与报告中的名称完全匹配。
GUIDstring是其中一个报告参数的名称。
private void getreport_Click(object sender, EventArgs e)
{
//May/20/14 (02:07PM) [AST] - Bootty ton for getting the new RDL report.
outputBox.Clear();
reportViewer.Show();
reportViewer.ServerReport.ReportServerUrl = new Uri("http://prdukhscasq01/reportserver");
//reportViewer.ServerReport.ReportServerCredentials.ImpersonationUser = WindowsIdentity.GetCurrent();
//reportViewer.ServerReport.ReportPath = "/Charge Reconciliation/Combined Charge Report";
reportViewer.ServerReport.ReportPath = "/Scheduled Reports/HandOver/UK_HandOver_RoundingReport";
// Scheduled Reports/HandOver/UK_HandOver_RoundingReport
//May/20/14 (04:14PM) [AST] - Must manually declare the reporting type because Obj+ contains its own report params
string patients_guids = "";
foreach (Patient p in getSelectedPatients().Value)
{
patients_guids += p.VisitGUID + ",";
}
// Assembles the parameter to pass guids. Matching that of the report.
Microsoft.Reporting.WinForms.ReportParameter patient_guids_param =
new Microsoft.Reporting.WinForms.ReportParameter("GUIDstring", patients_guids);
reportViewer.ServerReport.SetParameters(patient_guids_param);
// Completed Refresh
reportViewer.RefreshReport();
}