Как получить значение ячейки из несвязанного столбца сразу после его обновления? - PullRequest
1 голос
/ 04 августа 2011

У меня следующая ситуация.

Я строю сетку из коллекции объектов. Затем я добавляю два несвязанных столбца. Первый несвязанный столбец имеет редактор RepositoryItemSpinEdit и содержит целые числа. второй несвязанный столбец содержит только целые числа.

Я пытаюсь обновить второй столбец сразу после изменения первого. Но второй столбец обновляется только после того, как первый потерял фокус. Затем отображается обновленное значение в позиции, а прибыль рассчитывается с прежним значением в позиции. Любая идея, как обмануть систему, чтобы сделать то, что я хочу?

var spinEditor = new RepositoryItemSpinEdit
                {
                    MaxValue = 999999,
                    MinValue = -999999,
                    IsFloatValue = false,
                };
spinEditor.EditValueChanged += this.CalculateProfit;
this.gridView.GridControl.RepositoryItems.Add(spinEditor);

this.gridView.Columns.AddField("Position");
this.gridView.Columns["Position"].Caption = "Position";
this.gridView.Columns["Position"].VisibleIndex = this.grid.VisibleColumns.Count;
this.gridView.Columns["Position"].ColumnEdit = spinEditor;
this.gridView.Columns["Position"].UnboundType = UnboundColumnType.Integer;
this.gridView.Columns["Position"].DisplayFormat.FormatType = FormatType.Numeric;

this.gridView.Columns.AddField("Profit");
this.gridView.Columns["Profit"].Caption = "PnL";
this.gridView.Columns["Profit"].VisibleIndex = this.gridView.VisibleColumns.Count;
this.gridView.Columns["Profit"].UnboundType = UnboundColumnType.Decimal;
this.gridView.Columns["Profit"].DisplayFormat.FormatType = FormatType.Numeric;

private void CalculateProfit(object sender, EventArgs eventArgs)
{
    int rowIndex = this.gridView.FocusedRowHandle;
    var curve = this.gridView.GetRow(rowIndex) as Curve;
    this.gridControl.SetGridViewCurve(curve.ID, "Profit", curve.Price * curve.Position);
}

1 Ответ

1 голос
/ 05 августа 2011

Все, что мне нужно было сделать, это позвонить

this.gridView.PostEditor()

в методе, который вызывается при возникновении события.

Более подробную информацию можно найти здесь и здесь

...