急!C#,如何在一个组合框里选择省份,在另一个组合框里选择相应省份的城市?谢谢帮忙

作者&投稿:殷勤师 (若有异议请与网页底部的电邮联系)
access数据库如何使用一个组合框下拉选择省份,另一个组合框显示相应的城市?~

用筛选查询,必须有一个表有省份对应城市

假设你有一个表保存省份和城市资料,表名为:某表
有一个窗体,名为:某窗体
窗体上有两个组合框,名为:省份组合框和城市组合框
1.以省份为省份组合框的行来源
2.建立一个查询,名为:筛选城市,语句如下:
SELECT [城市]
FROM 某表
WHERE [省份]=Forms!某窗体!省份组合框;
3.以查询“筛选城市”作为城市组合框的行来源
4.在省份组合框更新后事件中写下:
Private Sub 省份组合框_AfterUpdate()
Me.Refresh
End Sub

思路:change事件后,给它绑定一个datasource 它又数据远了 也就有数据了 这种东西往上都有的,仔细找
后台代码的编写: 在页面首次加载的时候,三个下拉框里应该都是"—请选择—", 当你选择第一个下拉框(省份)的时候,第二个下拉框根据第一个下拉框里的value值,可以列出属于这个省份的所有城市,而第三个下拉框是根据第二个下拉框里的城市名称,来得到这个城市的编号,进而根据这个城市编号查找所有属于这个城市的所有县区。

详细代码的编写:

首先,在数据库访问层(DAL)里添加一个DBHelper类,在这个类里,我写了数据库访问类,里面有许多方法,但在这里我只列出这个“小东东”里用的的东西

static class DBHelper
{
private static readonly string DbConnectionString = ConfigurationManager.ConnectionStrings["sqlConnectionString"].ConnectionString;
private static SqlConnection conn;
/// <summary>
/// 与数据库进行连接
/// </summary>
/// <returns></returns>
private static SqlConnection createConnection()
{
if(conn==null)
{
conn = new SqlConnection(DbConnectionString);
conn.Open();
}
else if(conn.State==ConnectionState.Broken || conn.State==ConnectionState.Closed)
{
conn.Close();
conn.Open();
}
return conn;
}
public static SqlDataReader getRdr(string sqlStr)
{
SqlCommand cmd = new SqlCommand(sqlStr, createConnection());
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return rdr;
}
public static object ExecuteScalar(string commandText)
{
SqlCommand mycmd = new SqlCommand(commandText, createConnection());
object obj = mycmd.ExecuteScalar();
return obj;
}

}

注意;在这里,sqlConnectionString是配置文件web.config里的数据库连接字符串

然后在这个类库里,添加service.cs

public static SqlDataReader getProvinces()
{
string sqlStr = "select * from province";
return DBHelper.getRdr(sqlStr);
}

public static SqlDataReader getCitiesByProvId(int provId)
{
string sqlstr = "select cityId,cityName from city where provId="+provId;
SqlDataReader rdr = null;
rdr = DBHelper.getRdr(sqlstr);
if (rdr.HasRows)
{
return rdr;
}
rdr.Close();
return null;
}

public static SqlDataReader getCountiesByCityId(int cityId)
{
string sqlStr = "select countyId,countyName from county where cityId="+cityId;
SqlDataReader rdr = null;
rdr = DBHelper.getRdr(sqlStr);
if (rdr.HasRows)
{
return rdr;
}
rdr.Close();
return null;
}

public static object getCityIdByCityName(string CityName)
{
string sqlStr = "select cityId from city where cityName='"+CityName+"'";
object obj = DBHelper.ExecuteScalar(sqlStr);
if(obj!=null)
{
return obj;
}
return null;
}

在业务逻辑层(BLL)里,添加Manager.cs

public static SqlDataReader getProvinces()
{
return VoteServices.getProvinces();
}
public static SqlDataReader getCitiesByProvId(int provId)
{
return VoteServices.getCitiesByProvId(provId);
}
public static SqlDataReader getCountiesByCityId(int cityId)
{
return VoteServices.getCountiesByCityId(cityId);
}
public static string getCityIdByCityName(string CityName)
{
return VoteServices.getCityIdByCityName(CityName).ToString();
}

在表示层,我用了个用户控件,因为用户控件很灵活,你在不用的时候直接去了就ok了,不会对页面产生多大的影响。

public partial class liandong : System.Web.UI.UserControl
{
private static int provId;
private int cityId;
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
dropProvincsBind();
}
}
protected void dropProvincsBind()
{
this.dropProv.DataSource = VoteManager.getProvinces();
this.dropProv.DataTextField = "provName";
this.dropProv.DataValueField = "provId";
this.dropProv.DataBind();
}

