Page_Init против Page_Load - Crystal Reports - PullRequest
0 голосов
/ 29 октября 2018

Мне кажется, мне нужно выбрать между Page_Init, если я хочу, чтобы мой Crystal Report не запрашивал параметры при изменении страницы. Или Page_Load, если я хочу, чтобы раскрывающийся список работал правильно, чтобы установить параметр. Я хочу сделать оба, хотя!

Я предполагаю, что это потому, что выпадающий список не существует во время Page_Init? Как я могу сделать эту работу? Соответствующий код ниже:

ReportDocument rptDoc;
dsfeeEarnings ds1;
protected void Page_Init(object sender, EventArgs e)
{
    var dt = new DataTable();
    ds1 = new dsfeeEarnings();
    dt.TableName = "Crystal Report Fee Earnings";
    dt = getFeeEarnings1();
    ds1.Tables[0].Merge(dt);
    rptDoc = new ReportDocument();
    rptDoc.Load(Server.MapPath("Report.rpt"));
    rptDoc.SetDataSource(ds1);
    CrystalReportViewer1.ReportSource = rptDoc;
}

dsfeeEarnings - это файл .xsd, который входит в отчет. getFeeEarnings1() - это метод, который обрабатывает значение раскрывающегося списка и запускает хранимую процедуру с использованием этого значения.

Я пытался поместить приведенный выше код в блок if (!IsPostBack), но это, похоже, вообще не позволяет отчету работать.

Вместо этого я попытался создать сеанс, это помогло с раскрывающимся списком, но в отчете по-прежнему запрашивались параметры каждый раз, когда я менял страницу.

1 Ответ

0 голосов
/ 01 ноября 2018

Я исправил это, используя следующий код:

ReportDocument rptDoc = new ReportDocument();
protected void Page_Init(object sender, EventArgs e)
{
     CrystalReportViewer1.ReportSource = rptDoc;
}

protected void Page_Load(object sender, EventArgs e)
{
    DataTable dt = new DataTable();
    dsfeeEarnings ds = new dsfeeEarnings();

    rptDoc.Load(Server.MapPath("FeeEarningsReport.rpt"));
    rptDoc.SetDataSource(ds);
    dt = getFeeEarnings1();
    ds.Tables[0].Merge(dt);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...