我有一个页面,里面有一堆下拉菜单作为过滤器。假设我有一个租金过滤器:类型(公寓,房子等(,附近(海洋,山脉,河流,火车,摩天大楼,...(,城市(纽约,洛杉矶,迈阿密,芝加哥,...(等...每个筛选器都会回发并重新计算其他筛选器。例如,如果选择:靠近山脉,看到迈阿密没有山脉,所以迈阿密和其他城市不会在城市过滤器中......到目前为止...
我只是将此页面作为 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
需要为每个组合框创建一个存储,并为所有将使用 Json 进行 POST 调用和检索数据的人创建一个全局存储。我检索的数据是一组集合值:如下所示:
class dataJson{
public List<ItemClass> CollectionType {get; set;}
public List<ItemClass> CollectionNearBy {get; set;}
public List<ItemClass> CollectionCity {get; set;}
}
当数据返回时,只需按要求更新组合框的存储:(Load 是全局存储的侦听器(
<Load Handler=" #{TypeComboBox}.clearValue();
#{TypeComboBox}.loadData(this.reader.jsonData);
#{NearByComboBox}.clearValue();
#{NearByComboBox}.loadData(this.reader.jsonData);
#{CityComboBox}.clearValue();
#{CityComboBox}.loadData(this.reader.jsonData);" />
每个组合框都应该按ext:Store
> Reader
的属性Root
过滤数据,例如NearByComboBox store
的Root
应该"CollectionNearBy"