问题描述
问题1:我在对"是否加急"进行判断的时候,条件直接跳到for外面了,i++都不执行,也没有产生异常.我把"是否加急"的这个判断注释掉之后,可以进入到循环体.并执行i++....单步跟踪的时候,我在监视窗口可以输入:(bool)this.订单生产进度表DataGridView.SelectedRows[0].Cells["是否加急"].Value
可以看到值为falsetry{this.订单生产进度表DataGridView.SelectAll();for(inti=0;i<this.订单生产进度表DataGridView.Rows.Count&&(bool)this.订单生产进度表DataGridView.SelectedRows[i].Cells["是否完工"].Value==false&&(bool)this.订单生产进度表DataGridView.SelectedRows[i].Cells["是否加急"].Value==true;i++){//MessageBox.Show(System.DateTime.Now.ToLongTimeString());this.订单生产进度表DataGridView.Rows[i].DefaultCellStyle.BackColor=System.Drawing.Color.Yellow;}}catch{MessageBox.Show("行:232");}
请问有什么原因可能造成这种问题?问题2:我是通过VS2010的数据源进行的数据配制,datagridview也是直接从数据源到拖到控件的。现在发现一个性能问题,一张750行68列的表。系统的Fill时间需要近60秒.如果数据达到10000行,不管是更新还是排序都成了一个大问题。有什么在现有基础上的解决方法?this.订单生产进度表TableAdapter.Fill(this.patersonDataSet.订单生产进度表);
解决方案
解决方案二:
不进入,问题肯定出在那3个条件,for处断点,看看此时的3个条件,另外你为什么用SelectedRows呢,既然都全选了,就用Rows遍历看看第二个问题,取决于你的网络状况,数据库设计,数据量等,你要做的就是取优化这些问题,比如查询加索引,是否用分页技术,是否需要select*等
解决方案三:
68列难道都要显示?光光那个滚动条就要拖死人的。你就显示需要的十几个列的话,几百行数据不可能慢的。
解决方案四:
for(inti=0;i<this.订单生产进度表DataGridView.Rows.Count;i++){if((bool)this.订单生产进度表DataGridView.Rows[i].Cells["是否完工"].Value==false&&&&(bool)this.订单生产进度表DataGridView.Rows[i].Cells["是否加急"].Value==True){//MessageBox.Show(System.DateTime.Now.ToLongTimeString());this.订单生产进度表DataGridView.Rows[i].DefaultCellStyle.BackColor=System.Drawing.Color.Yellow;}}分页解决
解决方案五:
没异常抛出,监视窗口有值显示.但却直接跳到了for外面,太郁闷了!
解决方案六:
(bool)this.订单生产进度表DataGridView.SelectedRows[i].Cells["是否加急"].Value==true难道这个Value是false?
解决方案七:
解决了try{//this.订单生产进度表DataGridView.SelectAll();for(inti=1;i<this.订单生产进度表DataGridView.Rows.Count;i++){if((bool)(this.订单生产进度表DataGridView["是否完工",i].Value)==false&&(bool)this.订单生产进度表DataGridView["是否加急",i].Value==true){this.订单生产进度表DataGridView.Rows[i].DefaultCellStyle.BackColor=System.Drawing.Color.Yellow;}}}catch{MessageBox.Show("行:232");}
不知道为什么把if的条件加到for里面之后总是不能正确的执行。