我想知道如何从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);
}
}
}
答案 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);
}
}