ComboBox的SelectedIndexChanged事件

wind4fly 2011-01-08 06:35:04
简单说一下:
控件:
cboClass
cboStudentID
txtStudentName
初始化的时候执行:
DataSet dsClass = DbACE.Query("select * from class");
cboClass.DataSource = dsClass.Tables["ds"];
cboClass.DisplayMember = "class"; //班级列表
cboClass.ValueMember = "cid"; //班级ID

控件cboClass的SelectedIndexChanged事件:
DataRowView drv = (DataRowView)cboClass.SelectedItem;
string gId = drv.Row["cid"].ToString(); //获取班级ID
string sql = string.Format("select * from student where classid = {0}", gId);
DataSet dsStudentID = DbACE.Query(sql);
cboStudentID.DataSource = dsStudentID.Tables["ds"]; //绑定数据
cboStudentID.DisplayMember = "studentid"; //学号
cboStudentID.ValueMember = "name"; //姓名

控件cboStudentID的SelectedIndexChanged事件:
DataRowView drv = (DataRowView)cboStudentID.SelectedItem;
txtStudentName.Text = drv.Row["name"].ToString(); //获取姓名

程序运行时,cboClass和cboStudentID默认显示的都是第一个数据,
但是txtStudentName却显示的不是第一个。我这里测试是是第三个数据的名字。

...全文
772 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wind4fly 2011-01-08
  • 打赏
  • 举报
回复
我现在初始化的时候执行:
DataSet dsClass = DbACE.Query("select * from class");
cboClass.DataSource = dsClass.Tables["ds"];
cboClass.DisplayMember = "class"; //班级列表
cboClass.ValueMember = "cid"; //班级ID
//选择列表初始化已经完成,再进行获取覆盖一次姓名
txtStudentName.Text=cboStudentID.SelectedValue.ToString();
其他代码不变。

这样就能正常现实了。不过如果有更好的方法,麻烦贴出来!
wuyq11 2011-01-08
  • 打赏
  • 举报
回复
ComboBox的Text修改为ComboBox中其他选项的内容时,自然会导致该选项被选中,于是触发了SelectedIndexChanged事件
手动添加SelectedIndexChanged的事件处理程序
comboBox1.SelectedIndexChanged -= new EventHandler(comboBox1_SelectedIndexChanged);

comboBox1.SelectedIndexChanged += new EventHandler(comboBox1_SelectedIndexChanged);

wind4fly 2011-01-08
  • 打赏
  • 举报
回复
2楼方法不行。启动显示结果“System.Data.DataRowView”
我做了单步跟踪,程序是在DataSource绑定的时候触发事件的。
程序启动的时候是没有默认数据的,在绑定的时候才触发的SelectedIndexChanged事件,所以找不到Value。
不过,之后手动选择结果没错。
xixihaha_2011_098 2011-01-08
  • 打赏
  • 举报
回复
txtStudentName.Text=cboStudentID.SelectedValue.ToString()
本系统开发的是一个比较完善宾馆管理系统,是为了对宾馆的住房和人员有一个较好的管理,为此开发了“宾馆管理系统”——基于管理系统。该系统适用于一些中小型宾馆的管理应用, 本系统采用用户管理,客房管理,房客预定等应用,给广大用户带来了很大的便利。本系统具有以下功能: 1)用户管理,该功能用于管理使用该系统的用户,以及按模块进行权限的分配。 2)房客管理,主要包括房客登记、补交押金、房客换房和房客退 3)预订管理,主要包括预定房间、预定转入住和类别。取消预定。 4)客房管理,主要包括客房信息、编辑客房和客房内的物品。 (自己完成) 开发工具:C#、SQL Server 2000。 private void loading1_Load(object sender, EventArgs e) { while (dr.Read()) { comboBox1.Items.Add(dr["userIdetity"].ToString()); } this.button1.Visible = false; this.button2.Visible = false; timer1.Interval = 1000; timer1.Start(); label4.Text = System.DateTime.Now.ToString(); } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { if (comboBox1.Text == "前台服务员") { button1.Text = "登录前台系统"; SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = "select username from userManagement where userIdetity=@userIdetity "; cmd.Parameters.Add(new SqlParameter("@userIdetity", comboBox1.SelectedItem.ToString())); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { comboBox2.Items.Add(dr["username"].ToString()); } dr.Close(); } else if (comboBox1.Text == "后台总经理") { button1.Text = "登录后台系统"; cmd.CommandText = "select userName from userManagement where userIdetity=@userIdetity "; cmd.Parameters.Add(new SqlParameter("@userIdetity", comboBox1.Text )); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { comboBox2.Items.Add(dr["userName"].ToString()); } }
private void Save2Excel() { //string file = "F:\\11\\ck.xlsx"; //string path = "F:\\11\\excel\\"; string time = DateTime.Now.ToString("yyyyMMdd"); string file = System.Windows.Forms.Application.StartupPath + "\\ck.xlsx"; string path = System.Windows.Forms.Application.StartupPath + "\\excel\\"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } string saveName1 = path + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx"; excel = new CCExcel(file,saveName1); excel.Exceldata(); } private void textBox1_TextChanged(object sender, EventArgs e) { Form1.name = textBox1.Text.ToString(); } private void Form1_Load(object sender, EventArgs e) { comboBox1.Text = 11.ToString(); comboBox2.Text = 100.ToString(); } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { Form1.comB1 = comboBox1.Text.ToString(); } private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) { Form1.comB2 = comboBox2.Text.ToString(); } } public class CCExcel { public Excel.Application appExcel; public Excel.Workbooks wbs; public Excel.Workbook wb; public Excel.Worksheets wss; public Excel.Worksheet ws; private string fileName; private string saveName; public CCExcel(string fileName,string saveName) { // //TODO: 在此处添加构造函数逻辑 // this.fileName = fileName; this.saveName = saveName; } public void Exceldata() { Create(); //Open(fileName); Data2Excel(); Save(saveName); //Save(wb,saveName); //appExcel.ActiveWorkbook.SaveCopyAs(fileName); //判断当前激活的表,并保存这个表。否则,保存时会弹出“是否保存Sheet1.xlsx”的对话框 wb.Close(Type.Missing, Type.Missing, Type.Missing); wbs.Close(); appExcel.Quit(); wb = null; wbs = null; appExcel = null; GC.Collect(); } private void Create()//创建一个Excel对象 { appExcel = new Excel.Application(); wbs = appExcel.Workbooks; wb = wbs.Add(true); //ws = (Excel.Worksheet)wb.ActiveSheet;//这是一个只读sheets集合 //Excel.Worksheet worksheet = wb.ActiveSheet as Excel.Worksheet;//这也是一个只读sheets集合 //Excel.Worksheet ws = (Worksheet)wb.Worksheets[1];//创建工作页sheet单页 ws = wb.Worksheets[1] as Worksheet; //第一个sheet页 ws.Name = "ck"; //这里修改sheet名称 } public void Open(string fileName) { appExcel = new Excel.Application(); wbs = appExcel.Workbooks; wb = wbs.Add(fileName); wb = wbs.Open(fileName,Type.Missing,Type.Missing,Type.Missing,Type.Missing, Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing, Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing); }

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