【发布时间】:2014-04-29 15:45:48
【问题描述】:
我正在开发一个应用程序,其中使用joins 从四个SQL 表中检索数据,并将检索到的数据填充到Windows 窗体上的datagridview 中。
我有两个 Radio Buttons ALL 和 DrawDate ,默认情况下 ALL 单选按钮被选中,一旦打开应用程序,它会将所有数据填充到 datagridview 上,当我选择 DrawDate Radio Button 时,只有与该抽奖日期相关的数据填充在datagridview 上。在那之前一切看起来都很好,但是在选择 DrawDate Radio Button 之后,如果用户想通过选择 ALL Radio Button 再次获取所有数据,它会再次从数据库服务器加载所有数据,这不是首选。
有没有更好的方法可以缓存应用程序打开后填充的数据,并在用户稍后需要时选择ALL Radio Button 时填充它?
C# 代码
sqlcon = GetConnectionString();
try
{
sqlcon.Open();
//var sw = Stopwatch.StartNew();
for (int i = 0; i < dgvPaymentsReceived_Collections.RowCount; i++)
{
int trademonth = Convert.ToInt32(dgvPaymentsReceived_Collections.Rows[i].HeaderCell.Value);
for (int j = 0; j < dgvPaymentsReceived_Collections.ColumnCount; j++)
{
int paymentmonth = Convert.ToInt32(dgvPaymentsReceived_Collections.Columns[j].HeaderCell.Value);
//var sw = Stopwatch.StartNew();
SqlCommand cmd_PaymentsReceived = new SqlCommand();
cmd_PaymentsReceived.Connection = sqlcon;
cmd_PaymentsReceived.CommandType = CommandType.StoredProcedure;
cmd_PaymentsReceived.CommandText = sp_PaymentsReceved_Collections;
cmd_PaymentsReceived.Parameters.Add(new SqlParameter("@trademonth", trademonth));
cmd_PaymentsReceived.Parameters.Add(new SqlParameter("@paymentmonth", paymentmonth));
SqlDataAdapter da_PaymentsReceived_Collections = new SqlDataAdapter();
DataTable dt_PaymentsReceived_Colletions = new DataTable();
da_PaymentsReceived_Collections.SelectCommand = cmd_PaymentsReceived;
da_PaymentsReceived_Collections.Fill(dt_PaymentsReceived_Colletions);
//sw.Stop();
//MessageBox.Show(sw.ElapsedMilliseconds.ToString());
dgvPaymentsReceived_Collections.Rows[i].Cells[j].Value = dt_PaymentsReceived_Colletions.Rows[0][0].ToString();
}
}
sqlcon.Close();
}
【问题讨论】:
标签: c# sql-server winforms visual-studio-2012 datagridview