后边给集合添加元素以后,ComboBox界面没有更新而已;

解决方案 »

  1.   


                List<Grade> gradelist= gradeService.getAllGrades();
                
                this.cbxGrade.DataSource = gradelist; //指定数据源,进行第1次绑定,默认DisplayMember和ValueMember 为空。
    //            gradelist.Add(new Grade() { GradeId = -1, GradeName = "全部" });//此句放在此处可以在cbx中显示
                this.cbxGrade.DisplayMember = "GradeName";   //修改DisplayMember 为"GradeName",进行第2次绑定
                this.cbxGrade.ValueMember = "GradeId"; //修改ValueMember 为"GradeId",进行第3次绑定
               gradelist.Add(new Grade() { GradeId = -1, GradeName = "全部" });//放在此处就不能显示出 "全部"
    看看我加的注释,你就知道了,你这个代码,导致程序计算了3次绑定!!可见是多么的浪费,同时,如果对数据源有修改,在最后一次绑定之前,那么都可以看到效果,而你放在最后在修改数据源,自然就看不到效果了,因为后面已经没有会导致重新计算绑定的代码了。建议修改下顺序,先指定DisplayMember 和ValueMember ,再指定数据源,这样可避免多次对非空数据源进行绑定运算。修改后代码:
    List<Grade> gradelist= gradeService.getAllGrades();
               gradelist.Add(new Grade() { GradeId = -1, GradeName = "全部" });
                this.cbxGrade.DisplayMember = "GradeName";
                this.cbxGrade.ValueMember = "GradeId";
                this.cbxGrade.DataSource = gradelist;
      

  2.   


    List<Grade> gradelist= gradeService.getAllGrades();
               gradelist.Add(new Grade() { GradeId = -1, GradeName = "全部" });
                this.cbxGrade.DisplayMember = "GradeName";
                this.cbxGrade.ValueMember = "GradeId";
                this.cbxGrade.DataSource = gradelist;

    灰常感谢!