powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Фильтрация DropDown Datawindow
5 сообщений из 5, страница 1 из 1
Фильтрация DropDown Datawindow
    #34410879
JenyaD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть Dw имеющее 2 столбца, содержащие dddw.
Нужно в зависимости от выбранного элемента в первом dddw фильтровать
элементы во 2-м dddw. Однако наложение фильтра приводит к тому что в других
строках начинает отображаться вместо display column - data column. Обычно dddw
сверяет значение data column и текущее значение и отображает display column, однако
при наложении фильтра не получается найти соответствие и отображаются цифры.
Что может помочь в данном случае ?? Может есть какое свойство dddw, чтоб искало и в буфере
фильтра ?
...
Рейтинг: 0 / 0
Фильтрация DropDown Datawindow
    #34410918
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Фильтрация DropDown Datawindow
    #34413942
KOLCHOZ_POSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Простите,что я вмешиваюсь,уж очень давно промышленно не программирую.
Но по старой памяти,пару слов,можно?О-кей,тогда начнём.
Ваш фильтр корёжит бафер дроп-даун data window-выбрасывает из него строки.Тогда в большом dw получаются в этом поле,ну которое с дроп-даун,значения,у которых нет расшифровки-фильтр выбросил,вот и прёт инфа живьём-без display value.
Впрочем,в своём посте вы это сами и написали.
Что б я посоветовал попробывать-устройте где-то рядом share dw,но не в строчном порядке,а в свободном-там другие строки просто окажутся за кадром и эта раздевалка,которую устраивает фильтр будет не видна,вертикальный скролл-бар не выставляйте-нефига прокручивать.Конечно,ушлый юзер знает Page Down,Page Up-его проблемма.Кроме того,на rowfocuschanged этого шера,можно прописать отмену фильтра:
ddddw.setfilter('1=1' )
ddddw.filter() а потом выставить фильтр актуальный для активной строки,тогда,и этот хохмолог ничего не заметит.
Но главный смысл в том,что игры с бафером в строчном dw юзеру просто не показывать.
...
Рейтинг: 0 / 0
Фильтрация DropDown Datawindow
    #34419744
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотрите почту.
...
Рейтинг: 0 / 0
Фильтрация DropDown Datawindow
    #34433553
JenyaD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем получилось примерно так :
В Instance Variables
Код: plaintext
1.
2.
DataWindowChild dwc_1
int ii_dddw_detail_height =  0 

В событии pbm_dwndropdown

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
nt li_parent_id,li_curr_id,li_currentrow
long ll_type,ll_typeparent

if  IsNULL(dwc_1) then  return
if  not IsValid(dwc_1) then  return

li_currentrow=this.GetRow()
if li_currentrow<= 0  then return  1 

if this.GetColumnName ( )="obj_parent" then

   this.Update()
   commit;
	
   dwc_1.SetTransObject(sqlca)
   dwc_1.Retrieve()
	 
	ll_type=this.GetItemNumber(li_currentrow,'type_id')
	SetNULL(ll_typeparent)
	
	//Получаем родительский тип
   select type_parent
   into :ll_typeparent
   from xxx.xxx
   where type_id=:ll_type;

  if sqlca.sqlcode<> 0  then 
       messagebox("Помилка код <"+string(sqlca.sqlcode)+ "> ","Помилка : текст повідомлення сервера "+ sqlca.SQLErrText,StopSign!)
  end if
	 
 if not IsNULL(ll_typeparent) then
	string ls_old_filter
	
	if IsValid (dwc_1)  then
	   if ii_dddw_detail_height =  0   then 
               //Получаем высоту списка
               ii_dddw_detail_height = Integer(dwc_1.Describe( "Datawindow.Detail.Height")) 
         end if 
 
        dwc_1.SetRedraw(FALSE) 
        // Сбрасываем высоту всех строк на высоту по умолчанию
        dwc_1.SetDetailHeight( 1 ,dwc_1.RowCount(), ii_dddw_detail_height ) 
 
       
         dwc_1.SetFilter("type_id <> " + string( ll_typeparent )+" and  type_id <> 0"  )
    
	
	dwc_1.Filter()
	// Устанавливаем высоту строк для "ненужных" элементов  0 
	dwc_1.SetDetailHeight(  1 , dwc_1.RowCount(),  0  ) 
	// Возвращаем старый фильтр
	dwc_1.SetFilter("") 
	dwc_1.Filter() 
	//Отключаем перерисовку
	dwc_1.SetRedraw(TRUE)
	dwc_1.SelectRow( 0 , FALSE)
     end if
 end if
end if 

...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Фильтрация DropDown Datawindow
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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