powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DevExpress XtraGrid: индикатор статуса состояния (программное изменение)
7 сообщений из 7, страница 1 из 1
DevExpress XtraGrid: индикатор статуса состояния (программное изменение)
    #38364941
dred_d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
...
Рейтинг: 0 / 0
DevExpress XtraGrid: индикатор статуса состояния (программное изменение)
    #38364944
dred_d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
DevExpress XtraGrid: индикатор статуса состояния (программное изменение)
    #38365553
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dred_d,

попробуйте DataRow.EndEdit (у выбранного DataRow):

Код: c#
1.
2.
3.
4.
5.
6.
 DataRow editedRow = GridView.GetDataRow(e.RowHandle);

            if (editedRow != null)
            {
                editedRow.EndEdit();
            }



З.Ы. Делать упдейт в базу при изменении значения в ячейки мне кажется довольно странным решением.
...
Рейтинг: 0 / 0
DevExpress XtraGrid: индикатор статуса состояния (программное изменение)
    #38365632
dred_d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LameUser,

Проверил, не срабатывает.
Ну почему странным: иногда в несложных приложениях, когда работа, по сути, ведется с одной, двумя таблицами и редактируемых полей в самом Grid-е не так уж и много, причем от введенных значениях могут зависеть данные в сопряженных полях, то самым удобным будет вносить изменения при завершения редактирования отдельных ячеек: минималистическая простота для пользователя и освобождает разработчика от прописывания излишней проверочной логики вычисляемых полей, хотя опять же, все это зависит от спецификации приложения, но это уже не совсем имеет отношение к первоначальному вопросу.
...
Рейтинг: 0 / 0
DevExpress XtraGrid: индикатор статуса состояния (программное изменение)
    #38365855
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dred_dLameUser,

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

Да, но пользователь если введет ошибку и не помнит что было раньше - то приплыли.
Ладно, обросим оффтоп.

Проверил у себя - работает, в базу пишется измененное значение (после нажатия на enter).
То что символ не меняется на треугольник - есть такое. Только никак не пойму при чем тут это.
Вам необходимо чтобы в базу записывалось значение из текущей строки без перехода на другую и без SendKeys, или чтобы у вас отображался именно треугольник у выбранной строки?
...
Рейтинг: 0 / 0
DevExpress XtraGrid: индикатор статуса состояния (программное изменение)
    #38365867
dred_d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LameUser,

что бы треугольник отображался (в базу у меня тоже пишет).
Оно, конечно, не принципиально вроде, но в штатном Gride-е указал BindigSource.EndEdit() и все Ок, а в Grid-е от DevExpress индикатор состояния строки не изменяется почему-то, хотя порядок команд идентичен.
...
Рейтинг: 0 / 0
DevExpress XtraGrid: индикатор статуса состояния (программное изменение)
    #38365881
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dred_dLameUser,

что бы треугольник отображался (в базу у меня тоже пишет).
Оно, конечно, не принципиально вроде, но в штатном Gride-е указал BindigSource.EndEdit() и все Ок, а в Grid-е от DevExpress индикатор состояния строки не изменяется почему-то, хотя порядок команд идентичен.

Я бы на вашем месте забил на это! В крайнем случае можно оставить сенд кейс. У DevExpress постоянно приходится что-то допиливать под себя аналогичными образом :)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DevExpress XtraGrid: индикатор статуса состояния (программное изменение)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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