|
DevExpress XtraGrid: индикатор статуса состояния (программное изменение)
|
|||
---|---|---|---|
#18+
Grid-редактируемый. Изменил значения ячейки, нажал Enter, записал измененное значения в базу, а индикатор строки Grid-а не изменил символ с вертикальной полоски на треугольник, что говорит, что строка Grid-a, по сути, находится в режиме изменения значения, что есть не так. Добился требуемого мне результата через команду SendKeys.Send("{ESC}"); но смотрится она как-то не природно. Может кто подскажет, как программно перевести XtraGrid из состояния “редактируются данные” (скрин 1 ) в состояние “не измененные данные” (скрин 2)? Фрагмент кода, который использую: ---------------------------- private void deGridView_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e) { if (e.Value.ToString().CompareTo(ta.Table.Rows[bs.Position][ta.Table.Columns.IndexOf(deGridView.FocusedColumn.FieldName), DataRowVersion.Original].ToString()) != 0) { using (SqlConnection con1 = new SqlConnection(Program.conStr)) { //ta.Table.Rows[bs.Position][deGridView.Columns.ColumnByFieldName("MLAN8").AbsoluteIndex] = int.Parse(ta.Table.Rows[bs.Position][deGridView.Columns.ColumnByFieldName("MLAN8").AbsoluteIndex].ToString()) + int.Parse(e.Value.ToString()); // если есть вычисляемые колонки, то в этом месте можно изменить данные bs.EndEdit(); con1.Open(); ta.Update(con1, true, null); con1.Close(); //deGridView.UpdateCurrentRow(); //deGridView.PostEditor(); //deGridView.CloseEditor(); //deGridView.FocusedColumn = deGridView.Columns.ColumnByFieldName("MLAN8"); SendKeys.Send("{ESC}"); } } } ---------------------------- Варианты с: deGridView.UpdateCurrentRow(); deGridView.PostEditor(); deGridView.CloseEditor(); требуемого результата не дали. Программное перемещение на другую колонку вместе с deGridView.UpdateCurrentRow(); дали нужный результат, но это еще хуже, чем SendKeys.Send("{ESC}"); -- MS SQL SERVER 2008R2 (RTM) 10.50.1600.1 (X64) + C# .Net 3.5/4 + Delphi 5\7 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2013, 16:12 |
|
DevExpress XtraGrid: индикатор статуса состояния (программное изменение)
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2013, 16:12 |
|
DevExpress XtraGrid: индикатор статуса состояния (программное изменение)
|
|||
---|---|---|---|
#18+
dred_d, попробуйте DataRow.EndEdit (у выбранного DataRow): Код: c# 1. 2. 3. 4. 5. 6.
З.Ы. Делать упдейт в базу при изменении значения в ячейки мне кажется довольно странным решением. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2013, 06:28 |
|
DevExpress XtraGrid: индикатор статуса состояния (программное изменение)
|
|||
---|---|---|---|
#18+
LameUser, Проверил, не срабатывает. Ну почему странным: иногда в несложных приложениях, когда работа, по сути, ведется с одной, двумя таблицами и редактируемых полей в самом Grid-е не так уж и много, причем от введенных значениях могут зависеть данные в сопряженных полях, то самым удобным будет вносить изменения при завершения редактирования отдельных ячеек: минималистическая простота для пользователя и освобождает разработчика от прописывания излишней проверочной логики вычисляемых полей, хотя опять же, все это зависит от спецификации приложения, но это уже не совсем имеет отношение к первоначальному вопросу. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2013, 09:39 |
|
DevExpress XtraGrid: индикатор статуса состояния (программное изменение)
|
|||
---|---|---|---|
#18+
dred_dLameUser, Проверил, не срабатывает. Ну почему странным: иногда в несложных приложениях, когда работа, по сути, ведется с одной, двумя таблицами и редактируемых полей в самом Grid-е не так уж и много, причем от введенных значениях могут зависеть данные в сопряженных полях, то самым удобным будет вносить изменения при завершения редактирования отдельных ячеек: минималистическая простота для пользователя и освобождает разработчика от прописывания излишней проверочной логики вычисляемых полей, хотя опять же, все это зависит от спецификации приложения, но это уже не совсем имеет отношение к первоначальному вопросу. Да, но пользователь если введет ошибку и не помнит что было раньше - то приплыли. Ладно, обросим оффтоп. Проверил у себя - работает, в базу пишется измененное значение (после нажатия на enter). То что символ не меняется на треугольник - есть такое. Только никак не пойму при чем тут это. Вам необходимо чтобы в базу записывалось значение из текущей строки без перехода на другую и без SendKeys, или чтобы у вас отображался именно треугольник у выбранной строки? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2013, 11:53 |
|
DevExpress XtraGrid: индикатор статуса состояния (программное изменение)
|
|||
---|---|---|---|
#18+
LameUser, что бы треугольник отображался (в базу у меня тоже пишет). Оно, конечно, не принципиально вроде, но в штатном Gride-е указал BindigSource.EndEdit() и все Ок, а в Grid-е от DevExpress индикатор состояния строки не изменяется почему-то, хотя порядок команд идентичен. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2013, 11:57 |
|
DevExpress XtraGrid: индикатор статуса состояния (программное изменение)
|
|||
---|---|---|---|
#18+
dred_dLameUser, что бы треугольник отображался (в базу у меня тоже пишет). Оно, конечно, не принципиально вроде, но в штатном Gride-е указал BindigSource.EndEdit() и все Ок, а в Grid-е от DevExpress индикатор состояния строки не изменяется почему-то, хотя порядок команд идентичен. Я бы на вашем месте забил на это! В крайнем случае можно оставить сенд кейс. У DevExpress постоянно приходится что-то допиливать под себя аналогичными образом :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2013, 12:00 |
|
|
start [/forum/topic.php?fid=20&msg=38365881&tid=1404219]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 153ms |
0 / 0 |