【问题标题】:How to properly set DataSource for DevExpress BandedGridView with dynamic number of bands and columns如何正确设置 DevExpress BandedGridView 的 DataSource 与动态带和列数
【发布时间】:2013-04-12 19:48:54
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

标签: c# gridview devexpress


【解决方案1】:

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

【讨论】:

  • 我可以建议将您的解决方案分享给任何认为此答案有益的人吗?
猜你喜欢
  • 1970-01-01
  • 2013-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-03
  • 1970-01-01
相关资源
最近更新 更多