<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        ASP.NET MVC下拉框聯動實例解析

        來源:懂視網 責編:小采 時間:2020-11-27 22:36:48
        文檔

        ASP.NET MVC下拉框聯動實例解析

        ASP.NET MVC下拉框聯動實例解析:兩個DropDownList的聯動,選擇其中一個DropDownList,然后加載數據到另外的一個DropDownList上 這里,我打算實現的需求是:有兩個DropDownList,一個默認加載所有的省份數據,然后,當我選擇省份的時候,把對應的市的數據,綁定到另外一個DropDownL
        推薦度:
        導讀ASP.NET MVC下拉框聯動實例解析:兩個DropDownList的聯動,選擇其中一個DropDownList,然后加載數據到另外的一個DropDownList上 這里,我打算實現的需求是:有兩個DropDownList,一個默認加載所有的省份數據,然后,當我選擇省份的時候,把對應的市的數據,綁定到另外一個DropDownL

        兩個DropDownList的聯動,選擇其中一個DropDownList,然后加載數據到另外的一個DropDownList上          
        這里,我打算實現的需求是:有兩個DropDownList,一個默認加載所有的省份數據,然后,當我選擇省份的時候,把對應的市的數據,綁定到另外一個DropDownList上面,即實現了聯動。
        好了,這里不打算使用EF了,換用ADO.NET。首先新建好數據庫,表:

        USE master 
        GO 
        IF EXISTS (SELECT * FROM sysdatabases WHERE name='MyAddressDB' )
        DROP DATABASE MyAddressDB
        GO 
        CREATE DATABASE MyAddressDB
        GO 
        USE MyAddressDB
        GO 
        
        IF EXISTS (SELECT * FROM sysobjects WHERE name='Province')
        DROP TABLE Province
        GO
        --省份表 
        CREATE TABLE Province
        (
        ProvinceID INT IDENTITY(1,1) PRIMARY KEY,
        ProvinceName NVARCHAR(50) NOT NULL
        )
        
        
        IF EXISTS (SELECT * FROM sysobjects WHERE name='City')
        DROP TABLE City
        GO
        --省份表 
        CREATE TABLE City
        (
        CityID INT IDENTITY(1,1) PRIMARY KEY,
        CityName NVARCHAR(50) NOT NULL,
        ProvinceID INT REFERENCES dbo.Province(ProvinceID) NOT NULL
        )
        
        
        --插入測試語句:【在網上找了一個省市數據庫,把里面的數據導入我當前數據庫中】
        --開始
        INSERT INTO dbo.Province
        SELECT ProvinceName FROM Temp.dbo.S_Province
        
        INSERT INTO dbo.City
         ( CityName, ProvinceID )
         SELECT CityName, ProvinceID FROM Temp.dbo.S_City
        --結束
        
        --測試插入成功與否
        --SELECT * FROM dbo.Province
        --SELECT * FROM dbo.City 
        
        

        然后新建一個空白的MVC項目,在Model文件夾下,添加兩個實體: 

        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Web;
        
        namespace JsonDataInMVC.Models
        {
         public class Province
         {
         public int ProvinceID { get; set; }
        
         public string ProvinceName { get; set; }
         }
        } 
        
        
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Web;
        
        namespace JsonDataInMVC.Models
        {
         public class City
         {
         public int CityID { get; set; }
        
         public string CityName { get; set; }
        
         public int ProvinceID { get; set; }
        
         }
        } 
        
        

        然后在根目錄下,新建一個文件夾DBOperator,在里面新建一個AddressHelper類 

        AddRessHelper類中的代碼: 

        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Web;
        using System.Configuration;
        using JsonDataInMVC.Models;
        using System.Data;
        using System.Data.SqlClient;
        
        namespace JsonDataInMVC.DBOperator
        {
         public class AddressHelper
         {
         
         /// <summary>
         /// 連接字符串
         /// </summary>
         public string ConnectionString
         {
         get 
         {
         return ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString;
         }
         }
        
         /// <summary>
         /// 獲取所有的省份
         /// </summary>
         /// <returns></returns>
         public List<Province> GetAllProvince()
         {
         List<Province> lstProvince = new List<Province>();
         string sql = @"SELECT * FROM dbo.Province";
        
         //ADO.NET連接方式訪問數據庫
         //1.創建連接對象[連接字符串]
         SqlConnection conn = new SqlConnection(ConnectionString);
        
         //2.創建命令對象
         SqlCommand cmd = new SqlCommand();
         cmd.CommandText = sql;
         cmd.CommandType = CommandType.Text;
         cmd.Connection = conn;
        
         //3.打開連接
         conn.Open();
        
         //4.發送命令
         SqlDataReader reader= cmd.ExecuteReader();
        
         //5.處理數據
         while (reader.Read())
         {
         lstProvince.Add(new Province()
         {
        
         ProvinceID =Convert.ToInt32( reader["ProvinceID"]),
         ProvinceName = reader["ProvinceName"].ToString()
         });
         }
        
         //6.關閉連接
         conn.Close();
         reader.Close();
        
         return lstProvince;
        
         }
        
        
         /// <summary>
         /// 通過ProvinceID獲取市的數據
         /// </summary>
         /// <param name="id"></param>
         /// <returns></returns>
         public List<City> GetCityListByProvinceID(int id)
         {
         DataSet ds = new DataSet();
        string sql = @"SELECT CityID,CityName FROM dbo.City WHERE ProvinceID=@ProvinceID";
        
         //ADO.NET非連接方式訪問數據庫
        
         //1.創建連接對象
         SqlConnection conn = new SqlConnection(ConnectionString); 
                //2.創建數據適配器對象
                  SqlDataAdapter sda = new SqlDataAdapter(sql,conn);//這里還真必須這樣寫。不能像下面的兩條注釋語句那樣寫。
                 //sda.SelectCommand.Connection = conn;
                //sda.SelectCommand.CommandText = sql;
                 sda.SelectCommand.CommandType = CommandType.Text;
         sda.SelectCommand.Parameters.AddWithValue("@ProvinceID", id);//參數設置別忘了
         //3.打開連接【注意,非鏈接模式下,連接的打開關閉,無所謂,不過還是打開好點。規范化】
         conn.Open();
        
         //4.發送命令
         sda.Fill(ds);
        
         //5.處理數據
        
         //6關閉連接【【注意,非鏈接模式下,連接的打開關閉,無所謂,不過還是打開好點。規范化】】
         conn.Close();
        
         return DataTableToList<City>.ConvertToModel(ds.Tables[0]).ToList<City>();
         }
         }
        } 
        
        

        DataTable轉List,我在網上找了一個幫助類: 

        using System;
        using System.Collections.Generic;
        using System.Data;
        using System.Linq;
        using System.Reflection;
        using System.Web;
        
        namespace JsonDataInMVC.DBOperator
        {
         public static class DataTableToList<T> where T : new()
         {
         public static IList<T> ConvertToModel(DataTable dt)
         {
         //定義集合
         IList<T> ts = new List<T>();
         T t = new T();
         string tempName = "";
         //獲取此模型的公共屬性
         PropertyInfo[] propertys = t.GetType().GetProperties();
         foreach (DataRow row in dt.Rows)
         {
         t = new T();
         foreach (PropertyInfo pi in propertys)
         {
         tempName = pi.Name;
         //檢查DataTable是否包含此列
         if (dt.Columns.Contains(tempName))
         {
         //判斷此屬性是否有set
         if (!pi.CanWrite)
         continue;
         object value = row[tempName];
         if (value != DBNull.Value)
         pi.SetValue(t, value, null);
         }
         }
         ts.Add(t);
         }
         return ts;
         }
         }
        } 
        
        

        創建Province控制器: 

        using JsonDataInMVC.DBOperator;
        using JsonDataInMVC.Models;
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Web;
        using System.Web.Mvc;
        
        namespace JsonDataInMVC.Controllers
        {
         public class ProvinceController : Controller
         {
         private AddressHelper db;
         public ProvinceController()
         {
         db = new AddressHelper();
         }
         // GET: Province
         public ActionResult Index()
         {
         List<Province> lstProvince= db.GetAllProvince();
        
         ViewBag.ListProvince = lstProvince;
        
         return View();
         }
         }
        } 
        
        

        對應的Index視圖: 

        @using JsonDataInMVC.Models
        @{
         ViewBag.Title = "Index";
         List<Province> lstProvince = ViewBag.ListProvince as List<Province>;
        }
        
        <h2>ProvinceIndex</h2>
        
        <label>省份:</label>
        <select id="myProvince">
         @foreach (var item in lstProvince)
         {
         <option value="@item.ProvinceID">@item.ProvinceName</option>
         }
        </select> 
        
        

        修改一下,默認的路由, 

         public static void RegisterRoutes(RouteCollection routes)
         {
         routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        
         routes.MapRoute(
         name: "Default",
         url: "{controller}/{action}/{id}",
         defaults: new { controller = "Province", action = "Index", id = UrlParameter.Optional }
         );
         } 
        
        

        先來看下階段性的成果:運行程序: 

        看,這樣就加載了所有的省份數據,現在我們要進一步實現,選擇一個省份的時候,加載數據到另外一個下拉框中。
        修改控制器,添加一個方法: 

        using JsonDataInMVC.DBOperator;
        using JsonDataInMVC.Models;
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Web;
        using System.Web.Mvc;
        
        namespace JsonDataInMVC.Controllers
        {
         public class ProvinceController : Controller
         {
         private AddressHelper db;
         public ProvinceController()
         {
         db = new AddressHelper();
         }
         // GET: Province
         public ActionResult Index()
         {
         List<Province> lstProvince= db.GetAllProvince();
        
         ViewBag.ListProvince = lstProvince;
        
         return View();
         }
        
         public JsonResult GetAllCityByProvinceID(int id)
         {
         List<City> lstCity= db.GetCityListByProvinceID(id);
         return Json(lstCity, JsonRequestBehavior.AllowGet);
         }
         }
        } 
        
        

        Index視圖中: 

        @using JsonDataInMVC.Models
        @{
         ViewBag.Title = "Index";
         List<Province> lstProvince = ViewBag.ListProvince as List<Province>;
        }
        
        <h2>ProvinceIndex</h2>
        
        <label>省份:</label>
        <select id="myProvince">
         @foreach (var item in lstProvince)
         {
         <option value="@item.ProvinceID">@item.ProvinceName</option>
         }
        </select>
        <br/>
        <hr />
        <label>城市:</label>
        <select id="myCity">
        
        </select>
        <script src="~/Scripts/jquery-1.10.2.js"></script>
        <script type="text/javascript">
         $(document).ready(function () {
         $("#myProvince").change(function () {
         //獲取省份的ID
         var provinceID = $("#myProvince").val();
         
         //獲取城市
         var myCity=$("#myCity");
        
         //加入測試代碼
         debugger;
        
         $.ajax({
         url: "/Province/GetAllCityByProvinceID/" + provinceID,
         type: "post",
         dataType: "json",
         contentType: "application/json",
         success: function (result) {
         var myHTML = "";
         myCity.html("");//賦值之前先清空
         $.each(result, function (i, data) {
         myHTML += "<option value=" + data.CityID + ">" + data.CityName + "</option>";
        
         });
         myCity.append(myHTML);
         },
         error: function (result) {
         alert(result.responseText);
         }
        
         });
        
        
         })
        
         })
        </script> 
        
        

        好了,弄好之后,運行程序: 
        選擇一個省份,對應的市的信息就被我們查出來了,綁定到另外的市的下拉框中了。 

        總結:這篇文章,雖然基礎,但是很重要,平時開發中,遇到很多這樣的場景。 
        還有就是EF用多了,ADO.NET也不能忘記。 
        連接模式和非鏈接模式查詢數據庫6個步驟,牢記心中。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        ASP.NET MVC下拉框聯動實例解析

        ASP.NET MVC下拉框聯動實例解析:兩個DropDownList的聯動,選擇其中一個DropDownList,然后加載數據到另外的一個DropDownList上 這里,我打算實現的需求是:有兩個DropDownList,一個默認加載所有的省份數據,然后,當我選擇省份的時候,把對應的市的數據,綁定到另外一個DropDownL
        推薦度:
        標簽: 示例 實例 net
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 99免费精品视频| 国产裸体美女永久免费无遮挡| 亚洲中文字幕不卡无码| 亚洲GV天堂GV无码男同| 国产高潮久久免费观看| 18成禁人视频免费网站| 亚洲精品无码久久久久久久| 亚洲精品乱码久久久久久蜜桃图片| 永久在线免费观看| 亚洲国产成人久久99精品| 久久最新免费视频| 在线精品亚洲一区二区三区| 久久性生大片免费观看性| 国产亚洲婷婷香蕉久久精品| 女bbbbxxxx另类亚洲| 国产午夜无码精品免费看动漫| 女人18毛片水真多免费播放| 亚洲国产精品久久久久秋霞小| 精品国产精品久久一区免费式| 亚洲精品天天影视综合网| 久久99国产乱子伦精品免费 | 红杏亚洲影院一区二区三区| 亚洲精品中文字幕无乱码| 99久久国产热无码精品免费| 亚洲AV午夜成人影院老师机影院 | h视频在线免费观看| 国产成人A亚洲精V品无码| 日本高清免费观看| 亚洲乱码在线卡一卡二卡新区| 免费A级毛片在线播放| 相泽亚洲一区中文字幕| 无码人妻精品中文字幕免费 | 37pao成人国产永久免费视频| 伊人久久亚洲综合影院首页| 亚洲成年看片在线观看| 久久青草精品38国产免费| 亚洲youwu永久无码精品| 亚洲中文字幕在线第六区| 亚洲视频免费在线播放| 深夜a级毛片免费视频| 亚洲日本中文字幕区|