起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2959|回复: 4

[分享] 国家、省(市)、市三级联动设置

  [复制链接]

242

主题

1418

帖子

2325

积分

金牌会员

批判主义者

Rank: 6Rank: 6

积分
2325
QQ
发表于 2014-5-29 16:38:49 | 显示全部楼层 |阅读模式
版本: 小版本号:
数据库: 服务器操作系统: 应用服务器:
客户端操作系统: 浏览器:
本帖最后由 腹部流出的肉 于 2014-5-29 17:00 编辑

知道的勿喷 ... ...
先截个图看看
思路:
1、选国家时,任意选择,选择了国家后需要动态控制后面的省和市。
2、选省份时,先判断有没有选择国家。
     如果没有选择国家时,省份任意选择;如果选择了国家,省份需是受国家的控制,省份需要控制市。
3、选市时,先判断国家和省份有没有选择,如果都没有选择,市任意选择;如果选择了国家或省份,市需要是国家的市或省的市(即:需要控制市)。
主要触发事件点:onCloseup

数据组件配置:

    <data component="/UI/system/components/data.xbl.xml#bizData" id="orgDicUnitAddrCountryBizData"
      concept="org_dic" relations="fCode,fName,fOrderNum" limit="-1" order-by="fOrderNum asc"
      update-mode="whereVersion" auto-load="false">
      <creator id="default37" action="/strplan/org/m05DicManager/logic/action/createOrg_dicAction"/>  
      <reader id="default38" action="/strplan/org/m05DicManager/logic/action/queryOrg_dicAction"/>  
      <writer id="default39" action="/strplan/org/m05DicManager/logic/action/saveOrg_dicAction"/>  
      <filter name="fUnitAddrCountryFilter" id="fUnitAddrCountryFilter"><![CDATA[org_dic.fCategoryID = 'xzqh' and org_dic.fCode like '%000000']]></filter>
    </data>  
    <data component="/UI/system/components/data.xbl.xml#bizData" id="orgDicUnitAddrProvinceBizData"
      concept="org_dic" relations="fCode,fName,fOrderNum" limit="-1" order-by="fOrderNum asc"
      update-mode="whereVersion" auto-load="false">
      <creator id="default40" action="/strplan/org/m05DicManager/logic/action/createOrg_dicAction"/>  
      <reader id="default41" action="/strplan/org/m05DicManager/logic/action/queryOrg_dicAction"/>  
      <writer id="default42" action="/strplan/org/m05DicManager/logic/action/saveOrg_dicAction"/>  
      <filter name="fUnitAddrProvinceFilter" id="fUnitAddrProvinceFilter"><![CDATA[org_dic.fCategoryID = 'xzqh' and org_dic.fCode like '%0000' and not (org_dic.fCode like '%000000')]]></filter>
    </data>  
    <data component="/UI/system/components/data.xbl.xml#bizData" id="orgDicUnitAddrCityBizData"
      concept="org_dic" relations="fCode,fName,fOrderNum" limit="-1" order-by="fOrderNum asc"
      update-mode="whereVersion" auto-load="false">
      <creator id="default43" action="/strplan/org/m05DicManager/logic/action/createOrg_dicAction"/>  
      <reader id="default44" action="/strplan/org/m05DicManager/logic/action/queryOrg_dicAction"/>  
      <writer id="default45" action="/strplan/org/m05DicManager/logic/action/saveOrg_dicAction"/>  
      <filter name="fUnitAddrCityFilter" id="fUnitAddrCityFilter"><![CDATA[org_dic.fCategoryID = 'xzqh' and org_dic.fCode like '%00' and not (org_dic.fCode like '%0000')]]></filter>
    </data>

