0

我们正在寻找将 List&Label Drilldowns 集成到我们的报告中的文档。

官方文档在我看来真的很糟糕。我们从他们的支持中获得了一些代码片段,但仅包含未键入的数据且没有任何注释。

object[] restrictions = new Object[] { null, null, null, "TABLE" };
DataTable table = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, restrictions);

OleDbDataAdapter dataAdapter = new OleDbDataAdapter(new OleDbCommand("SELECT * FROM [" + tableName + "] WHERE OrderID > 11040", onn));

object[] restrictions1 = new Object[] { null, null, null, null };
DataTable table1 = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Foreign_Keys, restrictions1);

ds.Relations.Add(new DataRelation(relationName, ds.Tables[parentTable].Columns[parentCol], ds.Tables[childTable].Columns[childCol]));

我们不知道他们为什么在这里使用空对象数组以及如何IEnumerable<MyClass>根据要求生成报告。最后,这并没有帮助,我们仍在搜索如何将键入的数据传递给带有钻取数据的报告。

也许有人可以在这里提供帮助并提供一些最佳实践经验?

4

1 回答 1

1

您粘贴的片段不是 LL 特定的,而是通过 ADO.NET 解析表和关系的通用方法。假设您有一个IEnumerable<Customer> 按照以下方式定义 Customer 类的位置

class Customer
{
    //Constructor
    public Customer(int customerID, string companyName, string contactName, string address, string city)
    {
        CustomerID = customerID;
        CompanyName = companyName;
        ContactName = contactName;
        Address = address;
        City = city;
        OrderList = new List<Order>();
    }

    public List<Order> OrderList { get; set; }

    // The CustomerID should not be available in the designer
    [Browsable(false)]
    public int CustomerID { get; set; }
    public string CompanyName { get; set; }

    // Set display name, which should be used in the designer
    [DisplayName("Name")]
    public string ContactName { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
}

// The "Order" class represents a single order of a customer
class Order
{
    //Constructor
    public Order(int orderID, DateTime orderDate, string shipName, string shipCountry, double price)
    {
        OrderID = orderID;
        OrderDate = orderDate;
        ShipName = shipName;
        ShipCountry = shipCountry;
        Price = price;
    }

    public int OrderID { get; set; }
    public DateTime OrderDate { get; set; }
    public string ShipName { get; set; }
    public string ShipCountry { get; set; }
    public double Price { get; set; }
    // Explicitly set a barcode field type
    [FieldType(LlFieldType.Barcode_EAN128)]
    public string PriceEan
    {
        get { return Price.ToString(); }
    }
}

你通常需要做的就是

using (ListLabel LL = new ListLabel())
{
    LL.DataSource = MyCustomerList;
    LL.Design();
}

这将为您提供所有的功能,包括从类Customer到下钻等Order。我还添加了可用属性的示例以微调结果。

于 2016-03-30T15:13:13.417 回答