Как создать простой DTO для хранения всех параметров отчета. Сохраните этот DTO в сеансе и получите доступ на странице просмотра отчетов, где находится ваш контроль зрителя.
Чтобы перейти через сеанс, когда пользователь открывает несколько экземпляров в браузере, вы можете сделать простой трюк. Когда пользователь предоставляет параметр и нажимает «Показать отчет», в этот момент создайте guid, сохраните значение внутри сеанса, используя ключ в качестве этого guid, и передайте это guid как параметр строки запроса на страницу просмотра отчетов. Таким образом, каждый экземпляр страницы просмотра отчетов знает, какое значение сеанса должно быть выведено.
Нечто подобное
public class AttendanceDTO
{
public int EmployeeId {get;set;}
public string Month {get;set;}
}
И тогда в вашей "странице параметров отчета"
/* JUST NOTEPAD CODE, SYNTAX MIGHT VARY */
protected override ShowReport_Click(object sender, EventArgs e)
{
string guid = new Guid();
AttendanceDTO dto = new AttendanceDTO()
{ EmployeeId = txtEmployee.Text;
Month = txtMonth.text
};
session[guid] = dto;
Response.Redirect("ReportViewer.aspx?Guid=" + guid);
}
А потом внутри вашего Report Viewer Page
string guid = Request.QueryString["Guid"]; //Null check etc..
AttendanceDTO dto = (AttendanceDTO) session[guid];
//Provide dto values as parameters to your report viewer control and then clean the session
[Вы должны были бы сделать убедитесь, что вы очистите соответствующее значение сеанса после его использования.] [ Над кодом находится только блокнот, чтобы дать вам представление. В дополнение к этому вы можете принести больше инноваций]
Дорогой Субхаш, спасибо за подробный ответ. Это очень хорошая идея. Вы хотите сделать атрибут внутри DTO для GUID, который я также должен хранить в сеансе вместе с параметрами отчета? –
Привет, Damien, я был бы рад, если это вам поможет. Я просто обновил свой ответ на каком-то примере, чтобы дать вам общую идею. –
Спасибо Субаш. То, что я искал, отмечая твое как ответ =) –