grid组件配置:
        <xhtml:div component="/UI/system/components/select.xbl.xml#gridSelect" id="fUnitAddrCountryGridSelect"
          ref="data('queryConditionData')/fUnitAddrCountryCode" label-ref="data('queryConditionData')/fUnitAddrCountryName"
          value-separator="," label-separator="," ext-separator="," input-changeable="false"
          delay-create-grid="true" class="xui-autofill">
          <xforms:itemset id="default21" data="orgDicUnitAddrCountryBizData" auto-load-data="false">
            <xforms:column ref="fCode" visible="false" id="default48"/>  
            <xforms:column ref="fName" id="default49"/>
          </xforms:itemset>  
          <xforms:value ref="fCode" id="default20"/>  
          <xforms:label ref="fName" id="xuiLabel8"/>
        </xhtml:div>  
        <xhtml:div component="/UI/system/components/select.xbl.xml#gridSelect" id="fUnitAddrProvinceGridSelect"
          ref="data('queryConditionData')/fUnitAddrProvinceCode" label-ref="data('queryConditionData')/fUnitAddrProvinceName"
          value-separator="," label-separator="," ext-separator="," input-changeable="false"
          delay-create-grid="true" class="xui-autofill">
          <xforms:itemset id="default34" data="orgDicUnitAddrProvinceBizData" auto-load-data="false">
            <xforms:column ref="fCode" visible="false" id="default52"/>  
            <xforms:column ref="fName" id="default53"/>
          </xforms:itemset>  
          <xforms:value ref="fCode" id="default33"/>  
          <xforms:label ref="fName" id="xuiLabel11"/>
        </xhtml:div>  
        <xhtml:div component="/UI/system/components/select.xbl.xml#gridSelect" id="fUnitAddrCityGridSelect"
          ref="data('queryConditionData')/fUnitAddrCityCode" label-ref="data('queryConditionData')/fUnitAddrCityName"
          value-separator="," label-separator="," ext-separator="," input-changeable="false"
          delay-create-grid="true" class="xui-autofill">
          <xforms:itemset id="default36" data="orgDicUnitAddrCityBizData" auto-load-data="false">
            <xforms:column ref="fCode" visible="false" id="default54"/>  
            <xforms:column ref="fName" id="default55"/>
          </xforms:itemset>  
          <xforms:value ref="fCode" id="default35"/>  
          <xforms:label ref="fName" id="xuiLabel12"/>
        </xhtml:div>

JS代码:
function changeCountry(){
    //国家编码
    var orgDicUnitAddrCountryBizData = justep.xbl("orgDicUnitAddrCountryBizData");
    var countryCurrentRowID = orgDicUnitAddrCountryBizData.getCurrentRowId();
    var fCountryCode = orgDicUnitAddrCountryBizData.getValue("fCode",countryCurrentRowID);
    var fCountryCodePrefix = fCountryCode.substring(0,2);
    //alert("fCountryCode:" + fCountryCode + "\r\nffCountryCodePrefix:" + fCountryCodePrefix);
    if("" != fCountryCode){
       //设置省份
       var orgDicUnitAddrProvinceBizData = justep.xbl("orgDicUnitAddrProvinceBizData");
       var provinceCurrentRowID = orgDicUnitAddrProvinceBizData.getCurrentRowId();
       var provinceFilter = "org_dic.fCode like '" + fCountryCodePrefix + "__0000' and org_dic.fCode <> '" + fCountryCode + "'";
       orgDicUnitAddrProvinceBizData.filters.clear();
       orgDicUnitAddrProvinceBizData.setFilter("provinceFilter",provinceFilter);
       orgDicUnitAddrProvinceBizData.refreshData();
       justep.xbl("queryConditionData").setValue("fUnitAddrProvinceCode",orgDicUnitAddrProvinceBizData.getValue("fCode",provinceCurrentRowID));
       justep.xbl("queryConditionData").setValue("fUnitAddrProvinceName",orgDicUnitAddrProvinceBizData.getValue("fName",provinceCurrentRowID));
     
       var fProvinceCode = orgDicUnitAddrProvinceBizData.getValue("fCode",provinceCurrentRowID);
       var fCountryProvinceCodePrefix = fProvinceCode.substring(0,4);
       //设置市
       var orgDicUnitAddrCityBizData = justep.xbl("orgDicUnitAddrCityBizData");
       var cityCurrentRowID= orgDicUnitAddrCityBizData.getCurrentRowId();
       var cityFilter = "org_dic.fCode like '" + fCountryProvinceCodePrefix + "__00' and org_dic.fCode <> '" + fProvinceCode + "'";
       orgDicUnitAddrCityBizData.filters.clear();
       orgDicUnitAddrCityBizData.setFilter("cityFilter",cityFilter);
       orgDicUnitAddrCityBizData.refreshData();
       justep.xbl("queryConditionData").setValue("fUnitAddrCityCode",orgDicUnitAddrCityBizData.getValue("fCode",provinceCurrentRowID));
       justep.xbl("queryConditionData").setValue("fUnitAddrCityName",orgDicUnitAddrCityBizData.getValue("fName",provinceCurrentRowID));
    }
}

