gpt4 book ai didi

c# - 如何使用动态数量的波段和列为 DevExpress BandedGridView 正确设置 DataSource

转载 作者:行者123 更新时间:2023-11-30 17:05:47 28 4
gpt4 key购买 nike

我正在为 WinForms 使用 BandedGridView。我只在运行时获得有关 BandedGridView 结构(带数和列数)的信息。所以我必须手动填写它。我可以正确地创建完整的结构,但我不明白如何用数据填充它。我尝试通过两种方式做到这一点:

1.使用 GridControl.DataSource 属性。但在这里我遇到了问题,因为我有动态的列数,所以我无法创建静态类来表示 GridViewRow,其中类属性将表示列字段。我只有这种形式的数据:List(代表每一行),在 OuterClass 内部我有 List 类型的属性(代表 GridView 中的每一列)。我尝试创建代表整行的动态对象并设置为 GridControl.DataSource 属性 BindingList 但这次它在绑定(bind)时触发 NullReferenceException。堆栈跟踪的顶部是:

DevExpress.XtraGrid.Columns.GridColumn.get_ColumnType() in DevExpress.XtraGrid.Views.Base.ColumnView.GetColumnDefaultRepositoryItem(GridColumn column) in DevExpress.XtraGrid.Views.Grid.GridView.GetRowCellRepositoryItem(Int32 rowHandle, GridColumn column) in DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo.CreateCellInfo(GridDataRowInfo ri, GridColumnInfoArgs columnInfo) in DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo.CalcRowCellsDrawInfo(GridDataRowInfo ri, GridColumnsInfo columnsInfo) in DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo.CalcDataRow(GridDataRowInfo ri, GridRow row, GridRow nextRow) in DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo.CalcRowsDrawInfo() in DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo.CalcGridInfo()

但我默认保留所有列类型,并使用 typeof(string) 的值填充列。我检查每一列的 FieldName 并检查我的动态对象的相同属性名称 - 它等于。

2.所以我尝试另一种方式。尝试使用 AddNewRow() 和 SetRowCellValue() 方法手动填充我的 gridview。但是现在当我不填充 GridControl.DataSource 属性时,只调用 AddNewRow() - 我的 gridview 没有任何变化。我在网格中看不到行。当我检查 GridView.FocusedRowHandle 时,它​​返回负值,据我所知,新行没有添加到我的 View 中。

所以我需要帮助,在我的情况下如何填充 BandedGridView?

最佳答案

我找到了解决方案。我在手动生成波段和列时犯了一个错误。我已将列附加到 bands 列集合,但没有将其附加到 bandedgridview 列集合。因此,当我修复此问题时,数据源已成功填充。

关于c# - 如何使用动态数量的波段和列为 DevExpress BandedGridView 正确设置 DataSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16104260/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com