.NET下拉控件如何绑定同一个表里面的两列(学生和老师)

qq_28051245 2016-12-27 10:53:39
我想在 if (AccepterRole.ToString() == "全部")里面,全部可以绑定学生和老师的值,但是现在只能绑定学生的值,不知道怎么实现同时绑定这两个列,在下拉显示,我是过Select 用+连起来,但是有两个查询条件T_id和S_id,没有成功

protected void M_AccepterStudentBand()
{
this.AccepterRole = this.M_Accepter_Role.SelectedValue;
if (AccepterRole.ToString() == "全部")
{
sql = "Select S_name,S_id,T_id,T_name from S_Teacher Where T_id='" + Tid.ToString() + "'";
SqlDataReader dr = conn.ExecuteReader(sql);
this.M_Accepter.DataSource = dr;//设置数据源,用于填充控件中的项的值列表
this.M_Accepter.DataTextField = "S_name";//下拉显示出来的值
this.M_Accepter.DataValueField = "S_id";//取到的值
this.M_Accepter.DataBind();//将控件及其所有子控件绑定到指定的数据源
dr.Close();
}
else if (AccepterRole.ToString() == "导师")
{
sql = "Select T_id,T_name from S_Teacher Where S_id='" + id.ToString() + "'";
SqlDataReader dr = conn.ExecuteReader(sql);
this.M_Accepter.DataSource = dr;//设置数据源,用于填充控件中的项的值列表
this.M_Accepter.DataTextField = "T_name";//下拉显示出来的值
this.M_Accepter.DataValueField = "T_id";//取到的值
this.M_Accepter.DataBind();//将控件及其所有子控件绑定到指定的数据源
dr.Close();
}
else if (AccepterRole.ToString() == "学生")
{
sql = "Select S_name,S_id,T_id,T_name from S_Teacher Where T_id='" + Tid.ToString() + "'";
SqlDataReader dr = conn.ExecuteReader(sql);
this.M_Accepter.DataSource = dr;//设置数据源,用于填充控件中的项的值列表
this.M_Accepter.DataTextField = "S_name";//下拉显示出来的值
this.M_Accepter.DataValueField = "S_id";//取到的值
this.M_Accepter.DataBind();//将控件及其所有子控件绑定到指定的数据源
dr.Close();
}
else if (AccepterRole.ToString() == "队员")
{
sql = "Select * from S_Teacher Where S_id='" + id.ToString() + "'";
SqlDataReader dr = conn.ExecuteReader(sql);
if (dr.Read())
{
group = dr["S_group"].ToString();
}
dr.Close();
M_AccepterStudentTeamBand();
}
}
...全文
222 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 10 楼 qq_28051245 的回复:
[quote=引用 8 楼 Hello_Ge 的回复:] 学生列和老师列是不能在一个表中的,假如现在要关联家长,你是不是又要加一个家长列 学生列 老师列 家长列 一个人只能同时存在一种角色,表结构应该从纵向考虑,而不是横向 成数据库设计上来说,学生、老师都是一种角色,他们有不同的职责,所有要分开建表
这是因为学生选了这个指导导师,是学生对应这个老师,这是对应关系,现在是拿这个对应关系用来做信息发送,聊天的关系来着,我已经分来来建一个学生信息和导师信息表了,这是是对应关系[/quote] 看看数据库设计范式
yzf86211861 2016-12-29
  • 打赏
  • 举报
回复
上面基本都给出代码了
  • 打赏
  • 举报
回复
学生列和老师列是不能在一个表中的,假如现在要关联家长,你是不是又要加一个家长列 学生列 老师列 家长列 一个人只能同时存在一种角色,表结构应该从纵向考虑,而不是横向 成数据库设计上来说,学生、老师都是一种角色,他们有不同的职责,所有要分开建表
  • 打赏
  • 举报
回复
老师和学生放同一张表,Name表示名字,Type代表是老师还是学生就行了 Name Type 小明 学生 张老师 老师 只要绑定Name就能知道所有人名
花落_1 2016-12-29
  • 打赏
  • 举报
回复
我觉得你不要用 DataSource 绑定下拉框的值 你循环 dr .M_Accepter..Items.add(new listItem(学生ID+老师ID,学生+老师))
haoqie9465 2016-12-29
  • 打赏
  • 举报
回复
Select S_name,S_id,T_id,T_name from S_Teacher --教师的条件 union all Select S_name,S_id,T_id,T_name from S_Teacher --学生的条件
qq_28051245 2016-12-29
  • 打赏
  • 举报
回复
引用 5 楼 haoqie9465 的回复:
Select S_name,S_id,T_id,T_name from S_Teacher --教师的条件 union all Select S_name,S_id,T_id,T_name from S_Teacher --学生的条件
改成这样行了,把两列的值as成一个再绑定 sql = "Select S_id as ids,S_name as names from S_Teacher Where T_id='" + Tid.ToString() + "' union all Select T_id as ids,T_name as names from S_Teacher Where S_id='" + id.ToString() + "'"; SqlDataReader dr = conn.ExecuteReader(sql); this.M_Accepter.DataSource = dr;//设置数据源,用于填充控件中的项的值列表 this.M_Accepter.DataTextField = "names";//下拉显示出来的值 this.M_Accepter.DataValueField = "ids";//取到的值 this.M_Accepter.DataBind();//将控件及其所有子控件绑定到指定的数据源 dr.Close();
qq_28051245 2016-12-29
  • 打赏
  • 举报
回复
引用 8 楼 Hello_Ge 的回复:
学生列和老师列是不能在一个表中的,假如现在要关联家长,你是不是又要加一个家长列 学生列 老师列 家长列 一个人只能同时存在一种角色,表结构应该从纵向考虑,而不是横向 成数据库设计上来说,学生、老师都是一种角色,他们有不同的职责,所有要分开建表
这是因为学生选了这个指导导师,是学生对应这个老师,这是对应关系,现在是拿这个对应关系用来做信息发送,聊天的关系来着,我已经分来来建一个学生信息和导师信息表了,这是是对应关系
qq_28051245 2016-12-28
  • 打赏
  • 举报
回复
引用 3 楼 closurer 的回复:
提个意见,你把老师和学生都保存到 S_Teacher 表了。这样老师会不高兴的。 老师的饭堂跟学生都要分开,或者设个专窗,不用排队,这样才合理。 如果来不及改动,用 SQL 的 union all 语句随意拼凑一下吧。
大神,给出SQL语句代码看看啊,不会写这种联合的sql,之前用A+B输出的是AB不是我要的A B 下拉效果。只能用同一张表啊,因为是学生对应导师表,一个老师选了一个毕业指导老师,这个下拉是用来绑定学生和老师,用来发信息的,就是在绑定全部的时候出了问题
闭包客 2016-12-28
  • 打赏
  • 举报
回复
提个意见,你把老师和学生都保存到 S_Teacher 表了。这样老师会不高兴的。 老师的饭堂跟学生都要分开,或者设个专窗,不用排队,这样才合理。 如果来不及改动,用 SQL 的 union all 语句随意拼凑一下吧。
qq_28051245 2016-12-28
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
this.M_Accepter.DataSource 分别用不同的查询,一个where type=老师,一个=学生
能写出具体一点的代码码,我还是不太会
threenewbee 2016-12-27
  • 打赏
  • 举报
回复
this.M_Accepter.DataSource 分别用不同的查询,一个where type=老师,一个=学生

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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