2014-11-04 1 views
0

У меня есть Gridview и RepositoryItemGridLookUpEdit в этом GridView Я хочу показать CustomDisplayText в RepositoryItemGridLookUpEditполучить repositoryItemGridLookupEdit родителя currentrow обрабатываются

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. Кто-нибудь знает, как это сделать?

+0

Используйте метод GetSelectedRows, чтобы проверить, если строка обрабатывается – Sybren

+0

I попробовал gridView3.GetSelectedRows() внутри события CustomDisplayText и не получил строку, обрабатываемую событием. –

ответ

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; 
} 
+0

Thanx! Второе событие - то, что я искал. события rgluePerson заставили меня немного смутить –