一个错误开启了新的视角。
错误描述:
不能在DropDownList中选择多个项。
错误原因:
我在一个页面加载中想实现,如果此页面要执行添加功能,就把dropdownlist绑定的数据中添加一项“请选择”,并设为默认项。如果此页面要执行修改功能,就把相应查出来的字段值设为默认项。
我的错误思路是:加载的时候设一个默认值,如下:
1. this.ddlWorkStype.Items.Insert(0, new ListItem("请选择", "0")); 2. this.ddlWorkStype.SelectedIndex = 0;
查出来数据,再重新设一下默认值:
this.ddlWorkStype.Items.FindByText(worksList[0].workstype).Selected = true; //设置默认类别
从逻辑上来看,这个是没问题的。But,报开头的错误,我以为数据出问题了,有重复的数据,因此把数据库中的重复数据都进行了修改,依旧报错。百思不得其解。请来亮亮调错。才知道原因所在。
因为我设了两次默认值,而ddl控件的机制是,它不会自动取消上一个设置的默认值,但是它又不允许出现两个默认值,于是就报错了。
两种方法解决问题:
1、只设置一次默认值,规避错误,不要去触碰这个机制。
2、想多次设置默认值,又不想它报错,既然不能自动取消,那就手动取消好了。
this.ddlWorkStype.Items[0].Selected = false;
总结:
完事儿又试了一下我当初的想法,数据原因,把数据库中整出重复数据,发现——它是不会报错的,默认把第一次出现的数据设为了默认值。想法对不对,试过才知道。
一次错误,开启了一个新的视角。要了解一下控件的运行机制。asp.net控件也是封装好的,用代码写出来的,它提供什么样的服务,细节还是得考虑一下的,这个需要慢慢积累,大家有没有相关资料什么的分享呢。