Получить обработанную текущую строку родителя repositoryItemGridLookupEdit

У меня есть Gridview и RepositoryItemGridLookUpEdit в этом GridView Я хочу показать CustomDisplayText в RepositoryItemGridLookUpEdit

private void rgluePerson_CustomDisplayText(object sender, DevExpress.XtraEditors.Controls.CustomDisplayTextEventArgs e)
        {
            var person = rgluePerson.GetRowByKeyValue(e.Value) as Person;
            var name = person.Name;
            var surname = person.Surname;
            e.DisplayText = name + ", " + surname;
            }
        }

Проблема в том, что имя человека зависит от другой ячейки в той же строке (в основном Gridview), и я не знаю, как получить обрабатываемую строку текущего Gridview (текущая строка не работает, так как мне нужно, чтобы строка была обработано в данный момент)...... я не могу использовать событие gridView, потому что это изменит значение ячейки, но я хочу изменить значение Text. Кто-нибудь знает, как это сделать?

1 ответ

Вы не можете получить строку, обрабатываемую CustomDisplayText событие, потому что нет таких полей или свойств, которые содержат текущую строку. Вы можете использовать это событие только для сфокусированной строки. Для этого вы должны проверить, является ли тип отправителя GridLookUpEdit:

private void rgluePerson_CustomDisplayText(object sender, CustomDisplayTextEventArgs e)
{
    if (!(sender is GridLookUpEdit))
        return;

    var anotherCellValue = gridView1.GetFocusedRowCellValue("AnotherCellFieldName");

    //Your code here

    e.DisplayText = yourDisplayText;        
}

Для не сфокусированных рядов вы можете использовать только ColumnView.CustomColumnDisplayText событие:

private void gridView1_CustomColumnDisplayText(object sender, CustomColumnDisplayTextEventArgs e)
{
    if (e.Column.ColumnEdit != rgluePerson)
        return;

    var anotherCellValue = gridView1.GetListSourceRowCellValue(e.ListSourceRowIndex, "AnotherCellFieldName");

    //Your code here

    e.DisplayText = yourDisplayText; 
}
Другие вопросы по тегам