protected void dropProv_SelectedIndexChanged(object sender, EventArgs e)
{
provId= Int32.Parse(this.dropProv.SelectedValue.ToString());
this.dropCity.DataSource = VoteManager.getCitiesByProvId(provId);
this.dropCity.DataTextField = "cityName";
this.dropCity.DataValueField = "cityId";
this.dropCity.DataBind();
}

protected void dropCity_SelectedIndexChanged(object sender, EventArgs e)
{
string cityName = this.dropCity.SelectedItem.Text.ToString();
cityId = int.Parse(VoteManager.getCityIdByCityName(cityName));
this.dropCounty.DataSource=VoteManager.getCountiesByCityId(cityId);
this.dropCounty.DataTextField = "countyName";
this.dropCounty.DataValueField = "countyId";
this.dropCounty.DataBind();
}
}

首先绑定省份的下拉表 设置省份下拉表的AutoPostBack属性为true 然后在省份的OnSelectChange事件里绑定城市下拉表的值

如果已有省市的数据,在第一个listbox 中绑定省的数据源。当点击listbox时触发SelectedIndexChanged事件,在事件中根据选择的省份id,从数据库中取出该省下的城市列表,绑定到第二个listbox中即可

Combox有一个SelectedIndexChanged事件,用这个就可以了,在第一个组合框的SelectedIndexChanged事件里添加代码根据第一个组合框里选定的值去拿数据放到第二个组合框里

假设你有一个表保存省份和城市资料,表名为:某表
有一个窗体,名为:某窗体
窗体上有两个组合框,名为:省份组合框和城市组合框
1.以省份为省份组合框的行来源
2.建立一个查询,名为:筛选城市,语句如下:
SELECT [城市]
FROM 某表
WHERE [省份]=Forms!某窗体!省份组合框;
3.以查询“筛选城市”作为城市组合框的行来源
4.在省份组合框更新后事件中写下:
Private Sub 省份组合框_AfterUpdate()
Me.Refresh
End Sub



c语言中, !c什么意思?
!c表示取c的逻辑非,例如if(!c){},表示如果c=0,则语句成立。不晓得你要问什么 如果想要更确切的解释,请贴出相关代码

急急急急!!!C字开头的励志的英文单词
contemplate 沉思、courage 勇气、courtesy 礼貌、celebrate 庆祝、conquer 战胜、compete 竞争。1、contemplate 英 [ˈkɒntəmpleɪt]美 [ˈkɑ:ntəmpleɪt]contemplate可以作及物动词也可以作不及物动词,意思如下:vt:注视,凝视;盘算,计议;周密考虑 vi:...

“!”在C语言中是什么意思?
c语言中!表示逻辑运算中的非运算。“!”是C语言中的非运算符,在变量前面使用它,会构建非运算表达式,表达式的返回结果是个布尔值(也就是只有true或false)。对变量使用时,如果变量不是布尔数据类型,将会强制转化为布尔类型再使用,如整形变量123将被转化为true,整形变量0将被转化为false。C语言:...

c语言中的“!”什么意思?
c语言中的“!”是逻辑运算中的非运算。“!”是C语言中的非运算符,在变量前面使用它,会构建非运算表达式,表达式的返回结果是个布尔值(也就是只有true或false)。对变量使用时,如果变量不是布尔数据类型,将会强制转化为布尔类型再使用,如整形变量123将被转化为true,整形变量0将被转化为false。

在C语言中,! 叹号是啥意思? !! 两个叹号又是啥意思呢?
感叹号是运算符,逻辑非。比如说“!真”也就是假的意思。两个!是为了把非0值转换成1,而0值还是0。因为C语言中,所以非0值都表示真。所以!非0值 = 0,而!0 = 1。所以!!非0值 = 1,而!!0 = 0。比如:i=5 !i=0 !!i=1 ...

c语言中(感叹号!)是什么意思?
若表示a不等于0,就写成a!=0;假设a等于1,那a!=0;就是真的,true。C语言中的符号分为10类:算术运算符、关系运算符、逻辑运算符、位操作运算符、赋值运算符、条件运算符、逗号运算符、指针运算符、求字节数运算符和特殊运算符。其中逻辑运算符用于逻辑运算,包括与(&&)、或(||)、非(!)三种...

维生素C适合什么人服用?
以下人群适合吃维生素c:1.经常抽烟的人 吸烟对维生素C的消耗很大。研究表明,经常吸烟的人对维生素C的需求量,比不吸烟者要提高40%以上。经常抽烟的人多吃维生素C含量高的食物,有助于提高细胞的抵抗力,消除体内的尼古丁。2.白内障患者 维生素C是眼睛内晶状体的营养要素,而白内障发病的原因之一就是...

