XRTableRow Class

A row in an XRTable.

Namespace: DevExpress.XtraReports.UI

Assembly: DevExpress.XtraReports.v21.1.dll

Declaration

public class XRTableRow :
    XRControl,
    IWeighty,
    IWeightyContainer

Remarks

An XRTableRow object contains a collection of table cells. To access these cells, use the row’s Cells property. To add new cells to the row, use the Add method of this property. Utilize the row’s Table property to access the parent table of the current row.

Create a Table at Runtime

The code sample below illustrates how to create an XRTable at runtime.

using DevExpress.XtraReports.UI;
// ...
// Create a report.
XtraReport report = new XtraReport();

// Create a detail band and add it to the report.
DetailBand detailBand = new DetailBand();
report.Bands.Add(detailBand);

// Create a table and add it to the detail band.
XRTable table = new XRTable();
detailBand.Controls.Add(table);

// Add rows and colums to the table.
int numRows = 10;
int numCols = 20;

table.BeginInit();

for (int i = 0; i < numRows; i++) {
    XRTableRow row = new XRTableRow();
    table.Rows.Add(row);

    for (int j = 0; j < numCols; j++) {
        XRTableCell cell = new XRTableCell();
        table.Rows[i].Cells.Add(cell);
    }
}

// Set table size.
table.HeightF = 50;
table.WidthF = 500;

table.EndInit();

The following code sample creates an XRTable at runtime and binds the table to data:

using DevExpress.XtraReports.UI;
using DevExpress.DataAccess.Sql;
using DevExpress.DataAccess.ConnectionParameters;
// ...
private static SqlDataSource CreateSQLDataSource() {
    // Create a data source with the required connection parameters.  
    Access97ConnectionParameters connectionParameters = new Access97ConnectionParameters("Data/nwind.mdb", "", "");
    SqlDataSource dataSource = new SqlDataSource(connectionParameters);

    // Create a SELECT query.
    SelectQuery query = SelectQueryFluentBuilder
        .AddTable("Products")
        .SelectColumn("ProductName")
        .SelectColumn("UnitPrice")
        .Build("selectQuery");

    // Add the query to the collection and return the data source. 
    dataSource.Queries.Add(query);
    dataSource.Fill();
    return dataSource;
}
// ...
// Create a new data source.
SqlDataSource sqlDataSource = CreateSQLDataSource();

// Create a new report and assign the data source to it.
XtraReport report = new XtraReport();
report.DataSource = sqlDataSource;
report.DataMember = "Products";

// Create a detail band and add it to the report.
DetailBand detailBand = new DetailBand();
report.Bands.Add(detailBand);

// Create a table and add it to the detail band.
XRTable table = new XRTable();
detailBand.Controls.Add(table);

// Create a row and add the product name and product price cells to the row.
table.BeginInit();

XRTableRow row = new XRTableRow();
table.Rows.Add(row);

XRTableCell productName = new XRTableCell();
XRTableCell productPrice = new XRTableCell();

row.Cells.Add(productName);
row.Cells.Add(productPrice);

// Bind the table cells to the data fields.
productName.ExpressionBindings.Add(new ExpressionBinding("BeforePrint", "Text", "[ProductName]"));
productPrice.ExpressionBindings.Add(new ExpressionBinding("BeforePrint", "Text", "[UnitPrice]"));

table.EndInit();

Create a Custom Table

Implement descendants of the XRTable and XRTableRow classes to create a custom table (for instance, a table with a different default row height or with pre-populated cells). Override the protected virtual XRTable.CreateRow and XRTableRow.CreateCell methods. These methods are invoked in all designer operations, except for multiple item drops from the Field List.

The code sample below illustrates custom table implementation.

using DevExpress.XtraReports.UI;
using System.ComponentModel;
// ...

namespace WindowsFormsApplication1 {
    [ToolboxItem(true)]
    public class XRTableEx : XRTable {
        // Override the CreateRow() method to create a custom table row.
        protected override XRTableRow CreateRow() {
            return new XRTableRowEx();
        }
    }

    // Implement a custom table row with specified height.
    public class XRTableRowEx : XRTableRow {
        public XRTableRowEx()
            : base() {
            SizeF = new System.Drawing.SizeF(120, this.DefaultHeight);
        }

        // Override the CreateCell() method to create a custom table cell.
        protected override XRTableCell CreateCell() {
            return new XRTableCellEx();
        }

        // Specify the default row height.
        protected override int DefaultHeight {
            get {
                return 35;
            }
        }
    }

    // Implement a custom table cell with custom text.
    public class XRTableCellEx : XRTableCell {
        public XRTableCellEx() {
            Text = "MyCustomXRTableCellEx";
        }
    }
}
See Also