C#用ComboBox控制項實現省與市的聯動效果的方法

來源:互聯網
上載者:User

標籤:ref   margin   參考   and   lda   指標   display   html   連接字串   

本文執行個體講述了C#用ComboBox控制項實現省與市的聯動效果的方法。分享給大家供大家參考。具體實現方法如下:


代碼如下:

using System;

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 省市聯動

{

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”));  //這裡要特別注意資料庫欄位的類型 proID在資料庫裡是int型

pr.proName = dr.GetString(dr.GetOrdinal(“proName”));

comboBox1.Items.Add(pr);//pr是一個Province對象。Province有一個proName和proID屬性。我將一個對象填充到comboBox1裡。再讓comboBox1的DisplayMember屬性設定proName。【也就是讓comboBox1顯示pr對象的proName屬性】。這樣在填充市級城市的時候我就可以找到當前選擇項comboBox1.SelectedItem(或者當前選擇對象)所對應的proID

}

}

}

comboBox1.SelectedIndex = 0;  //將comcomboBox1的預設選項設為0

}

}

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)

{

}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{

comboBox2.Items.Clear(); //在選擇的時候先清空一下combox1裡面的所以項,以免在更換省名的時候,與先前對應的省名下的市沒有刪除。

Province tem = (Province)comboBox1.SelectedItem; // 因為在comboBox1.Items.Add(pr)裡添加的是對象。所以在這裡講comBox1所選中的當前對象賦給tem對象 (tem對象下面有兩個屬性 proName和proID)

int id = tem.proID;  //將當前選中對象的的proID賦值給id,給下面的sql查詢語句使用

Tsql.GetConnection();// 擷取資料庫連接字串。

using (SqlConnection conn = new SqlConnection(Tsql.GetConnection()))

{

conn.Open();

using (SqlCommand cmd = conn.CreateCommand())

{

cmd.CommandText = “select * from city where [email protected]”;

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的預設選項設為0

}

}

}

class Tsql

{

public static string GetConnection() //資料庫連接字串

{

string getConn = ConfigurationManager.ConnectionStrings[“getConn”].ConnectionString;

return getConn;

}

}

class Province

{

public string proName { get; set; }

public int proID { get; set; }

}

}


代碼如下:

using System.Data.SqlClient;

namespace 省市選擇2

{

public partial class Form1 : Form

{

publicForm1()

{

InitializeComponent();

}

privatevoid Form1_Load(objectsender,EventArgs e)

{

/*

//測試代碼:執行這段代碼的情況下是可以吧 tom這個值添加到 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屬性設定為“ProvinceName”用來在comboBox1控制項中顯示ProvinceName屬性的值

comboBox1.DisplayMember = “ProvinceName”;

pv.ProvinceName =reader.GetString(reader.GetOrdinal(“proName”));

pv.ProvinceID =reader.GetInt32(reader.GetOrdinal(“proID”));

//雖然pv屬於對象,把一個對象添加到ComboxBox1中,控制項顯示的值為對象的類名,但是在前面comboBox1.DisplayMember =”ProvinceName”處已經設定好控制項要顯示的為 Province類的ProvinceName值,所以添加進去的是pv對象的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(省)表裡proID相同的所有資料。

cmd.CommandText = “select * from city where proID [email protected]”;

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(“錯誤資訊:” + 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; }

//}

}

如所示:

希望本文所述對大家的C#程式設計有所協助。

除聲明外, 跑步客文章均為原創,轉載請以連結形式標明本文地址
  C#用ComboBox控制項實現省與市的聯動效果的方法

本文地址:  http://www.paobuke.com/develop/c-develop/pbk23162.html






相關內容C# 以MDF檔案連結資料庫的範例程式碼C# RSA分段加解密實現方法詳解C#給Excel添加浮水印執行個體詳解C# 為String類型增加方法詳解
C#通過指標實現快速拷貝的方法C#控制台進行檔案讀寫的方法C#非同步委託調用執行個體分析C#預定義資料類型之實值型別和參考型別介紹

C#用ComboBox控制項實現省與市的聯動效果的方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.