Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > GridLookUpEdit и ProcessNewValue


Автор: vlsaf 11.3.2010, 17:41
Всем привет. 

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

Есть общий справочник районов (Teil) 
teilID - идентификатор района  
teilName - имя района 
------------------------------- 
Есть справочник городов Ort 
ortID - идентификатор города 
ortName - название города 
------------------------------- 
Есть справочник районов города. OrtTeil 
ortTeilID - как обычно ID  
ortID 
teilID 
------------------------------- 
И наконец есть справочние адресов. (Adr) 
adrID 
ortTeilID 
и т.д. 
------------------------------- 
 
Я работаю со справочником адресов. 
В нем есть поле ortTeilID - к какому району города относится данный адрес. 
 
Ситуация 1 
В gridLookUpEdit я ручками вбиваю "Центральный район". 
Предположим, что цетрального района у меня нет ни в справочнике районов города,  
ни в общем справочнике районов. 
Я добавляю  "Центральный район" в общий справочник районов. Затем в справочник районов города. 
И вношу нужную запись в справочник адресов. Вот так 
 
Код

                #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 и вношу нужную запьсь в справочник районов города. Вот так 
 
Код

                        #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 и уже потом выбирать нужный район. 
Не понимаю в чем дело. В первом варианте, более сложном все работает, а во втором нет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)