【发布时间】: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