存储过程+Jquery+WebService实现三级联动:

本文介绍了一种基于ASP.NET AJAX的省市县三级联动选择框实现方案。通过存储过程获取数据库中的城市信息,并利用jQuery调用WebService进行动态加载,实现了省、市、区县的级联选择。

首先看一下数据库的设计:

2.存储过程的写法:

ALTER proc [dbo].[pro_GetCity](
@city_pid int
)
as
begin
--SELECT * FROM tbl_city WHERE city_pid IN (
select * from tbl_city where city_pid=@city_pid
end

--exec [dbo].[pro_GetCity] 0

 看一下执行效果:

服务层的代码:

 // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 
     [System.Web.Script.Services.ScriptService] 

      [WebMethod]
        public string CityList(string citycode)
        {
            return JsonHelper.GetJson<List<tbl_city>>(new SelectComboxBLL().CityList(citycode));
        }

 数据层的代码:

        public List<tbl_city> CityList(string citycode)
        {
            SqlParameter[] pars = { new SqlParameter("@city_pid", citycode) };
            return new SQLBase().TableToEntity<tbl_city>(DBhelp.SqlHelper.GetTable("pro_GetCity", System.Data.CommandType.StoredProcedure, pars));
        }

 业务层:

        public List<tbl_city> CityList(string citycode)
        {
            return new SelectCombox().CityList(citycode);
        }

 最核心的jquery调用WebService:

 
      <script type="text/javascript">
         
          $(function () {
              //省市县的绑定
              $.ajax({
                  type: "post",
                  contentType: "application/json",
                  url: "/WebService/SelectComboxService.asmx/CityList",
                  data: "{citycode:'0'}",
                  success: function (result) {
                      var arr = null;
                      if (typeof result.d == 'string')
                          arr = JSON.parse(result.d);
                      else
                          arr = result.d;
                      var stroption = '';
                      for (var i = 0; i < arr.length; i++) {
                          stroption += '<option value=' + arr[i]._city_id + '>';
                          stroption += arr[i]._name;
                          stroption += '</option>';
                      }
                      $('#seprovince').append(stroption);
                  }
              })


              $('#seprovince').change(function () {
                  $('#secity option:gt(0)').remove();
                  $('#searea option:gt(0)').remove();


                  $.ajax({
                      type: "post",
                      contentType: "application/json",
                      url: "/WebService/SelectComboxService.asmx/CityList",
                      data: "{citycode:'" + $(this).val() + "'}",
                      success: function (result) {

                          var arr = null;
                          if (typeof result.d == 'string')
                              arr = JSON.parse(result.d);
                          else
                              arr = result.d;
                          var strocity = '';
                          for (var i = 0; i < arr.length; i++) {
                              strocity += '<option value=' + arr[i]._city_id + '>';
                              strocity += arr[i]._name;
                              strocity += '</option>';
                          }
                          $('#secity').append(strocity);
                      }
                  })
              })


              $('#secity').change(function () {
                  $('#searea option:gt(0)').remove();
                  $.ajax({
                      type: "post",
                      contentType: "application/json",
                      url: "/WebService/SelectComboxService.asmx/CityList",
                      data: "{citycode:'" + $(this).val() + "'}",
                      success: function (result) {
                          var arr = null;
                          if (typeof result.d == 'string')
                              arr = JSON.parse(result.d);
                          else
                              arr = result.d;
                          var stroarea = '';
                          for (var i = 0; i < arr.length; i++) {
                              stroarea += '<option value=' + arr[i]._city_id + '>';
                              stroarea += arr[i]._name;
                              stroarea += '</option>';
                          }
                          $('#searea').append(stroarea);
                      }
                  })
              })
          });

 前端页面:

   <tr>
                                        <td>**  详细地址:</td>
                                        <td style="width:60%">
                                            <select id="seprovince"><option>--请选择--</option></select>省
                                              <select id="secity"><option>--请选择--</option></select>市
                                              <select id="searea"><option>--请选择--</option></select>区(县)
</td>
</tr>

 最后来张效果图:

当然里面用了一些公用类库,有需要的私聊!

转载于:https://www.cnblogs.com/sunliyuan/p/5740871.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值