自己遇到的问题,解决了,记录下,方便以后查找。
基本情况:前一段做一个Winform的项目,是用来验货的,多条产品数据,有一个应扫数量,和一个实扫数量,扫描到哪个商品就把列表中对应商品的数量加数量,如果商品实扫数量达到应扫数量,就移动到已扫完成列表。商品验货数量变化后,列表要精细排序,列表行的背景色要区分已验货的和未验货的。
如下图:
遇到问题:最开始用的List<>作为DataGridView的数据源,改变数量直接改List中的实体数据,刷新不了界面的数量。
后来改为DataTabel作为数据源,修改DataTabel中对应行列的值,数据自动刷新了,但后面改变排序,并设置背景色后,背景色和对应的数量对不上。并且每次扫描对应产品还要选中对应的行。细节上还是有些复杂的。
最后观察了下DataGridView的事件,发现数据源改变后,会触发DataBindingCompleted这个事件,并不需要调用刷新方法。且在DataBindingCompleted事件中,进行排序、选中首行和背景色的设置,背景色会乱。