SqlExits SE = new SqlExits();//数据库操作类        private void Form1_Load(object sender, EventArgs e)
        {
            this.Text = "逾期品預警系統" + DateTime.Now.ToLongDateString();
            timer1.Enabled = true;
            timer1.Start();
            timer1.Interval = 1000;
            dataGridView1.Columns[0].Frozen = true;
            dataGridView1.Columns[1].Frozen = true;
            datagridview(DateTime.Now.ToLongDateString(), DateTime.Now.ToLongDateString());        }
        int run = 0;
        private void button1_Click(object sender, EventArgs e)
        {
            run = 1;
            if (double.Parse(dateTimePicker1.Value.ToString("yyyyMMdd"))> double.Parse(dateTimePicker2.Value.ToString("yyyyMMdd")))
            {
                MessageBox.Show("您选择的日期范围有误!");            }
            else 
            {
                //执行sql
                string dtp1 = dateTimePicker1.Value.ToString("yyyyMMdd");
                string dtp2 = dateTimePicker2.Value.ToString("yyyyMMdd");
                if (Convert.ToInt32(dtp2) < Convert.ToInt32(dtp1))
                {
                    MessageBox.Show("您选择的时间范围有误!");
                }
                else
                {
                    datagridview(dtp1, dtp2);
                }            }        }
        DataTable dt;
        string par;
        string par1;
        string par2;
        string par3;
        string realtime;
        private void datagridview(string dtp1, string dtp2)
        {
           
            dt = SE.Sum(sql语句);
            if (run == 1)
            {
                if (dt.Rows.Count == 0)
                {
                    MessageBox.Show("没有可显示数据!");
                }
            }
            dt.Columns.Add("LENGTH");
            dt.Columns.Add("UDF561", typeof(string));
            dt.Columns.Add("UDF571", typeof(string));
            dt.Columns.Add("UDF581", typeof(string));
            dt.Columns.Add("UDF591", typeof(string));
            
                for (int dr = 0; dr < dt.Rows.Count; dr++)
                {
                    par = (dt.Rows[dr]["UDF56"].ToString() == ""||dt.Rows[dr]["UDF56"]==null ) ? "0" : dt.Rows[dr]["UDF56"].ToString();
                    par1 = (dt.Rows[dr]["UDF57"].ToString() == ""||dt.Rows[dr]["UDF57"]==null) ? "0" : dt.Rows[dr]["UDF57"].ToString();
                    par2 = (dt.Rows[dr]["UDF58"].ToString() == ""||dt.Rows[dr]["UDF58"]==null) ? "0" : dt.Rows[dr]["UDF58"].ToString();
                    par3 = (dt.Rows[dr]["UDF59"].ToString() == ""||dt.Rows[dr]["UDF59"]==null) ? "0" : dt.Rows[dr]["UDF59"].ToString();
                    DataRow dr1 = dt.Rows[dr];
                    dr1.BeginEdit();
                    dr1["LENGTH"] = (SE.Result ("sql语句");
                    dr1.EndEdit();
                   
                }
                dataGridView1.DataSource = dt;
                dt.Dispose();
                   }        private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            dataGridView1.Columns["UDF56"].Visible = false;
            dataGridView1.Columns["UDF57"].Visible = false;
            dataGridView1.Columns["UDF58"].Visible = false;
            dataGridView1.Columns["UDF59"].Visible = false;
            if (dt.Rows.Count == 0)
            {
                return;
            }
            else
            {
                for (int rowcount = 0; rowcount < dt.Rows.Count; rowcount++)
                {
                    DataRow frow = dt.Rows[rowcount];
                    frow.BeginEdit();
                    if (frow["MJ032"] != null && frow["MJ032"].ToString() != "")
                    {
                        realtime = frow["MJ032"].ToString();
                        realtime = realtime.Insert(4, "年");
                        realtime = realtime.Insert(7, "月");
                        realtime = realtime.Insert(10, "日");
                        realtime = realtime.Insert(11, " ");
                        realtime = realtime.Insert(14, ":");
                        try
                        {
                            string addtime = ((Convert.ToDateTime(realtime)).AddHours(double.Parse(par))).ToString();
                            string addtime1 = ((Convert.ToDateTime(realtime)).AddHours(double.Parse(par1))).ToString();
                            string addtime2 = ((Convert.ToDateTime(realtime)).AddHours(double.Parse(par2))).ToString();
                            string addtime3 = ((Convert.ToDateTime(realtime)).AddHours(double.Parse(par3))).ToString();
                            frow["UDF561"] = addtime;
                            frow["UDF571"] = addtime1;
                            frow["UDF581"] = addtime2;
                            frow["UDF591"] = addtime3;
                            frow.EndEdit();//结束编辑
                        }
                        catch(Exception  ex)
                        {
                            MessageBox.Show(ex.ToString ());
                        
                        }
                        
                    
                       
                        
                        DateTime dtnow = Convert.ToDateTime(frow["UDF561"]);
                        int fm = dtnow.Subtract(DateTime.Now).Minutes;//获取时间
                        if (fm > 0)//制四管控时间大于当前时间
                        {
                            if (rowcount < dataGridView1.Rows.Count)
                            {
                                dataGridView1.Rows[rowcount].Cells["UDF561"].Style.ForeColor = Color.Red;
                            }                        }
                       
                        DateTime dtnow1 = Convert.ToDateTime(frow ["UDF571"]);
                        int fm1 = dtnow1.Subtract(DateTime.Now).Minutes;//获取时间                        if (fm1 > 0)
                        {
                            if (rowcount < dataGridView1.Rows.Count)
                            {
                                dataGridView1.Rows[rowcount].Cells["UDF571"].Style.ForeColor = Color.Blue;                            }
                        }
                        
                        DateTime dtnow2 = Convert.ToDateTime(frow ["UDF581"]);                        int fm2 = dtnow2.Subtract(DateTime.Now).Minutes;
                        if (fm2 > 0)
                        {
                            if (rowcount < dataGridView1.Rows.Count)
                            {
                                dataGridView1.Rows[rowcount].Cells["UDF581"].Style.ForeColor = Color.Maroon;
                            }
                        }
                       
                        DateTime dtnow3 = Convert.ToDateTime(frow ["UDF591"]);
                        int fm3 = dtnow3.Subtract(DateTime.Now).Minutes;
                        if (fm3 > 0)
                        {
                            if (rowcount < dataGridView1.Rows.Count)
                            {
                                dataGridView1.Rows[rowcount].Cells["UDF591"].Style.ForeColor = Color.Green;
                            }  
                        }
                    }
                    else
                    {
                        frow["UDF561"] = "";
                        frow["UDF571"] = "";
                        frow["UDF581"] = "";
                        frow["UDF591"] = "";
                    }                }            }

解决方案 »

  1.   

    你自己都说了,每个cell都在判断时访问数据库导致速度慢,那就避免这种情况呗!不好意思,你贴的代码太多,没有认真看。不知道是否可以优化代码逻辑。就算不能优化,那么就在gridview绑定之前,把所有判断中需要的数据都加载到内存中。通过内存数据比较,速度也会快很多的。
      

  2.   

    顶7楼 用dataset把数据都取出来不要一张表一张表的取