function changeProvince(){
   //省编码
   var orgDicUnitAddrProvinceBizData = justep.xbl("orgDicUnitAddrProvinceBizData");
   var provinceCurrentRowID = orgDicUnitAddrProvinceBizData.getCurrentRowId();
   var fProvinceCode = orgDicUnitAddrProvinceBizData.getValue("fCode",provinceCurrentRowID);
   var fCountryProvinceCodePrefix = fProvinceCode.substring(0,4);
   if("" != fProvinceCode){
      //设置市
      var orgDicUnitAddrCityBizData = justep.xbl("orgDicUnitAddrCityBizData");
      var cityCurrentRowID= orgDicUnitAddrCityBizData.getCurrentRowId();
      var cityFilter = "org_dic.fCode like '" + fCountryProvinceCodePrefix + "__00' and org_dic.fCode <> '" + fProvinceCode + "'";
      orgDicUnitAddrCityBizData.filters.clear();
      orgDicUnitAddrCityBizData.setFilter("cityFilter",cityFilter);
      orgDicUnitAddrCityBizData.refreshData();
      justep.xbl("queryConditionData").setValue("fUnitAddrCityCode",orgDicUnitAddrCityBizData.getValue("fCode",provinceCurrentRowID));
     justep.xbl("queryConditionData").setValue("fUnitAddrCityName",orgDicUnitAddrCityBizData.getValue("fName",provinceCurrentRowID));
  }
}

调用处:

mainActivity.fUnitAddrCountryGridSelectCloseup = function(event){
changeCountry();
};
mainActivity.fUnitAddrProvinceGridSelectCloseup = function(event){
changeProvince();
};

特别注意点:

如果页面中有重置按钮或其他类似按钮,请重新初始化数据组件:

我的初始化代码:
//初始化单位驻地省数据
function initializeOrgUnitAddrProvinceBizData(){
var orgDicUnitAddrProvinceBizData = justep.xbl("orgDicUnitAddrProvinceBizData");
orgDicUnitAddrProvinceBizData.filters.clear();
orgDicUnitAddrProvinceBizData.setFilter("fUnitAddrProvinceFilter","org_dic.fCategoryID = 'xzqh' and org_dic.fCode like '%0000' and not (org_dic.fCode like '%000000')");
orgDicUnitAddrProvinceBizData.refreshData();
}
//初始化单位驻地市数据
function initializeOrgUnitAddrCityBizData(){
var orgDicUnitAddrCityBizData = justep.xbl("orgDicUnitAddrCityBizData");
orgDicUnitAddrCityBizData.filters.clear();
orgDicUnitAddrCityBizData.setFilter("fUnitAddrCityFilter","org_dic.fCategoryID = 'xzqh' and org_dic.fCode like '%00' and not (org_dic.fCode like '%0000')");
orgDicUnitAddrCityBizData.refreshData();
}

//如有雷同,请给出批评指正,可能国家、省、市在不同地方过滤方式不一样。

国家[两位编码] 省[两位编码] 市[两位编码] 县[两位编码]
00                     00                00                 00

实现它们的联动...

实现它们的联动...

评分

参与人数 1 +8 收起 理由
jishuang + 8 赞一个!

查看全部评分

如果我说对了 请别忘记点赞.

32

主题

139

帖子

1843

积分

金牌会员

Rank: 6Rank: 6

积分
1843
QQ
发表于 2014-5-29 23:04:10 | 显示全部楼层
树形展示:
选择地区.JPG
云逸ERP(进销存+生产+维修)
网站 http://www.iune.cn
企业邮箱 erp@iune.cn
个人邮箱 lsp121043@126.com
电话 13120016007
回复 支持 反对

使用道具 举报

242

主题

1418

帖子

2325

积分

金牌会员

批判主义者

Rank: 6Rank: 6

积分
2325
QQ
 楼主| 发表于 2014-5-29 23:07:06 | 显示全部楼层
本帖最后由 腹部流出的肉 于 2014-5-29 23:16 编辑
lsp121043 发表于 2014-5-29 23:04
树形展示:


你这种方式很不错 不过得首先构造出这棵树

快速定位框

国家1
        |--省1
                |--市1
                        |--县1
                        |--县2
                        |--县3
                        ... ...
                |--市2
                |--市3
                ... ...
        |--省2
        |--省3
         ... ...
国家2
国家3
... ...


很赞哟
如果我说对了 请别忘记点赞.
回复 支持 反对

使用道具 举报

32

主题

139

帖子

1843

积分

金牌会员

Rank: 6Rank: 6

积分
1843
QQ
发表于 2014-5-29 23:38:17 | 显示全部楼层
腹部流出的肉 发表于 2014-5-29 23:07
你这种方式很不错 不过得首先构造出这棵树

快速定位框

云逸ERP(进销存+生产+维修)
网站 http://www.iune.cn
企业邮箱 erp@iune.cn
个人邮箱 lsp121043@126.com
电话 13120016007
回复 支持 反对

使用道具 举报

72

主题

187

帖子

429

积分

中级会员

Rank: 3Rank: 3

积分
429
QQ
发表于 2014-5-30 14:16:35 | 显示全部楼层
赞一个
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-17 15:49 , Processed in 0.117626 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表