【问题标题】:Infragistics UltraGrid with Expandable Rows具有可扩展行的 Infragistics UltraGrid
【发布时间】:2012-10-09 17:50:25
【问题描述】:

我正在向我的用户展示 UltraGrid 中来自数据库的项目列表。 现在,我有一个需求,但我找不到任何有用的东西或任何清晰的文档,也没有可以学习的教程。

我需要扩展此网格的功能,设置一个 (+) 扩展功能,当用户按下该按钮 (+) 时,该行会扩展并显示历史记录中的项目。

世界上任何人都可以帮助我解决这个问题或指出我可以学习的适当文档吗?

非常感谢。

【问题讨论】:

    标签: windows winforms infragistics expand ultrawingrid


    【解决方案1】:

    诀窍很简单。您只需要将网格绑定到包含两个(或更多)表和将表粘合在一起的正确 DataRelation 对象的 DataSet。
    您还需要确保属性 grid.DisplayLayout.ViewStyle 设置为 MultiBand(它是默认设置,因此应该已经设置)。

    因此,例如,在这个伪代码中,我加载了两个表并将它们添加到一个数据集,然后我定义了所涉及的列之间的假定关系,最后我将数据集绑定到了网格。

    DataSet ds = new DataSet();
    DataTable dtItems = YourLoadDataTableMethodHere("Items");
    ds.Tables.Add(dtItems);
    DataTable dtHistory = YourLoadDataTableMethodHere("History");
    ds.Tables.Add(dtHistory);
    DataRelation rel = new DataRelation("Items_History_Relation",
                            dtItems.Columns["IDItem"],
                            dtHistory.Columns["IDItem"]);
    ds.Relations.Add(rel);
    grid.DataSource = ds;
    

    这将自动强制 UltraGrid 创建两个 Bands (grid.DisplayLayout.Bands[]),在第一个 Band (Band[0]) 中您会找到 Items 数据表的行,每一行都有其 [+]按钮单击并展开第二个波段 (Band[1]),您将在其中看到与第一个波段中的行相关的历史记录行

    【讨论】:

    • 我想知道,如何做到这一点,但对象。我正在使用 EntityFramework,并将这些对象映射到传输到我的 GUI 层的 DTO。我的 GUI 层只知道 DTO。
    • 当您将网格绑定到对象列表时,只要对象公开 IList 类型的属性,您将自动获得扩展指示器,因为将为子级创建带区。
    猜你喜欢
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多