Передача параметров из другой формы в форму с помощью ReportViewer

Привет, у меня есть ReportViewer в моем Form2, и у меня есть textboxes в Form1, и в событии button_click в Form1 я открываю form2 и передаю эти строки:

 string klient_name = txt_name.Text;
        string klient_address2 = txt_adress2.Text;
        string klient_address = txt_adress.Text;
        voucher_sestava a = new voucher_sestava();
        a.k_name = klient_name;
        a.k_address2 = klient_address2;
        a.k_address = klient_address;
        a.Show();

Form2 я получил следующий код:

public string k_name { get; set; }
    public string k_address2 { get; set; }
    public string k_address { get; set; }

private void form2_Load(object sender, EventArgs e)
    {


        ReportParameter p1 = new ReportParameter("name",k_name);
        ReportParameter p2 = new ReportParameter("address",k_address);
        ReportParameter p3 = new ReportParameter("address2", k_address2);


        this.firmaTableAdapter.Fill(this.dataset_voucher.firma);
        this.reportViewer1.ServerReport.SetParameters(new ReportParameter[] { p1, p2, p3 }); 
        this.reportViewer1.RefreshReport();

    }

Когда я пытаюсь написать в Expression текстового поля ReportViewer вот так:

=Parameters!name.Value 

Я получил следующую ошибку:

Выражение значения для текстового поля «Textbox14» относится к несуществующему параметру отчета «имя». Буквы в именах параметров должны быть в правильном регистре.

Может кто-нибудь, пожалуйста, помогите мне исправить это? Огромное спасибо.


person Marek    schedule 06.09.2013    source источник
comment
ReportViewer у вас нет TextBox для написания какого-либо выражения. На самом деле это область разработки Local Report или другого типа отчета, который поддерживает время разработки.   -  person King King    schedule 06.09.2013


Ответы (2)


Настоящая проблема заключалась в том, что я не создал Report Parameters в файле Report.rdlc.

Это можно сделать, перейдя к Report Data - щелкните правой кнопкой мыши Parameters - Add Parameters.

Заполните имя параметра, которое должно совпадать с проанализированным:

p3 = новый параметр отчета ("адрес", textBox1.Text);

При необходимости вы можете разрешить null value и blank value. (Я использовал в этом случае`

Окончательный код должен выглядеть так:

ReportParameter[] parameter = new ReportParameter[3]; // 3 indicates number of total parameters passed
parameter[0] = new ReportParameter("rp_name", textBox1.Text);
parameter[1] = new ReportParameter("rp_surname", textBox3.Text);
parameter[2] = new ReportParameter("rp_address",textBox2.Text;

this.reportViewer1.LocalReport.EnableExternalImages = true;
this.reportViewer1.LocalReport.SetParameters(parameter);
this.reportViewer1.RefreshReport();
person Marek    schedule 27.01.2014

Параметры чувствительны к регистру. Измените значение Textbox14 на правильный регистр. Либо верхний, либо нижний.

person Microsoft DN    schedule 06.09.2013
comment
это что-то добавляет к ответу? - person Ehsan; 06.09.2013