关于SelectedValue的众多解决方案

Combox联动效果

如上图所示窗体

实现点击年级下拉框时,加载对应的科目信息

在此过程中会遇到如下问题

问题一:

步骤一:

Load事件中显示如下代码:

先绑定数据源,后绑定displaymember 和 valueMember属性

就会报错

 private void SelectStudentResult_Load(object sender, EventArgs e)
        {
            //给年级下拉框赋值
            List<Grade> gradeList= gradeBLL.LoadGradeInfoToCobList();
            cobGradeList.DataSource = gradeList;
            cobGradeList.DisplayMember = "GradeName";
            cobGradeList.ValueMember = "GradeId";
        }

步骤二:

在年级下拉框的SelectedIndexChanged事件中加入如下代码

 private void cobGradeList_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                    cobSubjectList.DataSource = subBLL.GetSubjectInfoByGradeID(Convert.ToInt32(cobGradeList.SelectedValue));
                    cobSubjectList.DisplayMember = "subjectName";
                    cobSubjectList.ValueMember = "subjectid";
            }
            catch (SqlException sqlex)
            {

                throw sqlex;
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

错误信息:

下面我们来分析一下出错的原因

原因就出在代码的执行顺序上 我们可以用打断点的方式来查看

当代码执行到红框标识处时,代码块直接跳到SelectedIndexChanged事件中,此时控件的displayMember和valueMember属性还未被附上值

所以当蓝色标识框去拿年级下拉框的隐藏值时就会报错

解决方案:将load事件中的代码改为

coblist.DisplayMember
coblist.ValueMember
coblist.DataSource=list;

解决方案二:

就是用SelectedItem代替SelectedValue

Load事件中的代码不变

更改如下代码

private void cobGradeList_SelectedIndexChanged(object sender, EventArgs e)
        {
            Grade grade = (Grade)cobGradeList.SelectedItem;
            int gradeid = Convert.ToInt32(grade.GradeId);
            cobSubjectList.DataSource = subBLL.GetSubjectInfoByGradeID(gradeid);
            cobSubjectList.DisplayMember = "subjectName";
            cobSubjectList.ValueMember = "subjectid";
        }

此处是泛型集合

如果是DataTable

更改的代码为

DataRowView  dr=(DataRowView)cobListGradeList.SelectedItem;

int gradeid=Convert.ToInt32(dr["gradeid"]);

不知道这些东西会不会给有需要帮助的人带来一点点提示,如有意见欢迎指出

时间: 2024-11-05 20:33:07

关于SelectedValue的众多解决方案的相关文章

实体框架高级应用之动态过滤 EntityFramework DynamicFilters

实体框架高级应用之动态过滤 EntityFramework DynamicFilters 我们开门见山,直奔主题. 一.EntityFramework DynamicFilters 是什么,它能做什么? EntityFramework DynamicFilters是一个开源项目.你可以到这里去下载它的源码.顾名思义,它为我们做的事,就是帮我们动态过滤数据.为了照顾初学者,我们从头道来. 1.何为数据过滤? 数据过滤说简单点,就是去掉我们不想要的数据.SQL语句中的where从句,Linq中的wh

spring调用wcf以及配置过程

原文出自于 http://www.blogjava.net/downmoon/archive/2010/08/24/329786.html 我们看看生成的WSDL 第二步:调用WCF生成的WSDL生成java客户端. 首先,请允许我介绍下axis2,它的官方地址:http://ws.apache.org/axis2/ 这是一个java平台的web service解决方案.我们最常用的是WSDL2Java和Java2WSDL两个功能. 关于Web service的另一个解决方案是xFire,我没试

工业物联网(IIoT)实施的五大关键要素

工业自动化属于一个较宽泛的技术框架范畴,且从工业网络和移动计算机处理技术中受益良多.此类技术的组合将有助于将"互联工厂"."工业4.0"和工业物联网(IIoT) 从概念变为现实,但在逐一实现此类概念的过程中会引起一系列的困惑,让人觉得对相关的实施工作无从下手.本文通过对此类概念介绍,列举了组织在制定某一行之有效的实施战略过程中应考虑的关键因素,并探讨了连接.监测和控制操作带来的运营优势. 过去20年,科学技术日新月异.其中,工业网络和移动计算持续影响着制造业.这些技

mariadb之查询及存储引擎

在关系型数据库中,如果要设计成表机制来存储数据,必须满足基本的范式,至少满足前三个范式. 第一范式(1NF):是指在关系模型中,对域(域代表字段)添加的一个规范要求,所有的域都应该是原子性的(不可分拆),即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项.即实体(每一行)中的某个属性有多个值时,必须拆分为不同的属性.在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分.简而言之,第一范式基本要求就是无重复的域. 第二范式(2NF):是在第一

Java与WCF交互(一):Java客户端调用WCF服务

最近开始了解WCF,写了个最简单的Helloworld,想通过java客户端实现通信.没想到以我的基础,居然花了整整两天(当然是工作以外的时间,呵呵),整个过程大费周折,特写下此文,以供有需要的朋友参考: 第一步:生成WCF服务 新建WCF解决方案,分别添加三个项目,HelloTimeService(类库),HelloTimehost(控制台程序),HelloTimeClient(控制台程序),项目结构如图:各个项目的主要代码:service: Host: Client: 编译通过后,测试Hos

【译文】用Spring Cloud和Docker搭建微服务平台

by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-microservices.html This blog series will introduce you to some of the foundational concepts of building a microservice-based platform using Spring Cloud

【Web探索之旅】第二部分第五课:响应式网站和移动应用

内容简介 1.第二部分第五课:响应式网站和移动应用 2.第三部分第一课预告:服务器 第二部分第五课:响应式网站和移动应用 在我们开始聊响应式网站之前,我们可以聊聊移动App(App是Application的缩写,意为"应用"). 自从触屏式手机和平板电脑开始流行起来后(多亏乔布斯乔老爷子推广了iPhone),传统的网站和软件行业发生了翻天覆地的变化.以前,我们用手机最多是打电话,发短信,玩游戏,很难得会在手机上浏览网页. 可是自从触屏技术开始流行后,大大提高了人们在手机和平板上&quo

SQLSERVER2008新增的审核/审计功能

很多时候我们都需要对数据库或者数据库服务器实例进行审核/审计 例如对失败的登录次数进行审计,某个数据库上的DDL语句进行审计,某个数据库表里面的delete语句进行审计 事实上,我们这些审计的需求基本上都是为了一个目的:防黑客 上面的这些审计需求无非就是看一下有哪些人试图入侵数据库服务器,入侵了之后是否有drop表,是否有delete数据 在SQLSERVER2008及以前版本可以选择的方案有 1.服务器级别DDL触发器和数据库级别的DDL触发器(SQL2005及以上版本) 以及DML触发器 2

Unable to execute dex: Multiple dex files define 解决方法

问题发生概述:       程序编译正常,在用Eclipse调试执行时,报错Unable to execute dex: Multiple dex files define,因为以前也没有遇到这类错误,首先便尝试万能纠错发,如下方法一,也是上网搜索众多解决方案之一,尝试后未果,便按照搜索方案,逐一尝试,都未能解决,最后盯着工程突然发现问题.具体解决方案如下: 方法一:       Eclipse->Project->去掉Build Automatically->Clear ->Bu