2012-04-27 5 views
0

У меня есть страница с кучей раскрывающихся списков в виде фильтров. Предположим, у меня есть фильтры аренды: тип (квартира, дом и т. Д.), Рядом (океан, гора, река, поезд, небоскребы, ...), город (Нью-Йорк, Лос-Анджелес, Майами, Чикаго. ..) и т. д. , и каждый фильтр делает пост-обратно и перепрограммирует другие фильтры. Например, если выберете: рядом с горами и увидите, что в Майами нет гор, поэтому Майами и другими городами не будет в городском фильтре ... до сих пор так ...Форма ExtJS: Связанные Comboxes

Я просто вставляю эту страницу как iFrame на других страницах ... но на самом деле уродливый. Что нужно, чтобы использовать некоторые из этих объектов ExtJs, чтобы помочь мне в этом. есть много примеров сетки, но ничего подобного ... пожалуйста, дайте мне несколько советов или примеров, которые будут приятными. Благодарю.


Подробнее:

я нашел что-то, чтобы начать с: http://examples.ext.net/#/Form/ComboBox/Ajax_Linked_Combos/ или версия 1: http://examples1.ext.net/#/Form/ComboBox/Ajax_Linked_Combos/ , что является хорошим примером. но после того, как я переместил код в свой собственный пользовательский элемент управления, запрос попадает в метод on-load главной страницы и пользовательский контроль и другие методы жизненного цикла страницы, а не только метод CitiesRefresh(). .. Я не хочу этого поведения, поэтому вместо этого использую прокси <ext:HttpProxy Url="mypage.aspx" Method="POST" /> ...

но у меня нет выбранных значений, как их отправить ??? возможно, используя ExtraParams, но я не уверен.

Другое дело, это несколько выпадающих списков. так что я предполагаю, что я могу ответ список элементов с ddltarget ... как:

data.Add(new { Id = id, Name = name, dllTarget= "Cities" }); 

<Fields> 
    <ext:RecordField Name="id" Type="String" Mapping="Id" /> 
    <ext:RecordField Name="name" Type="String" Mapping="Name" /> 
    <ext:RecordField Name="ddlTarget" Type="String" Mapping="ddlTarget" /> 
</Fields> 

но как читать, что ??? используя ddlTarget, когда установлено «Города». ????

<Load Handler="#{Cities}.setValue(#{Cities}.store.getAt(0).get('id'));" /> // doesn't care ddlTarget 

ответ

0

нужно создать хранилище для каждого Combobox и 1 глобального магазина за все, что будет с помощью JSON, чтобы сделать вызов POST и получить данные. Данные, которые я получить это группа значений коллекции: что-то вроде этого:

class dataJson{ 
    public List<ItemClass> CollectionType {get; set;} 
    public List<ItemClass> CollectionNearBy {get; set;} 
    public List<ItemClass> CollectionCity {get; set;} 
} 

Когда данные возвращаются только обновят магазин Наримера как requried: (Нагрузка слушатель глобального магазина)

<Load Handler=" #{TypeComboBox}.clearValue(); 
#{TypeComboBox}.loadData(this.reader.jsonData); 
#{NearByComboBox}.clearValue(); 
#{NearByComboBox}.loadData(this.reader.jsonData); 
#{CityComboBox}.clearValue(); 
#{CityComboBox}.loadData(this.reader.jsonData);" /> 

Каждый ComboBox должен фильтровать данные по свойству Root из ext:Store>Reader, например Root из NearByComboBox store должно быть "CollectionNearBy"

+0

Здесь информация для отправки параметров: http://stackoverflow.com/questions/10386101/extjs-set-parameters-values/10433870#10433870 – Jaider

Смежные вопросы