Devexpress TreeList - как я могу удалить значение из ячейки, если она установлена ​​только для чтения

Я использую элемент управления devexpress TreeList. В Treelist у меня есть ситуация, когда один из моих столбцов доступен только для чтения. В этом столбце могут быть добавлены некоторые текстовые значения, когда что-то происходит в другой ячейке. Я ограничил запись пользователя в ячейке, установив свойство, подобное этому

    treeList1.Columns["col3"].OptionsColumn.ReadOnly = true;

Теперь я хочу удалить текстовое значение из некоторых ячеек, и поскольку оно только для чтения, кнопки удаления не работают. Можете ли вы предложить событие / метод и код, который позволит пользователю удалить текст? Любая помощь приветствуется.

1 ответ

Решение

Отредактированное решение:

Вы должны знать, что когда курсор находится в ячейке (в режиме редактирования), и вы нажимаете кнопку, это не TreeList кто отправляет KeyDown событие, но RepositoryItemButtonEdit, Таким образом, вы должны обрабатывать событие также для RepositoryItemButtonEdit,

Чтобы не дублировать код, я написал один обработчикonKeyDown', в которой я проверяю, кто является отправителем.

treeList1.KeyDown += onKeyDown;
riButtonEdit.KeyDown += onKeyDown;

А вот пример кода, показывающий, как обращаться с KeyDown событие для обоих treeList а также repositoryButtonEditи установите значение ячейки в null:

private void onKeyDown(object sender, KeyEventArgs e)
{
    // Test if the button pressed is the delete button
    if (e.KeyCode != Keys.Delete)
        return;

    // Test if the focused column is colValue
    if (treeList1.FocusedColumn != colValue)
        return;

    // Set the cell value to null
    treeList1.FocusedNode.SetValue(colValue, null);

    // If it's the ButtonEdit who send the event, make it's EditValue null
    var btnEdit = sender as ButtonEdit;
    if (btnEdit != null)
    {
        btnEdit.EditValue = null;
    }
}
Другие вопросы по тегам