powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / DevExpress. GridLookUpEdit и ProcessNewValue (добавление нового значения)
4 сообщений из 4, страница 1 из 1
DevExpress. GridLookUpEdit и ProcessNewValue (добавление нового значения)
    #36515062
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Речь идет о контроле gridLookUpEdit от DevExpress . А именно о событии ProcessNewValue контрола

Есть общий справочник районов ( Teil )
teilID - идентификатор района
teilName - имя района
-------------------------------
Есть справочник городов Ort
ortID - идентификатор города
ortName - название города
-------------------------------
Есть справочник районов города. OrtTeil
ortTeilID - как обычно ID
ortID
teilID
-------------------------------
И наконец есть справочние адресов. ( Adr )
adrID
ortTeilID
и т.д.
-------------------------------

Я работаю со справочником адресов.
В нем есть поле ortTeilID - к какому району города относится данный адрес.

Ситуация 1
В gridLookUpEdit я ручками вбиваю "Центральный район".
Предположим, что цетрального района у меня нет ни в справочнике районов города,
ни в общем справочнике районов.
Я добавляю "Центральный район" в общий справочник районов. Затем в справочник районов города.
И вношу нужную запись в справочник адресов. Вот так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
                #region добавляем новый район в справочник Teil 
                DataRow teilRow = adressenDataSet.Teil.NewRow(); 
                Guid teilID = Guid.NewGuid(); 
                teilRow["teilID"] = teilID; 
                teilRow["teilName"] = "Центральный район"; 
                adressenDataSet.Teil.Rows.Add(teilRow); 
                teilBindingSource.EndEdit(); 
                #endregion 
                #region добавляем запись в локальный справочник 
                DataRow ortTeilRow = adressenDataSet.OrtTeil.NewRow(); 
                Guid ortTeilID = Guid.NewGuid(); 
                ortTeilRow["ortTeilID"] = ortTeilID; 
                ortTeilRow["ortID"] = ortID; 
                ortTeilRow["teilID"] = teilID; 
                ortTeilRow["teilName"] = teilName; 
                adressenDataSet.OrtTeil.Rows.Add(ortTeilRow); 
                ortTeilBindingSource.EndEdit(); 
                #endregion 
                e.Handled = true;


Все идет на ура.

Ситуация 2
Если в общем справочнике районов запись есть. Я беру только ее teilID и вношу нужную запьсь в справочник районов города. Вот так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
                        #region добавляем запись в локальный справочник 
                        DataRow ortTeilRow = adressenDataSet.OrtTeil.NewRow(); 
                        Guid ortTeilID = Guid.NewGuid(); 
                        ortTeilRow["ortTeilID"] = ortTeilID; 
                        ortTeilRow["ortID"] = ortID; 
                        ortTeilRow["teilID"] = id; // значение взято из справочника Teil   
                        ortTeilRow["teilName"] = teilName; 
                        adressenDataSet.OrtTeil.Rows.Add(ortTeilRow); 
                        ortTeilBindingSource.EndEdit(); 
                        #endregion                        
                        e.Handled = true;  

Строка в gridLookUpEdit добавляется, но сам грид имеет значение Null. Т.е. значение ячейки не присваивается. Я должен еще раз щелкать по gridLookUpEdit и уже потом выбирать нужный район.
Не понимаю в чем дело. В первом варианте, более сложном все работает, а во втором нет.
...
Рейтинг: 0 / 0
DevExpress. GridLookUpEdit и ProcessNewValue (добавление нового значения)
    #36515444
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Путем долгих и нудных экспериментов выяснил:

У меня текстовое значение грида менялось. А это недопустимо. Видимо недоработка DevExpress.
Сначало там было например "центральный район", а правильное значение подставилось уже с большой буквы "Центральный район". И грид сплаховал. Как бороться пока не знаю.
...
Рейтинг: 0 / 0
DevExpress. GridLookUpEdit и ProcessNewValue (добавление нового значения)
    #36515540
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробывал по событию KeyPress (реакция на Enter) сделать так
gridLookUpEdit_OrtTeilID.Text = teilName;

Но редактируемый текст не поменялся. Даже под отладчиком не меняется. ?????


Буду думать дальше...
...
Рейтинг: 0 / 0
DevExpress. GridLookUpEdit и ProcessNewValue (добавление нового значения)
    #36515543
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Придумал. KeyPress не нужен.

Просто нужно было еще сделать так
Код: plaintext
1.
2.
3.
        private void gridLookUpEdit_OrtTeilID_Validating(object sender, CancelEventArgs e)
        {
            gridLookUpEdit_OrtTeilID.EditValue = ortTeilID;
        }

Т.е. после того, как в GridLookUpEdit добавилась новая строка по событию ProcessNewValue,
нужно ее "в лоб" поставить на местом событием Validating.


Вопрос снят...
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / DevExpress. GridLookUpEdit и ProcessNewValue (добавление нового значения)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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