C# ExtJS表单:链接的组合框
我有一个页面,上面有很多下拉列表作为过滤器。假设我有一个租金过滤器:类型(公寓、房子等),附近(海洋、山脉、河流、火车、摩天大楼等),城市(纽约、洛杉矶、迈阿密、芝加哥等)。。。 每个过滤器返回post并重新计算其他过滤器。例如,如果选择:靠近山脉,看到迈阿密没有山脉,那么迈阿密和其他城市就不会在城市过滤器中。。。到目前为止 我只是在其他页面中插入此页面作为iFrame。。。但是它真的很丑。 我想要的是使用一些ExtJs对象来帮助我。 有很多网格面板的例子,但没有像这样的。。。请给我一些好的建议或例子。谢谢C# ExtJS表单:链接的组合框,c#,javascript,json,extjs,coolite,C#,Javascript,Json,Extjs,Coolite,我有一个页面,上面有很多下拉列表作为过滤器。假设我有一个租金过滤器:类型(公寓、房子等),附近(海洋、山脉、河流、火车、摩天大楼等),城市(纽约、洛杉矶、迈阿密、芝加哥等)。。。 每个过滤器返回post并重新计算其他过滤器。例如,如果选择:靠近山脉,看到迈阿密没有山脉,那么迈阿密和其他城市就不会在城市过滤器中。。。到目前为止 我只是在其他页面中插入此页面作为iFrame。。。但是它真的很丑。 我想要的是使用一些ExtJs对象来帮助我。 有很多网格面板的例子,但没有像这样的。。。请给我一些好的建议
更多详情: 我从以下几点开始: 或第1版: 这是一个很好的例子。但是,在我将代码移动到它自己的自定义用户控件之后,请求会命中主页的on-Load方法、用户控件以及页面的其他生命周期方法,而不仅仅是CitiesRefresh()方法。。。我不希望出现这种行为,所以我使用代理来代替 但是我没有选择的值,如何发送这些值???可能使用
ExtraParams
,但我不确定
另一件事,是多个下拉列表。所以我想我可以用DDL目标来响应一个项目列表。。。比如:
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>
添加(新的{Id=Id,Name=Name,dllTarget=“Cities”});
但是怎么读呢???当“城市”设置为DDL目标时,使用DDL目标
<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;}
}
classdatajson{
公共列表集合类型{get;set;}
公共列表集合{get;set;}
公共列表集合城市{get;set;}
}
当数据返回时,只需按要求更新组合框的存储:(Load是全局存储的侦听器)
每个组合框应根据
ext:Store
读卡器的属性Root
过滤数据,例如近旁组合框存储的Root
应为“CollectionAnnear”
此处提供发送参数的信息:
<Load Handler=" #{TypeComboBox}.clearValue();
#{TypeComboBox}.loadData(this.reader.jsonData);
#{NearByComboBox}.clearValue();
#{NearByComboBox}.loadData(this.reader.jsonData);
#{CityComboBox}.clearValue();
#{CityComboBox}.loadData(this.reader.jsonData);" />