您的位置:首页 > 其它

【黑马训练营】利用欧姆表达式优化省市县联动——欧姆表达式,ListView与Model层的使用

2014-01-01 18:56 260 查看
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------

      首先探讨一下Model层在什么状况下有用,毕竟不言而喻的事实是,Model会增加代码量,所以我们必须在意它能带来的收益:

      Model使得可以抽象化实例,然后利用属性在界面甚至架构间传值。因此如果想让UI层和BLL层彻底分离,那么用Model互相调用值是个不错的选择。
     Model可以设置多个属性,意味着它带有一定的“数组”功能,可以视为一个二维数组,即外层数组中的每一个元素都是一个新的数组,而内层数组则用来保存数据。这就意味着,Model类在重复性的传值中有着更佳的适用性。这种重复性不仅指“同一个值”,更可说成“同一种值”。比如,一个页面需要知道员工表中的一系列值(比如,姓名,年龄,职位,薪水,权限等),与其用到了查询一次传过去,不如Model出来一个Workers,然后传值的时候,将Workers具体实例化的一个worker传过去,则worker的所有属性就都有了。

      下面就省市县关联来说明一下Model的使用。首先看如下的数据库:






 

      可以看出,id是自增长的,是一条数据的主键,name为地区名字,而pid则为归属地的id。比如,河北省是省级行政区划,因此pid为0,即没有更高的归属了。而石家庄市,唐山市,秦皇岛市等都是河北省下属的市,所以这些市除了自己各自的id之外,pid均为3(河北省的id),自然,每一个市又都有所属的县,而县区的pid则分别是各自的归属市的id 。

      因为这些内容具有极为相似的结构(都是id,name,pid),又都有固定的意义(自身编号,自身地名,归属上级地区编号),因此可以设置Mode
4000
l出来。(抽象化出来的Area)



传统的解决方法:简单的三查数据库

方案思路:先查pid=0的,放在一个List中,即为“省”;在SelectionChanged中获得选中的Area,获得其id属性,然后查pid=Area.id,放在List中获得该省的“市”,以此类推,获得该市的“县”。







改良解决方法:既然省市县本就在一张表中,既然这只是一个简单的省市县关联,能不能只查询一次数据库就搞定呢?——欧姆表达式!

方案思路:把数据一次性调入到List中,再用欧姆表达式对List进行操作,分别获得指定pid的元素,放入新的List中显示出来。如此则可省去对数据库的2次访问!









----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: