2017-01-10 100 views
0

我正在写一个程序,使用Excel文件动态地创建发票。一切工作正常,除了报告细节部分显示了很多行之间的间距,高达2'的间距。我正在使用绑定标签来创建线条。我已经阅读,使用XRRichText可以帮助,但它没有。你能帮我么?动态XtraReport给了我很多线之间的间距详细信息

报告:

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; 
    } 
} 

报告生成:

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(); 

    } 

回答

0
绑定

的XtraReport数据呈现使用详细信息区域设置每一行。设置不仅包括添加到Detail Band的组件,还包含Detail Band的高度。要减小线条之间的间距,请将DetailBand.HeightF属性设置为较小的值。

+0

我猜这是在BeforePrint方法中,对吗? –

+0

您可以在XtraReport构造函数中甚至在Visual Report Designer中更改此设置。 – Uranus