Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / XtraGrid (DevExpress): индикатор состояния строки (программное изменение) / 3 сообщений из 3, страница 1 из 1
24.10.2013, 10:11
    #38439340
dred_d
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XtraGrid (DevExpress): индикатор состояния строки (программное изменение)
Здравствуйте!
По нажатию на Enter внесенные пользователем изменения в ячейку XtraGrid заношу в таблицу (фрагмент кода события CellValueChanged приведен ниже), но индикатор статуса строки при этом никак не могу перевести из состояния модифицируется в состояние обычной фокусировки на неизмененной строке: с идентификатора в виде вертикального разделителя к идентификатору в виде треугольничка (см. скрин 1 и скрин 2):
http://documentation.devexpress.com/#WindowsForms/CustomDocument554
Правда, я добился требуемого результата через эмуляцию нажатия клавиши “ESC”, но нажатие клавиши “ESC” выполняет же какой-то код, который изменяет вид идентификатора, может кто подскажет какой именно?
Закомментированные варианты после SendKeys.Send("{ESC}"); не дали требуемого результата.
Еще вариант вызвать событие Click на “row indicator panel”, но, к сожалению, так же не нашел как это реализовать.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
private void deGridViewLoad_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
           deGridViewLoad.UpdateCurrentRow();
           //SendKeys.Send("{ESC}");  // переводит индикатор строки со статуса "данные редактируются" в статус "данные не изменялись": важно (!), поскольку в статусе "данные не изменялись" кнопка "ESC" уже не сможет отменить правки

           //deGridViewLoad.GetDataRow(e.RowHandle).EndEdit();
           //deGridViewLoad.PostEditor();
           //deGridViewLoad.CloseEditor();
           //deGridViewLoad.FocusedColumn = deGridViewLoad.Columns.ColumnByFieldName("E-MAIL");
        }



--
MS SQL SERVER 2008R2 (RTM) 10.50.1600.1 (X64) + C# .Net 3.5/4 + Delphi 5\7
...
Рейтинг: 0 / 0
24.10.2013, 11:55
    #38439576
Arty1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XtraGrid (DevExpress): индикатор состояния строки (программное изменение)
Попробуй это...может что-то получится. В базовом классе прописываешь

protected virtual void DataTable_TableChangeRow(object sender, System.Data.DataRowChangeEventArgs e)
{
if (IsNotAllowPerformTableChangedActions())
return;
MakeSomeActionOnSourceChanging(SourceChangeAction.ChangeRowData,e.Row);
RaiseOnChangeEvent(e);
}

private void RaiseOnChangeEvent(DataRowChangeEventArgs e)
{
if (isDataInCalculationProcess) // проверка режима редактирования
return;

if (OnTablesDataChanged != null)
OnTablesDataChanged(this, e);

}


protected virtual void SetHandlersForAllTables()
{
foreach (DataTable table in dataTablesSet.Tables)
{

table.RowChanged += new DataRowChangeEventHandler(table_RowChanged);

//можешь сюда добавить
/* table.ColumnChanged += new DataColumnChangeEventHandler (DataTable_ColumnChanged);
table.TableNewRow += new DataTableNewRowEventHandler (DataTable_TableNewRow);
table.RowDeleted += new DataRowChangeEventHandler(DataTable_RowDeleted); */

}

}

protected virtual void table_RowChanged(object sender, DataRowChangeEventArgs e)
{

}

public event EventHandler OnTablesDataChanged; // регестрация события

Ну и вызываешь в своем классе обработки данных
protected override void DataTable_TableChangeRow(SourceChangeAction action, DataRow row)
{
base.DataTable_TableChangeRow(action, row);

if (row.RowState == DataRowState.Deleted)
return;
// свой код row.BeginEdit(); row[название колонки] = чему-то; row.EndEdit();
}
...
Рейтинг: 0 / 0
24.10.2013, 13:04
    #38439752
dred_d
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XtraGrid (DevExpress): индикатор состояния строки (программное изменение)
спасибо, но это не проще SendKeys.Send("{ESC}");
Интересует доступными штатными методами решить вопрос, если такое возможно, в принципе: может кто использовал Grid от DevExpress и сталкивался с чем-то похожим или ориентируется лучше в свойствах \ методах Grid-а и подскажет решение через public свойства \ методы.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / XtraGrid (DevExpress): индикатор состояния строки (программное изменение) / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]