DevExpress PivotGrid - 使用LookUpEdit存储库项进行编辑

时间:2014-08-16 10:10:11

标签: dynamic devexpress pivot editing repositorylookupedit

我正在使用PivotGrid将字符串值显示为我的数据区域值。我的第一个问题是,因为数据值是一个字符串,所以当执行数据透视时,所有单元格都包含零。但是,我通过将列聚合类型从sum更改为max来解决此问题。

现在,我的问题。我有一个SQL proc,它接受一个类型参数并返回该类型的可能值列表。 pivotgrid中的每个“列”都是这些类型之一。我只显示类型的字符串值,但我在网格的数据源中有一个int值(需要传递给proc)以及一个单独的字段。现在,我可以拥有任意数量的列,并且需要能够使用LookUpEdit存储库项编辑单元格。为每个单元格返回的值列表将由我忙于的列决定。因此,我需要动态地为每个单元格动态创建lookupedits,将单元格的类型ID作为参数传递,以正确填充下拉列表。

我能够做到这一点,但查找中的ID和网格上的ID之间没有链接。当我下拉时,我可以从查找中选择一个值,但我不知道如何将我选择的值绑定到网格数据源中的特定字段(单元格的值只是切换回下降之前的值) )。我认为主要的问题是我在网格的数据区域中显示字符串值而不是数值。此屏幕的用户需要字符串值才能知道他们正在做什么,并且需要能够从查找中选择一个新的字符串值来编辑基础表的int值。

我希望这很清楚。如果您需要更多细节,请随时询问。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用PivotDrillDownDataSource获取网格数据源的所有ID。订阅PivotGridControl.EditValueChanged活动,更新网格的数据源并使用PivotGridControl.RefreshData方法刷新PivotGridControl

private void pivotGridControl_EditValueChanged(object sender, EditValueChangedEventArgs e)
{
    var drillDown = e.CreateDrillDownDataSource();

    foreach (PivotDrillDownDataRow row in drillDown)
    {
        var id = row["Your ID Column"];

        //Get your Data Source entity by id

        var value = e.Editor.EditValue;

        //Set value to your Data Source entity
    }

    pivotGridControl.RefreshData();
}