ExtJS表单:链接组合框

本文关键字:组合 链接 表单 ExtJS | 更新日期: 2023-09-27 18:32:33

我有一个页面,里面有一堆下拉菜单作为过滤器。假设我有一个租金过滤器:类型(公寓,房子等(,附近(海洋,山脉,河流,火车,摩天大楼,...(,城市(纽约,洛杉矶,迈阿密,芝加哥,...(等...每个筛选器都会回发并重新计算其他筛选器。例如,如果选择:靠近山脉,看到迈阿密没有山脉,所以迈阿密和其他城市不会在城市过滤器中......到目前为止...

我只是将此页面作为 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

ExtJS表单:链接组合框

需要为每个组合框创建一个存储,并为所有将使用 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 storeRoot应该"CollectionNearBy"