ASP.NET中的DropDownList控件出错"DropDownList有一个无效 SelectedValue,因为它不在项目列表中。"
今天在做的人事管理系统中遇到了一个DropDownList报错的问题.而代码是没有错的.baidu上查看后才知道问题所在.
我在Formview的编辑模式下的"学历"字段用了一DropDownList.其中"博士/硕士/本科/专科/高中"五项. 而我在SQL Server2000数据库中该字段的数据类型是"nchar(4)"4个中文字的长度
(------因为NCHAR 类型采用UNICODE 标准字符集(CharacterSet)。 UNICODE 标准规定每个字符占用两个字节的存储空间,所以它比非UNICODE 标准的数据类型多占用一倍的存储空间。使用UNICODE 标准的好处是因其使用两个字节做存储单位,其一个存储单位的容纳量就大大增加了,可以将全世界的语言文字都囊括在内,在一个数据列中就可以同时出现中文、英文、法文、德文等,而不会出现编码冲突。----)
用Formview的添加模式将值写入数据库后,因为只有两个中文字符长度,SQL Server2000自动添加两个空格补足它.如"本科"变为"本科__" 当我用编辑模式时,因列表中没有一项与"本科__"匹配,所以出现==DropDownList1”有一个无效 SelectedValue,因为它不在项目列表中。参数名: value" ==的错误提示.
解决方法是:将数据类型改为"nchar(2)"或"nvarchar(4)"(因nvarchar 不会自动加空格的.);
我在Formview的编辑模式下的"学历"字段用了一DropDownList.其中"博士/硕士/本科/专科/高中"五项. 而我在SQL Server2000数据库中该字段的数据类型是"nchar(4)"4个中文字的长度
(------因为NCHAR 类型采用UNICODE 标准字符集(CharacterSet)。 UNICODE 标准规定每个字符占用两个字节的存储空间,所以它比非UNICODE 标准的数据类型多占用一倍的存储空间。使用UNICODE 标准的好处是因其使用两个字节做存储单位,其一个存储单位的容纳量就大大增加了,可以将全世界的语言文字都囊括在内,在一个数据列中就可以同时出现中文、英文、法文、德文等,而不会出现编码冲突。----)
用Formview的添加模式将值写入数据库后,因为只有两个中文字符长度,SQL Server2000自动添加两个空格补足它.如"本科"变为"本科__" 当我用编辑模式时,因列表中没有一项与"本科__"匹配,所以出现==DropDownList1”有一个无效 SelectedValue,因为它不在项目列表中。参数名: value" ==的错误提示.
解决方法是:将数据类型改为"nchar(2)"或"nvarchar(4)"(因nvarchar 不会自动加空格的.);