请问:c ! 怎么算?
c!是表示C的阶乘,假如C=5,C!=5*4*3*2*1,明白?

C语言中运算符优先级排序
C语言中运算符优先级排序如下:分为优先级15级:1、圆括号【()】、下标运算符【[]】、分量运算符的指向结构体成员运算符【->】、结构体成员运算符【.】;2、逻辑非运算符【!】、按位取反运算符【~】、自增自减运算符【++】【 --】、负号运算符【-】、类型转换运算符【(类型)】、指针运算...

C语言逻辑或与非的用法
C语言逻辑或与非用于逻辑运算,可以在一条语句中同时出现,但还有优先级的限制。基本应用:逻辑与,符号为“&&”,只有两个操作数都是真,结果才是真。逻辑或,是逻辑运算符,符号是“||”。表示当两个条件中有任一个条件满足,“逻辑或”的运算结果就为“真”。“!”(逻辑非)逻辑运算符。“逻辑...

沁水县13884075374: 急!C#,如何在一个组合框里选择省份,在另一个组合框里选择相应省份的城市?谢谢帮忙 -
容胖蛋氨: 思路:change事件后,给它绑定一个datasource 它又数据远了 也就有数据了 这种东西往上都有的,仔细找 后台代码的编写: 在页面首次加载的时候,三个下拉框里应该都是"—请选择—", 当你选择第一个下拉框(省份)的时候,第二个下...

沁水县13884075374: 急求!!!!C#之中,一个组合框如何控制另一个组合框 -
容胖蛋氨: 在第一个组合框的相关事件处理函数中更新第二个组合框呀,这个是很常见的操作,选择了省,另外一个框自动出现该省的市.

沁水县13884075374: 一个组合框的使用问题 c# -
容胖蛋氨: ComboBox控件吧?只需在属性列表中找到“DropDownStyle”,将其设置为DropDownList 即可.

沁水县13884075374: C# 应用程序 中两个comboBox,如何联动?例如选择省份后,另外的comboBox里面显示城市??
容胖蛋氨: #region 省市区联动 private void cmb省_SelectedIndexChanged(object sender, EventArgs e) { if (this.cmb省.SelectedIndex != -1) cmb市.DataSource = 这里根据选择的省,加载省下面 市的列表; } private void cmb市_SelectedIndexChanged(...

沁水县13884075374: C#.net 二级联动菜单怎么做 -
容胖蛋氨: 例如两个DropDownList的ID分别为 ddl1 和 ddl2 在ddl一的选择事件(SelectedIndexChanged)中得到选中行的text或value,当成参数传到第ddl2的绑定方法中.并执行ddl2的绑定.就OK啦.代码如下://绑定一级CITY名到DDL private void ...

沁水县13884075374: c#中单选框选中时怎样在两个之间只选中一个 -
容胖蛋氨: 用radiobuttonlist控件就行了,不要用checkbox控件..radiobuttonlist本身就具有只能选择一个的特性.

沁水县13884075374: c#,选择组合框的内容,在文本框上显示相应的内容. -
容胖蛋氨: 在下拉菜单的事件(selectindexchange)里面写:protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { this.TextBoxAnswer.Text = DropDownList1.SelectedValue; }

沁水县13884075374: VC组合框ComboBox控件用法
容胖蛋氨: 有2中方式: 1:如果是VC6工程,左键选中控件,右键弹出菜单 选择属性,有个 数据属性页,在里面填入数据,注意CTRL+ENTER是回车换行. 2:通过代码动态添加,比如 m_box.InsertString(0,"国企"); m_box.InsertString(1,"集体企业"); 等等. 希望能帮到你.

沁水县13884075374: 在ACCESS中想编一个在一个控件中选择省份的名称,在另一个控件中出现该省份所对应的城市名单,怎么编? -
容胖蛋氨: 1. 新建一个表1,表中有省份和城市两个字段2.新建一个窗体,在窗体上放置一个名称为combo4的省份组合框,一个名称为list6的列表框,这两个控件都不要捆绑数据表哦3.设置combo4的行来源为 SELECT DISTINCT 表1.省份 FROM 表1; 4.在...

沁水县13884075374: C#里,在一个分组框里添加几个单选按钮,为什么运行成功时就默认选中一个按钮了? -
容胖蛋氨: 默认的,当你没有选择窗体加载的时候默认选中某一个按钮,那么系统就默认选择的你从工具栏拉出来的第一个按钮

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网