Нахождение ячейки в devexpress datagrid - PullRequest
0 голосов
/ 10 мая 2018

Я новичок в DevExpress GridControl. Мне нужно найти конкретную ячейку в сетке, а затем сделать что-то с ее значением. Как мне это сделать, пожалуйста?

В методе сетки Loaded я пытался использовать myGrid.FindRowByValue("ProductType","ABC"),, но всегда выдает отрицательное число.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

В отличие от XtraGrid, DXGrid для WPF не предоставляет свойства DataRowCount, поэтому мы предложили проверить ItemsSource в GridControl. С другой стороны, наша сетка имеет свойство VisibleRowCount, которое будет полезно в некоторых сценариях.

Чтобы выполнить эту задачу, выполните итерации по видимым строкам сетки вручную, как показано ниже.

void MoveFocusToLast(GridControl grid, string fieldName, object value) {
    for (int i = grid.VisibleRowCount - 1; i >= 0; i--) {
        var handle = grid.GetRowHandleByVisibleIndex(i);
        var currentValue = grid.GetCellValue(handle, fieldName);
        if (currentValue != null && currentValue.Equals(value)) {
            grid.View.FocusedRowHandle = handle;
            return;
        }
    }
}

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

См. Также:
Строки перемещения
Найти строку
Получить RowHandle из значения ячейки

0 голосов
/ 10 мая 2018

Вот код, который вы можете попробовать

for (int i = 0; i < gridView1.DataRowCount; i++) {
    object b = gridView1.GetRowCellValue(i, "FieldName");
    if (b != null && b.Equals(<someValue>)){
        gridView1.FocusedRowHandle = i;
        return;
    }
}

Вы можете перейти по этой ссылке для более подробной информации.

https://www.devexpress.com/Support/Center/Question/Details/Q132599/get-row-by-cell-value

...