【发布时间】:2014-07-17 11:59:25
【问题描述】:
我使用数字 updown 控件来允许用户调整数值以影响我的 ultragrid 的变化。在我的 ultragrid InitializeLayout 事件中,我有以下内容:
...
var band = e.Layout.Bands[0];
band.Columns["CalcMarkup"].Formula = "if ([Markup] > 0, [FinalCost]*([Markup]/100), 0)";
band.Columns["RemainingCost"].Formula = "if([CalcMarkup] > 0, 0, [FinalCost] )";
band.Columns["ForcedMarkup"].Formula = "if([RemainingCost] = 0, 0, ([RemainingCost]/[sumRemCost()])*[force()])";
...
grdMain.DisplayLayout.Bands[0].Summaries.Add("force", "[ForcedAdj()]", SummaryPosition.UseSummaryPositionColumn, grdMain.DisplayLayout.Bands[0].Columns["ForcedMarkup"]);
...
var value = 1 - (nudMarginPer.Value/100);
_marginFormula = string.Format("( ( ([finCost()]/{0})-sum([FinalCost]) )-sum([CalcMarkup])-5000000 )", "{0}");
band.Summaries.Add("ForcedAdj", string.Format(_marginFormula, value));
band.Summaries["ForcedAdj"].SummaryDisplayArea = SummaryDisplayAreas.None;
...
grdMain.DisplayLayout.Bands[0].Summaries.Add("force", "[ForcedAdj()]", SummaryPosition.UseSummaryPositionColumn, grdMain.DisplayLayout.Bands[0].Columns["ForcedMarkup"]);
在数字 updown 事件中:
void nudMarginPer_ValueChanged(object sender, EventArgs e)
{
var value = 1 - (nudMarginPer.Value/100);
grdMain.DisplayLayout.Bands[0].Summaries["ForcedAdj"].Formula = string.Format(_marginFormula, value);
}
这很有效,因为当用户按下 updown 按钮时,摘要 (ForceAdj) 值会发生变化并反映在网格摘要行中。但是,ForcedMarkup 的列公式在按下第二个按钮之前不会改变。所以现在摘要是正确的,但是单元格中的值是关闭的。
我的问题是……如何强制 ForcedMarkup 的公式(或任何列公式)刷新以反映当前的计算?
我尝试过强制更新网格、重新计算 calcmanager 等...似乎没有任何效果。
*** 7/20: This appears to be an issue when using group by.
【问题讨论】:
标签: c# infragistics