ExtJS表单:链接的Comboxes

时间:2012-04-27 18:10:51

标签: c# javascript json extjs coolite

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

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

1 个答案:

答案 0 :(得分: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;}
}

当数据返回时,只需按需要更新组合框的存储:(加载是全局存储的监听器)

<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&gt;的属性ext:Store过滤数据。 Reader,例如Root的{​​{1}}应为NearByComboBox store