|
XtraGrid (DevExpress): индикатор состояния строки (программное изменение)
|
|||
---|---|---|---|
#18+
Здравствуйте! По нажатию на 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.
-- MS SQL SERVER 2008R2 (RTM) 10.50.1600.1 (X64) + C# .Net 3.5/4 + Delphi 5\7 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2013, 10:11 |
|
XtraGrid (DevExpress): индикатор состояния строки (программное изменение)
|
|||
---|---|---|---|
#18+
Попробуй это...может что-то получится. В базовом классе прописываешь 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(); } ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2013, 11:55 |
|
XtraGrid (DevExpress): индикатор состояния строки (программное изменение)
|
|||
---|---|---|---|
#18+
спасибо, но это не проще SendKeys.Send("{ESC}"); Интересует доступными штатными методами решить вопрос, если такое возможно, в принципе: может кто использовал Grid от DevExpress и сталкивался с чем-то похожим или ориентируется лучше в свойствах \ методах Grid-а и подскажет решение через public свойства \ методы. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2013, 13:04 |
|
|
start [/forum/topic.php?fid=20&tid=1403802]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
79ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 175ms |
0 / 0 |