C#用ComboBox控件實(shí)現(xiàn)省與市的聯(lián)動(dòng)效果的方法
本文實(shí)例講述了C#用ComboBox控件實(shí)現(xiàn)省與市的聯(lián)動(dòng)效果的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;
namespace 省市聯(lián)動(dòng)
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Tsql.GetConnection();
using (SqlConnection conn = new SqlConnection(Tsql.GetConnection()))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from promary";
using (SqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
Province pr = new Province();
pr.proID = dr.GetInt32(dr.GetOrdinal("proID")); //這里要特別注意數(shù)據(jù)庫(kù)字段的類型 proID在數(shù)據(jù)庫(kù)里是int型
pr.proName = dr.GetString(dr.GetOrdinal("proName"));
comboBox1.Items.Add(pr);//pr是一個(gè)Province對(duì)象。Province有一個(gè)proName和proID屬性。我將一個(gè)對(duì)象填充到comboBox1里。再讓comboBox1的DisplayMember屬性設(shè)置proName。【也就是讓comboBox1顯示pr對(duì)象的proName屬性】。這樣在填充市級(jí)城市的時(shí)候我就可以找到當(dāng)前選擇項(xiàng)comboBox1.SelectedItem(或者當(dāng)前選擇對(duì)象)所對(duì)應(yīng)的proID
}
}
}
comboBox1.SelectedIndex = 0; //將comcomboBox1的默認(rèn)選項(xiàng)設(shè)為0
}
}
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
comboBox2.Items.Clear(); //在選擇的時(shí)候先清空一下combox1里面的所以項(xiàng),以免在更換省名的時(shí)候,與先前對(duì)應(yīng)的省名下的市沒(méi)有刪除。
Province tem = (Province)comboBox1.SelectedItem; // 因?yàn)樵赾omboBox1.Items.Add(pr)里添加的是對(duì)象。所以在這里講comBox1所選中的當(dāng)前對(duì)象賦給tem對(duì)象 (tem對(duì)象下面有兩個(gè)屬性 proName和proID)
int id = tem.proID; //將當(dāng)前選中對(duì)象的的proID賦值給id,給下面的sql查詢語(yǔ)句使用
Tsql.GetConnection();// 獲取數(shù)據(jù)庫(kù)連接字符串。
using (SqlConnection conn = new SqlConnection(Tsql.GetConnection()))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from city where proID=@id";
cmd.Parameters.Add(new SqlParameter("id", id));
using (SqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
comboBox2.Items.Add(dr.GetString(dr.GetOrdinal("cityName")));
}
}
}
comboBox2.SelectedIndex = 0; //將comcomboBox1的默認(rèn)選項(xiàng)設(shè)為0
}
}
}
class Tsql
{
public static string GetConnection() //數(shù)據(jù)庫(kù)連接字符串
{
string getConn = ConfigurationManager.ConnectionStrings["getConn"].ConnectionString;
return getConn;
}
}
class Province
{
public string proName { get; set; }
public int proID { get; set; }
}
}
namespace 省市選擇2
{
public partial class Form1 : Form
{
publicForm1()
{
InitializeComponent();
}
privatevoid Form1_Load(objectsender,EventArgs e)
{
/*
//測(cè)試代碼:執(zhí)行這段代碼的情況下是可以吧 tom這個(gè)值添加到 comboBox1中的。
People p1 = new People();
p1.name = "tom";
p1.age = 25;
comboBox1.Items.Add(p1.name);
*/
using(SqlConnection conn =newSqlConnection("Data source=凡斌-VAIO;Initialcatalog=DBPromary;integrated security=true"))
{
conn.Open();
using(SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from promary";
using(SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
//string str =reader.GetString(reader.GetOrdinal("proName"));
//comboBox1.Items.Add(str);
Province pv =new Province();
//將comboBox1控件的DisplayMember屬性設(shè)置為“ProvinceName”用來(lái)在comboBox1控件中顯示ProvinceName屬性的值
comboBox1.DisplayMember = "ProvinceName";
pv.ProvinceName =reader.GetString(reader.GetOrdinal("proName"));
pv.ProvinceID =reader.GetInt32(reader.GetOrdinal("proID"));
//雖然pv屬于對(duì)象,把一個(gè)對(duì)象添加到ComboxBox1中,控件顯示的值為對(duì)象的類名,但是在前面comboBox1.DisplayMember ="ProvinceName"處已經(jīng)設(shè)置好控件要顯示的為 Province類的ProvinceName值,所以添加進(jìn)去的是pv對(duì)象的ProvinceName值
comboBox1.Items.Add(pv);
}
}
}
}
}
privatevoid comboBox1_SelectedIndexChanged(object sender,EventArgse) //注意這里是comboBox1不是comboBox2
{
try
{
Province tem = (Province) comboBox1.SelectedItem;
int id = tem.ProvinceID;
comboBox2.Items.Clear();
using(SqlConnection conn =newSqlConnection("Data source=凡斌-VAIO;Initialcatalog=DBPromary;integrated security=true"))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
//查詢city(市)表里的 proID與promary(?。┍砝飌roID相同的所有數(shù)據(jù)。
cmd.CommandText = "select * from city where proID =@id";
cmd.Parameters.Add(new SqlParameter("id", id));
SqlDataReader dr = cmd.ExecuteReader();
while(dr.Read())
{
comboBox2.Items.Add(dr.GetString(dr.GetOrdinal("cityName")));
}
}
}
}
catch(Exception ex)
{
MessageBox.Show("錯(cuò)誤信息:" + ex.Message);
}
}
}
class Province
{
public string ProvinceName { get;set; }
public int ProvinceID { get;set; }
}
//class People
//{
// public string name { get; set; }
// public int age { get; set; }
//}
}
如下圖所示:
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
- C# ComboBox控件“設(shè)置 DataSource 屬性后無(wú)法修改項(xiàng)集合”的完美解決方法
- C#實(shí)現(xiàn)帶搜索功能的ComboBox
- C# 重寫ComboBox實(shí)現(xiàn)下拉任意組件的方法
- C# ComboBox的聯(lián)動(dòng)操作(三層架構(gòu))
- C#實(shí)現(xiàn)ComboBox控件顯示出多個(gè)數(shù)據(jù)源屬性的方法
- C#實(shí)現(xiàn)綁定Combobox的方法
- C#(WinForm) ComboBox和ListBox添加項(xiàng)及設(shè)置默認(rèn)選擇項(xiàng)
- C# listview添加combobox到單元格的實(shí)現(xiàn)代碼
- c#構(gòu)造ColorComboBox(顏色下拉框)
- C#實(shí)現(xiàn)ComboBox自動(dòng)匹配字符
- C#中comboBox實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)
相關(guān)文章
WinForm實(shí)現(xiàn)鼠標(biāo)拖動(dòng)控件跟隨效果
這篇文章主要為大家詳細(xì)介紹了WinForm實(shí)現(xiàn)鼠標(biāo)拖動(dòng)控件跟隨效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03C# PictureBox圖片控件實(shí)現(xiàn)圖片交換
在c#中可以使用PictureBox控件來(lái)呈現(xiàn)圖像,本文主要介紹了C# PictureBox實(shí)現(xiàn)圖片交換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06C#高效比較兩個(gè)DataTable數(shù)據(jù)差異化的方法實(shí)現(xiàn)
本文主要介紹了C#高效比較兩個(gè)DataTable數(shù)據(jù)差異化的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05C#實(shí)現(xiàn)DevExpress本地化實(shí)例詳解
這篇文章主要介紹了C#實(shí)現(xiàn)DevExpress本地化,以實(shí)例形式較為詳細(xì)的分析了DevExpress本地化的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08C#程序中創(chuàng)建、復(fù)制、移動(dòng)、刪除文件或文件夾的示例
這篇文章主要介紹了C#程序中創(chuàng)建、復(fù)制、移動(dòng)、刪除文件或文件夾的示例,即對(duì)System.IO命名空間中類的運(yùn)用,需要的朋友可以參考下2016-02-02C#?winform中ComboBox數(shù)據(jù)綁定的兩種方法及效率詳解
這篇文章主要給大家介紹了關(guān)于C#?winform中ComboBox數(shù)據(jù)綁定的兩種方法及效率,Winform?ComboBox數(shù)據(jù)綁定是指將數(shù)據(jù)源中的數(shù)據(jù)與ComboBox控件進(jìn)行關(guān)聯(lián),需要的朋友可以參考下2023-08-08C#實(shí)現(xiàn)窗體淡入淡出效果的方法總結(jié)
C#實(shí)現(xiàn)窗體淡入淡出效果的方法總結(jié),需要的朋友可以參考一下2013-05-05C#創(chuàng)建、部署、調(diào)用WebService圖文實(shí)例詳解
本文主要用詳細(xì)的圖文給大家介紹C#創(chuàng)建、部署、調(diào)用WebService的全部過(guò)程以及中間需要避免的問(wèn)題。2017-11-11C#實(shí)現(xiàn)過(guò)濾sql特殊字符的方法集合
這篇文章主要介紹了C#實(shí)現(xiàn)過(guò)濾sql特殊字符的方法,以實(shí)例形式分析總結(jié)了C#針對(duì)SQL危險(xiǎn)字符的幾種常用的過(guò)濾技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-11-11對(duì)C#中public、private、protect的區(qū)別說(shuō)明
這篇文章主要介紹了對(duì)C#中public、private、protect的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04