0

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

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

1 回答 1

0

需要为每个 Combobox 创建一个存储,并为所有将使用 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);" />

每个 ComboBox 应该通过 > 的属性过滤Root数据ext:Store,例如Reader应该是RootNearByComboBox store"CollectionNearBy"

于 2012-05-03T15:07:35.067 回答