当前位置:编程学习 > C#/ASP.NET >>

两个下拉框的联动的逻辑问题,求大神解答



首先,我数据库有一张表


然后有一个枚举


数据库里的字段GroupTye存的数字都是枚举的索引,比如0对应的是MainComputationGroup

现在设计界面有2个下拉框,一个为cboGroupCode,一个是cboGroupType

我想解决的是:

下拉cboGroupCode下拉框的时候,选中一个值,接着联动第二个下拉框cboGroupType,要在cboGroupType中显示出枚举的值,然后读取的值是枚举的索引,也就是比如我选中一个Code的值是1,cboGroupType显示的值是MainComputationGroup,然后我取到存进数据库的值是0

注:因为框架的原因,不能使用数据库语句查询,也就是用不了类似 select GroupType from..where GroupCode=‘’的语句进行查询,目前我把GroupCode的值都绑定到cboGroupCode控件了
C#Winfrom combobox --------------------编程问答-------------------- 不能用数据库查询GroupCode所对应的GroupType的话
怎么去判断哪个GroupCode对应哪个GroupType --------------------编程问答-------------------- 你只能去后台通过SeleceChange()事件里用Switch判断,手动添加第二个下拉框的值 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 你使用linq查询 --------------------编程问答-------------------- 把关系早取出来,用的时候去获取不就行了?
定义一个对象,存到里边,然后便利啊 --------------------编程问答--------------------
引用 1 楼 no200830740203 的回复:
不能用数据库查询GroupCode所对应的GroupType的话
怎么去判断哪个GroupCode对应哪个GroupType

根据cboGroupCode下拉框的索引对应cboGroupType的索引,能取出对应于枚举的索引,因为Code所对应的Type是存在同一条数据的 --------------------编程问答--------------------
引用 5 楼 mmqw1122 的回复:
把关系早取出来,用的时候去获取不就行了?
定义一个对象,存到里边,然后便利啊

具体操作,我也想过遍历,不知道怎么实现 --------------------编程问答--------------------
引用 2 楼 u011781558 的回复:
你只能去后台通过SeleceChange()事件里用Switch判断,手动添加第二个下拉框的值

SelectChange里写什么事件? --------------------编程问答-------------------- 这个似乎不需要2个联动吧 --------------------编程问答--------------------
引用 9 楼 happy09li 的回复:
这个似乎不需要2个联动吧

就两个下拉框的1个联动 --------------------编程问答-------------------- 利用combobox绑定实现。combobox控件初始化的时候,从数据库中读取groupCode 和 groupType两个字段,让
combobox的显示元素和值元素分别为groupCode和groupType,即:

DataTable table = new DataTable("GroupTable");
DataColumn column_name = new DataColumn("code");
DataColumn column_value = new DataColumn("type");
combobox.datasource=table;//combobox控件与table关联
combobox.DisplayMember = "code";
combobox.ValueMember = "type"

这样选取combobox中的某一个行的时候,显示的是code,可以取到该行对应的实际的type,再把该type赋值给另一个combobox。是否可行? --------------------编程问答-------------------- DataTable table = new DataTable("GroupTable");
DataColumn column_name = new DataColumn("code");
DataColumn column_value = new DataColumn("type");
table.Columns.Add(column_name);        
table.Columns.Add(column_value);
combobox.datasource=table;//combobox控件与table关联
combobox.DisplayMember = "code";
combobox.ValueMember = "type" --------------------编程问答-------------------- 使用SeleceChange()事件 --------------------编程问答--------------------
引用 9 楼 happy09li 的回复:
这个似乎不需要2个联动吧
说错了,就一个。 --------------------编程问答--------------------
引用 11 楼 tossgoon 的回复:
利用combobox绑定实现。combobox控件初始化的时候,从数据库中读取groupCode 和 groupType两个字段,让
combobox的显示元素和值元素分别为groupCode和groupType,即:

DataTable table = new DataTable("GroupTable");
DataColumn column_name = new DataColumn("code");
DataColumn column_value = new DataColumn("type");
combobox.datasource=table;//combobox控件与table关联
combobox.DisplayMember = "code";
combobox.ValueMember = "type"

这样选取combobox中的某一个行的时候,显示的是code,可以取到该行对应的实际的type,再把该type赋值给另一个combobox。是否可行?

大神你这样只能存进type的值,但是code的值也是要存进去的。。 --------------------编程问答--------------------
引用 13 楼 u011223070 的回复:
使用SeleceChange()事件
具体实现? --------------------编程问答--------------------
引用 8 楼 u012577540 的回复:
Quote: 引用 2 楼 u011781558 的回复:

你只能去后台通过SeleceChange()事件里用Switch判断,手动添加第二个下拉框的值

SelectChange里写什么事件?


用Switch判断,手动添加第二个下拉框的值,比如第一个下拉框显示(text)为"广东",值(value)为0,那么在事件里判断

switch cbo
{
     case 0:
         cbo2.Add(new ListItem("广州", "0"));
         cbo2.Add(new ListItem("深圳", "1"));
         break;
     case 1:
}


比较麻烦,仅供参考,可能有更简单的方法。 --------------------编程问答--------------------
引用 15 楼 u012577540 的回复:
Quote: 引用 11 楼 tossgoon 的回复:

利用combobox绑定实现。combobox控件初始化的时候,从数据库中读取groupCode 和 groupType两个字段,让
combobox的显示元素和值元素分别为groupCode和groupType,即:

DataTable table = new DataTable("GroupTable");
DataColumn column_name = new DataColumn("code");
DataColumn column_value = new DataColumn("type");
combobox.datasource=table;//combobox控件与table关联
combobox.DisplayMember = "code";
combobox.ValueMember = "type"

这样选取combobox中的某一个行的时候,显示的是code,可以取到该行对应的实际的type,再把该type赋值给另一个combobox。是否可行?

大神你这样只能存进type的值,但是code的值也是要存进去的。。

code的值就是显示出来的值啊。 --------------------编程问答--------------------
引用 17 楼 u011781558 的回复:
Quote: 引用 8 楼 u012577540 的回复:

Quote: 引用 2 楼 u011781558 的回复:

你只能去后台通过SeleceChange()事件里用Switch判断,手动添加第二个下拉框的值

SelectChange里写什么事件?


用Switch判断,手动添加第二个下拉框的值,比如第一个下拉框显示(text)为"广东",值(value)为0,那么在事件里判断

switch cbo
{
     case 0:
         cbo2.Add(new ListItem("广州", "0"));
         cbo2.Add(new ListItem("深圳", "1"));
         break;
     case 1:
}


比较麻烦,仅供参考,可能有更简单的方法。

这样存的是枚举显示值,不是存枚举索引。。 --------------------编程问答--------------------
引用 19 楼 u012577540 的回复:
Quote: 引用 17 楼 u011781558 的回复:

Quote: 引用 8 楼 u012577540 的回复:

Quote: 引用 2 楼 u011781558 的回复:

你只能去后台通过SeleceChange()事件里用Switch判断,手动添加第二个下拉框的值

SelectChange里写什么事件?


用Switch判断,手动添加第二个下拉框的值,比如第一个下拉框显示(text)为"广东",值(value)为0,那么在事件里判断

switch cbo
{
     case 0:
         cbo2.Add(new ListItem("广州", "0"));
         cbo2.Add(new ListItem("深圳", "1"));
         break;
     case 1:
}


比较麻烦,仅供参考,可能有更简单的方法。

这样存的是枚举显示值,不是存枚举索引。。



0,  1  不是索引么?
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,