Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ZEN: фильтр для combobox / 2 сообщений из 2, страница 1 из 1
24.02.2009, 12:11
    #35833778
13-й Пилигрим
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ZEN: фильтр для combobox
Добрый день, уважаемые.
Возникла необходимость реализовать "фильтр" у combobox'a. Т.е. наполнение зависит от введенного значения. К примеру, есть список улиц. Если введено "мос", то должен быть отображен список улиц, начинающихся на "мос".
На данный момент реализовано так:
Код: 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.
<combobox id="cmbx" name="cmbx" editable="true" unrestricted="true" size="30" onkeyup="zenPage.cmbxKeyPress(zenThis);"/>

Method cmbxKeyPress(cmbx) [ Language = javascript ]
{
	var input = cmbx.findElement('input');
	var substr = input.value;
	cmbx.resetOptions()
	var res = zenPage.GetCmbxList(cmbx,substr)
	if (res=='1')
	{
		cmbx.showDropdown()
	}
	else 
	{
		alert('Error')
	}
	return
}

Method GetCmbxList(pCmbx As %ZEN.Component.combobox, pSubStr As %String) as %String [ ZenMethod ]
{
	s SubStr = $zcvt(pSubStr,"U")
	s idx="" f {
		s idx=$o(^PILIGRIM("TEST","STREETS",idx))
		q:idx=""
		i $e(idx, 1 ,$l(SubStr))=SubStr
		{
			s pValue = ^PILIGRIM("TEST","STREETS",idx)
			s pText = idx
			s tOption = ##class(%ZEN.Auxiliary.option).%New()
			s tOption.value = pValue
			s tOption.text = pText
			d %page.%AddChild(tOption) 
			d pCmbx.options.Insert(tOption)
		}
	}
	q $$$OK
}


В общем-то сама фильтрация работает нормально. А вот перемещение по списку (стрелками вверх-вниз) и поведение после выбора значения получается как-то "коряво".
Реализовывал ли кто-либо ранее подобную задачу? Как можно "причесать" приведенное решение.
...
Рейтинг: 0 / 0
24.02.2009, 17:02
    #35834687
Ymka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ZEN: фильтр для combobox
мне кажется при больших объемах от корявости не уйдешь!!!
есть элемент dataCombo, но там нужно набрать первые несколько букв а потом нажать Ентер, только после этого отсветится искомый список,
у тебя же налету старница обращается к серверу при чем по каждому нажатию
могу только посоветовать:
1. отсвечивать выпадающий список только после нажатых нескольких букв;
2. самое главное, после того как ты первый раз загрузил выпадающий список, по второму нажатию кнопки ищи искомые значения уже на клиенте, т.е. javascript-ом, относительно уже загруженного списка. Я думаю так будет гораздо быстрее
удачи
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ZEN: фильтр для combobox / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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