2017-01-19 15 views
0

У меня есть сетка элементов в счете-фактуре. Я внедрил код для приема номера штрих-кода в текстовом поле вне сетки. Теперь, если отсканированный элемент новый, он добавляется в представление сетки. Но если он уже существует, программа увеличивает количество элемента на единицу.Изменение размера сетки в разрезе с изменением вида вне вида сетки

В: Как я могу выделить (или раскрасить) затронутую строку (строку, в которой количество увеличилось на единицу)?

+0

У вас есть некоторый код для обмена, поэтому мы знаем, как внешний вид сетки и текстовое поле как? Что вы пробовали? – kloarubeek

ответ

0

DevExpress предоставляет события RowStyle и RowCellStyle для своих GridView.

В каждом случае вы можете проверить состояние текущей строки или ячейки в стиле и изменить ее внешний вид на основе данных внутри строки.

Вы можете добавить скрытое поле bool в таблицу, которая отслеживает строки LastChanged. Прежде чем сканировать новый штрих-код, вы можете просто установить для этого поля значение false для всех строк и установить его в true только для строк, размер которых изменился.

Затем вы можете использовать один из следующих обработчиков событий для стиля строки или ячейки на основе данных:

private void gridView_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e) 
{ 
    if (e.RowHandle < 0) return; 

    GridView view = sender as GridView; 

    DataRowView rowView = (DataRowView) view.GetRow(e.RowHandle); 

    if ((bool)rowView["LastChanged"]) 
     e.Appearance.BackColor = Color.Yellow; 
    else 
     e.Appearance.BackColor = Color.White; 
} 

Или, если вы только хотели, чтобы окрасить Amount клетку.

private void gridView_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e) 
{ 
    if (e.RowHandle < 0) return; 

    if (e.Column.Name != "Amount") return; 

    DataRowView rowView = (DataRowView)(((GridView)sender).GetRow(e.RowHandle)); 

    if ((bool)rowView["LastChanged"]) 
     e.Appearance.BackColor = Color.Yellow; 
    else 
     e.Appearance.BackColor = Color.White; 
} 
0

Вы можете использовать DataRowState собственность или вы будете иметь другой Колум QuantityChanged булево и вы будете использовать RowCellStyle событие

private void gridView1_RowCellStyle(object sender, RowCellStyleEventArgs e) { 
    GridView view = sender as GridView; 
    qChanged = Convert.ToBoolean(view.GetRowCellDisplayText(e.RowHandle, View.Columns["QuantityChanged "])); 
if (qChanged == true) 
e.Appearance.BackColor = Color.Red; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^