读书人

【【又来狂甩分了】】都说WinForm下用

发布时间: 2012-03-31 13:13:26 作者: rapoo

【【又来狂甩分了】】都说WinForm下用Combobox实现联动很简单,给点代码好吗?【200分,帮顶有喜哈】
数据库:
Country:
CountryID CountryName
1 中国
2 美国


Province:
ProvinceID ProvinceName CountryID
1 贵州 1
2 四川 1
3 广东 1
4 米国的一个州 2


City:
CityID CityName ProvinceID
1 贵阳 1
2 六盘水 1
3 成都 2
4 广元 2
5 广州 3
6 米国的一个市 4


请问

窗体加载时从数据库读出这些数据,并绑定在comboBox1、comboBox2、comboBox3上

改变选项时 实现三级联动


感谢帮忙和帮顶的朋友!

[解决办法]
路过学习 帮顶了
[解决办法]
up
[解决办法]
up
[解决办法]
up
[解决办法]
private void Form1_Load(object sender, EventArgs e)
{
SqlConnection cn = new SqlConnection( "server=localhost;Integrated security=yes;database=pubs ");
SqlDataAdapter da = new SqlDataAdapter( "select CountryID, CountryName from country ", cn);
DataSet ds = new DataSet();
cn.Open();
da.Fill(ds);
cn.Close();


comboBox1.DataSource = ds.Tables[0];
comboBox1.ValueMember = "CountryID ";
comboBox1.DisplayMember = "CountryName ";
}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox1.Text.Trim().Length == 0)
return;

SqlConnection cn = new SqlConnection( "server=.;Integrated security=yes;database=pubs ");
string strSQL = "select ProvinceID, ProvinceName from Province where CountryID = @CountryID ";
SqlDataAdapter da = new SqlDataAdapter(strSQL, cn);
da.SelectCommand.Parameters.Add( "@CountryID ", SqlDbType.Int).Value = Convert.ToInt32(comboBox1.Text);
DataSet ds = new DataSet();
cn.Open();
da.Fill(ds);
cn.Close();
comboBox2.DataSource = ds.Tables[0];
comboBox2.ValueMember = "ProvinceID ";
comboBox2.DisplayMember = "ProvinceName ";
}

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox2.Text.Trim().Length == 0)
return;

SqlConnection cn = new SqlConnection( "server=.;Integrated security=yes;database=pubs ");
string strSQL = "select CityID,CityName from city where ProvinceID = @ProvinceID ";
SqlDataAdapter da = new SqlDataAdapter(strSQL, cn);
da.SelectCommand.Parameters.Add( "@ProvinceID ", SqlDbType.Int).Value = Convert.ToInt32(comboBox2.Text);
DataSet ds = new DataSet();
cn.Open();
da.Fill(ds);
cn.Close();
comboBox3.DataSource = ds.Tables[0];
comboBox3.ValueMember = "CityID ";
comboBox3.DisplayMember = "CityName ";
}
[解决办法]
路过学习 帮顶
[解决办法]
又来狂接分了
[解决办法]
up
[解决办法]
up
[解决办法]
jf
[解决办法]
学习
[解决办法]
用SelectedIndexChanged事件就可以了
[解决办法]
学习!
[解决办法]
学习!
[解决办法]
建立一个索引City,把City、Province和Country关联到一起,如下:
if exists (select * from dbo.sysobjects where id = object_id(N '[dbo].[v_City] ') and OBJECTPROPERTY(id, N 'IsView ') = 1)
drop view [dbo].[v_City]
GO

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

CREATE VIEW dbo.v_City
AS
select a.*,b.ProvinceName,b.CounntryID,c.CountryName
from City a left join Province b on a.ProvinceId=b.ProvinceId
left join Country c on b.CountryID=c.CountryID

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
选取数据时从创建的v_City视图中选取并按照CounntryID,ProvinceId,id排序做起来更好些。
[解决办法]
按amandag(高歌) 的来就可以了
[解决办法]
学习飘过~~~~
------解决方案--------------------


UP
[解决办法]
amandag(高歌) 的你改下连接字符就可以了啊~~

SqlConnection cn = new SqlConnection( "server=.;Integrated security=yes;database=pubs ");
改为
SqlConnection cn = new SqlConnection( "server=127.0.0.1;Integrated security=yes;database=pubs ");

读书人网 >C#

热点推荐