BOS省市区联动代码

public class LocationEditUICTEx extends LocationEditUI {

	public LocationEditUICTEx() throws Exception {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * 
	 */
	private static final long serialVersionUID = -2829809835023377076L;
	KDBizPromptBox provinceP = new KDBizPromptBox();
	KDBizPromptBox cityP = new KDBizPromptBox();
	KDBizPromptBox countryP = new KDBizPromptBox();
	KDTextField txtaddress = new KDTextField();

	@Override
	public void onLoad() throws Exception {
		Hashtable hashTable = new Hashtable();

		DEPUtils.findComponent(this, new String[] { "txtaddress", "prmtprovince", "prmtcity", "prmtcountry" }, hashTable);
		if (hashTable.size() > 0) {
			if ((KDBizPromptBox) hashTable.get("prmtprovince") != null) {
				provinceP = (KDBizPromptBox) hashTable.get("prmtprovince"); // 省
				cityP = (KDBizPromptBox) hashTable.get("prmtcity"); // 市
				countryP = (KDBizPromptBox) hashTable.get("prmtcountry"); // 区县
				txtaddress = (KDTextField) hashTable.get("txtaddress"); // 地址
				// 省份
				provinceP.addDataChangeListener(new DataChangeListener() {
					@Override
					public void dataChanged(DataChangeEvent arg0) {
						try {
							prmtprovince_dataChanged(arg0);
						} catch (Exception e) {
							e.printStackTrace();
						}
					}
				});
				
				cityP.addDataChangeListener(new DataChangeListener() {
					@Override
					public void dataChanged(DataChangeEvent arg0) {
						try {
							prmtcity_dataChanged(arg0);
						} catch (Exception e) {
							e.printStackTrace();
						}
					}
				});

				countryP.addDataChangeListener(new DataChangeListener() {
					@Override
					public void dataChanged(DataChangeEvent arg0) {
						try {
							prmtcountry_dataChanged(arg0);
						} catch (Exception e) {
							e.printStackTrace();
						}
					}
				});
				
				cityP.addSelectorListener(new SelectorListener() {
					@Override
					public void willShow(SelectorEvent paramSelectorEvent) {
						ProvinceInfo provinceinfo = null;// 省
						if (provinceP.getValue() != null) {
							provinceinfo = (ProvinceInfo) provinceP.getValue();
						}
						// 城市f7过滤
						if (provinceinfo != null) {
							EntityViewInfo view = new EntityViewInfo();
							FilterInfo filter = new FilterInfo();
							filter.getFilterItems().add(new FilterItemInfo("province.id", provinceinfo.getId()));
							view.setFilter(filter);
							cityP.setEntityViewInfo(view);
							cityP.getQueryAgent().resetRuntimeEntityView();
						}
					}
				});
				
				countryP.addSelectorListener(new SelectorListener() {
					@Override
					public void willShow(SelectorEvent paramSelectorEvent) {
						CityInfo city = null;// 市
						if (cityP.getValue() != null) {
							city = (CityInfo) cityP.getValue();
						}
						// 区县f7过滤
						if (city != null) {
							EntityViewInfo view = new EntityViewInfo();
							FilterInfo filter = new FilterInfo();
							filter.getFilterItems().add(new FilterItemInfo("city.id", city.getId()));
							view.setFilter(filter);
							countryP.setEntityViewInfo(view);
							countryP.getQueryAgent().resetRuntimeEntityView();
						}
					}
				});
			}
		}
		super.onLoad();
	}

	/**
	 * 省份
	 * 
	 * @param e
	 * @throws Exception
	 */
	protected void prmtprovince_dataChanged(DataChangeEvent e) throws Exception {
		ProvinceInfo provinceinfo = null;// 省
		// true【旧值为空新值不为空 OR 新值和旧值不相同】
		boolean flag = (e.getOldValue() != null && e.getNewValue() == null) || (e.getOldValue() == null && e.getNewValue() != null) || (e.getOldValue() != null && e.getNewValue() != null && !e.getOldValue().toString().equals(e.getNewValue().toString()));

		if (flag && !isFirstOnload()) {
			if (provinceP.getValue() != null) {
				provinceinfo = (ProvinceInfo) provinceP.getValue();
			}
			// 城市f7过滤
			if (provinceinfo != null) {
				EntityViewInfo view = new EntityViewInfo();
				FilterInfo filter = new FilterInfo();
				filter.getFilterItems().add(new FilterItemInfo("province.id", provinceinfo.getId()));
				view.setFilter(filter);
				cityP.setEntityViewInfo(view);
			}
			cityP.setValue(null);
			countryP.setValue(null);
			setAdress(provinceinfo, null, null, txtaddress);// 设置详细地址
		}
	}

	/**
	 * 城市
	 * 
	 * @param e
	 * @throws Exception
	 */
	protected void prmtcity_dataChanged(DataChangeEvent e) throws Exception {
		ProvinceInfo provinceinfo = null;// 省
		CityInfo city = null;// 市
		// true【旧值为空新值不为空 OR 新值和旧值不相同】
		boolean flag = (e.getOldValue() != null && e.getNewValue() == null) || (e.getOldValue() == null && e.getNewValue() != null) || (e.getOldValue() != null && e.getNewValue() != null && !e.getOldValue().toString().equals(e.getNewValue().toString()));

		if (flag && !isFirstOnload()) {
			if (provinceP.getValue() != null) {
				provinceinfo = (ProvinceInfo) provinceP.getValue();
			}
			if (cityP.getValue() != null) {
				city = (CityInfo) cityP.getValue();
			}
			// 区县f7过滤
			if (city != null) {
				EntityViewInfo view = new EntityViewInfo();
				FilterInfo filter = new FilterInfo();
				filter.getFilterItems().add(new FilterItemInfo("city.id", city.getId()));
				view.setFilter(filter);
				countryP.setEntityViewInfo(view);
			}
			countryP.setValue(null);
			setAdress(provinceinfo, city, null, txtaddress);// 设置详细地址
		}
	}

	/**
	 * 区县
	 * 
	 * @param e
	 * @throws Exception
	 */
	protected void prmtcountry_dataChanged(DataChangeEvent e) throws Exception {
		ProvinceInfo province = null;// 省
		CityInfo city = null;// 市
		RegionInfo region = null;// 区县

		// true【旧值为空新值不为空 OR 新值和旧值不相同】
		boolean flag = (e.getOldValue() != null && e.getNewValue() == null) || (e.getOldValue() == null && e.getNewValue() != null) || (e.getOldValue() != null && e.getNewValue() != null && !e.getOldValue().toString().equals(e.getNewValue().toString()));
		if (flag && !isFirstOnload()) {
			if (provinceP.getValue() != null) {
				province = (ProvinceInfo) provinceP.getValue();
			}
			if (cityP.getValue() != null) {
				city = (CityInfo) cityP.getValue();
			}
			if (countryP.getValue() != null) {
				region = (RegionInfo) countryP.getValue();
			}
			setAdress(province, city, region, txtaddress);// 设置详细地址
		}
	}

	/**
	 * 设置详细地址
	 * 
	 * @param province
	 * @param city
	 * @param region
	 * @param street
	 */
	private void setAdress(ProvinceInfo province, CityInfo city, RegionInfo region, KDTextField KdtAaddress) {
		StringBuffer adress = new StringBuffer();
		if (province != null) {
			adress.append(province.getName());
		}
		if (city != null) {
			adress.append(" ").append(city.getName());
		}
		if (region != null) {
			adress.append(" ").append(region.getName());
		}
		KdtAaddress.setText(adress.toString());
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值