如何从MSSQL快速检索DataGridView中的数据

时间:2017-04-11 15:10:00

标签: c# sql-server datagridview

我想知道如何从mssql快速检索datagridview中的数据。比如当我运行我的程序时,我的网格开始填充数据并且它很慢,就像我可以看到填充过程它只需要2秒但我希望它在纳秒内快速完成。任何人都让我知道如何做到这一点。顺便说一下,它的桌面应用程序是在C#上开发的,而项目是基于条形码的销售点系统

private void FillGrid()         {

        DataTable xTable = new DataTable();
        new SqlDataAdapter("select * from tblProducts order by BID DESC",xConn).Fill(xTable);
        DGV1.DataSource = xTable;
        DGV1.Columns[0].Width = 50;
        DGV1.Columns[1].Width = 100;
        DGV1.Columns[2].Width = 150;
        DGV1.Columns[3].Width = 50;

        for (int i = 0; i < DGV1.Rows.Count-1; i++)
        {                
            int QTY = Int32.Parse(DGV1.Rows[i].Cells[4].Value.ToString());
            if(QTY >=21 && QTY <= 50)
            { 
                DGV1.Rows[i].Cells[4].Style.BackColor = Color.Yellow;
                DGV1.Rows[i].Cells[4].Style.Font = new Font("Arial", 11, FontStyle.Bold);
            }
            else if (QTY >= 0 && QTY <= 20)
            { DGV1.Rows[i].Cells[4].Style.BackColor = Color.Red;
            DGV1.Rows[i].Cells[4].Style.Font = new Font("Arial", 11, FontStyle.Bold);
            }

            { DGV1.Rows[i].Cells[4].Style.BackColor = Color.Green;
            DGV1.Rows[i].Cells[4].Style.Font = new Font("Arial", 11, FontStyle.Bold);
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

据我所知,存储过程比函数更快,使用它们! 此外,如果您可以共享代码或一些场景细节,那么我可以轻松解决您的问题。

答案 1 :(得分:0)

你可以做几件事

<强>第一 删除填充中的列宽,因为每次填充网格时都不需要设置它,这是不必要的,移动代码设计器或直接在Windows设计中执行

<强>第二 将列格式移动到Datagridview单元格格式,如下所示,您可以避免默认格式化,然后再形成两次

private void DGV1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    int QTY = Int32.Parse(DGV1.Rows[e.RowIndex].Cells[4].Value.ToString());
        if(QTY >=21 && QTY <= 50)
        { 
            DGV1.Rows[e.RowIndex].Cells[4].Style.BackColor = Color.Yellow;
            DGV1.Rows[e.RowIndex].Cells[4].Style.Font = new Font("Arial", 11, FontStyle.Bold);
        }
        else if (QTY >= 0 && QTY <= 20)
        { 
          DGV1.Rows[e.RowIndex].Cells[4].Style.BackColor = Color.Red;
          DGV1.Rows[e.RowIndex].Cells[4].Style.Font = new Font("Arial", 11, FontStyle.Bold);
        }
        else
        { 
          DGV1.Rows[e.RowIndex].Cells[4].Style.BackColor = Color.Green;
          DGV1.Rows[e.RowIndex].Cells[4].Style.Font = new Font("Arial", 11, FontStyle.Bold);
        }
}