我需要编辑数据透视表中显示的信息,但该组件不允许我这样做。我将数据透视表绑定到DataTable
对象,使用Npgsql从数据库(PostgreSQL)填充。
这是填充DataSource
:
PivotGridControl1.DataSource = connection.getDataFromQuery("select * from fact");
方法getDataFromQuery
返回一个DataTable,其中包含查询执行的结果。
然后我定义了数据透视表的区域:
PivotGridField rowName = new PivotGridField ("item", FieldArea.RowArea);
PivotGridField columnField = new PivotGridField("name", FieldArea.ColumnArea);
PivotGridField dataField = new PivotGridField("amount", FieldArea.DataArea);
最后将它们添加到控件中:
PivotGridControl1.Fields.AddRange(new[] { rowName, columnField, dataField });
事情就是我按照自己的意愿获得数据透视表,但我无法编辑网格内的数据。
我使用的是DevExpress 13.2版本,有点旧,也许我需要更新,或者我需要在组件中配置一些东西。有什么想法吗?
答案 0 :(得分:2)
默认情况下,Dictionary
中的数据无法编辑,但您可以通过更改PivotGridField.CellTemplate
属性或PivotGridControl.FieldCellTemplate
属性来指定单元格的编辑器。
例如:
PivotGridControl
但您必须考虑编辑器中编辑的值如何反映在基础数据源中,因为<dxpg:PivotGridControl.FieldCellTemplate>
<DataTemplate>
<dxe:PopupCalcEdit
EditValue="{Binding Value, Mode=OneWay}"
...
/>
</DataTemplate>
</dxpg:PivotGridControl.FieldCellTemplate>
中的值是聚合,而不是数据本身。
这是一个例子:
PivotGridControl
<dxpg:PivotGridControl.FieldCellTemplate>
<DataTemplate>
<dxe:PopupCalcEdit
EditMode="InplaceInactive"
EditValue="{Binding Value, Mode=OneWay}"
MouseDown="PopupCalcEdit_MouseDown"
LostFocus="PopupCalcEdit_LostFocus"
/>
</DataTemplate>
</dxpg:PivotGridControl.FieldCellTemplate>
另外,请查看this DevExpress支持中心主题。