为什么我不能编辑DevExpress数据透视表数据?

时间:2015-09-28 16:59:09

标签: c# wpf postgresql devexpress pivot-table

我需要编辑数据透视表中显示的信息,但该组件不允许我这样做。我将数据透视表绑定到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 });

事情就是我按照自己的意愿获得数据透视表,但我无法编辑网格内的数据。

enter image description here

我使用的是DevExpress 13.2版本,有点旧,也许我需要更新,或者我需要在组件中配置一些东西。有什么想法吗?

1 个答案:

答案 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支持中心主题。