Установите значение для той же ячейки в событии «DevExpress XtraGrid CellValueChanging» - PullRequest
0 голосов
/ 11 января 2012

У меня есть XtraGrid с одним GridView, со столбцом с флажком элемента репозитория.Теперь я обрабатываю событие CellValueChanging, потому что я хочу разрешить пользователю проверять или снимать флажки только на основе вычислений для других значений столбца в той же строке, поэтому мне нужны e.RowHandle и e.Column этого события, и это невозможно сделать наEditValueChanging элемента управления хранилища.

Теперь где-то мои вычисления говорят, что пользователь не может проверить конкретную ячейку, и я выбрасываю окно сообщения и пытаюсь Me.BandedGridView1.SetRowCellValue(e.RowHandle, e.Column, False), но, к сожалению, это не устанавливает значение false для этой ячейки.

Мне нужно делать это здесь и здесь только из-за огромного количества вычислений, основанных на других значениях столбца, и мне нужно установить значение текущей ячейки, событие которой я правильно обрабатываю.

Пожалуйста, помогите.

Я использую DevExpress 9.2 (нет шансов перейти на более новую версию)

Ответы [ 2 ]

2 голосов
/ 16 декабря 2013

Попробуйте этот код, он работает отлично!

private void GridView1_CellValueChanged(object sender, CellValueChangedEventArgs e)
{
    if (e.Column.Caption != "yourColumnCaption") return;
       GridView1.SetFocusedRowCellValue("yourColumnFieldName", 1);
}
1 голос
/ 27 февраля 2012

Возможно, вы захотите запретить обновления, обработав событие ShowingEditor.

class TestData
{
    public TestData(string caption, bool check)
    {
        Caption = caption;
        Check = check;
    }
    public string Caption { get; set; }
    public bool Check { get; set; }
}

Инициализация некоторых тестовых данных:

BindingList<TestData> gridDataList = new BindingList<TestData>();
gridDataList.Add(new TestData("First row", true));
gridDataList.Add(new TestData("Second row", true));
gridControl.DataSource = gridDataList;

Обработка показа редактора. Проверьте, разрешено ли пользователю изменять чечбокс. Если нет, отмените событие.

    private void gridView1_ShowingEditor(object sender, CancelEventArgs e)
    {
        GridView view = sender as GridView;
        //  Decision to allow edit using view.FocusedRowHandle and view.FocusedColumn
        if (view.FocusedColumn.FieldName == "Check")
        {
            //  Allow edit of odd rows only
            bool allowEdit = view.FocusedRowHandle % 2 == 1;
            e.Cancel = !allowEdit;
        }
    }
...