Dynamic XtraReport gives me a lot of spacing between lines in Detail

2.3k views Asked by At

I am writing a program that creates invoices dynamically using Excel files. Everything works fine, except that the report Detail section shows a lot of spacing between lines, up to 2' spacing. I am using a bound label to create the lines. I have read that using a XRRichText can help but it didn't. Can you please help me?

Report:

public partial class XtraReport1 : DevExpress.XtraReports.UI.XtraReport
{
    public XtraReport1()
    {
        InitializeComponent();
    }

    public void AddBoundLabel(String bindingMember, Rectangle bounds)
    {
        XRLabel label = new XRLabel();
        Detail.Controls.Add(label);

        label.Font = new Font("Arial", 8);
        label.Location = bounds.Location;
        label.Size = bounds.Size;
        label.DataBindings.Add("Text", null, bindingMember);
        label.CanGrow = true;
        label.CanShrink = true;
        label.HeightF -= 50;
        label.Padding = 0;
    }

    private void xrLabel_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
    {
        XRRichText label = sender as XRRichText;
        e.Cancel = true;

        label.HeightF = 1 ;
        label.Padding = 0;
    }
}

Report Generation:

 private void button1_Click(object sender, EventArgs e)

    {
        int cantidad;
        string codigo, descripcion;
        double pU, pT;
        ArrayList listBindingSource = new ArrayList();
        List<String> myList = dataGridView1.DataSource as List<String>;

        for(int i = 0; i< dataGridView1.Rows.Count; i++)
        {
            cantidad = Convert.ToInt16(dataGridView1.Rows[i].Cells[0].Value);
            codigo = dataGridView1.Rows[i].Cells[1].Value.ToString();
            descripcion = dataGridView1.Rows[i].Cells[2].Value.ToString();
            pU = Convert.ToDouble(dataGridView1.Rows[i].Cells[3].Value);
            pT = Convert.ToDouble(dataGridView1.Rows[i].Cells[4].Value);
            listBindingSource.Add(new FacturaRecord(cantidad, codigo, descripcion, pU, pT));
        }

        XtraReport1 report = new XtraReport1();
        report.Margins = new System.Drawing.Printing.Margins(100, 100, 25, 25);
        report.DataSource = listBindingSource;

        report.xrLabel6.Text = String.Format("Date: {0}", dateTimePicker1.Value.ToShortDateString());
        report.xrLabel11.Text = String.Format("Invoice Number {0}", textBox1.Text);
        report.xrLabel12.Text = String.Format("Total: ${0}", sum);

        report.AddBoundLabel("cantidad", new Rectangle(100, 20, 50, 5));
        report.AddBoundLabel("codigo", new Rectangle(150, 20, 100, 5));
        report.AddBoundLabel("descripcion", new Rectangle(250, 20, 200, 5));
        report.AddBoundLabel("precioUnitario", new Rectangle(500, 20, 50, 5));
        report.AddBoundLabel("precioTotal", new Rectangle(600, 20, 50, 5));

        ReportPrintTool printTool = new ReportPrintTool(report);
        printTool.ShowPreviewDialog();

    }
1

There are 1 answers

2
Uranus On

The data bound XtraReport renders each line using the Detail Band settings. Settings include not only the components added to the Detail Band, but the Detail Band height as well. To decrease the spacing between lines, set the DetailBand.HeightF property to a smaller value.