我有一个问题,我已经坚持了很长时间,希望您能全力以赴。
我有一个列表视图,该列表视图在程序首次加载时就用数据库中的数据填充。
在我的程序中,我有一个按钮,通过从列表视图中清除所有数据并运行在程序加载时填充列表视图的相同方法来“刷新”此列表视图。但是,此刷新按钮花费的时间太长(约10秒)才能刷新。
填充列表视图后,程序如何在2秒钟内加载,但是再次运行该方法时,花费的时间要长得多。
请查看我随附的代码,并提出任何更改建议,深表歉意。谢谢你。
public void AllHomeworkers()
{
//This updates the homeworkers listview to contain all the records from the homeworkers table.
listHomeworkersAll.BeginUpdate(); //This uses the begin update process on the listview, this is used to stop flickering
listHomeworkersAll.Items.Clear(); //Clears all the items from the listview
// this takes the datatable returned from AllHomeworkers stored procedure.
// It then loops through the datatable adding every row to the list view.
DataTable dtHomeworkers = _businessLayer.AllHomeworkers();
for (int i = 0; i < dtHomeworkers.Rows.Count; i++)
{
DataRow drowHomeworkers = dtHomeworkers.Rows[i];
if (drowHomeworkers.RowState != DataRowState.Deleted)
{
ListViewItem lvi = new ListViewItem(drowHomeworkers["StaffID"].ToString());
lvi.SubItems.Add(drowHomeworkers["Title"].ToString());
lvi.SubItems.Add(drowHomeworkers["Initials"].ToString());
lvi.SubItems.Add(drowHomeworkers["Forename"].ToString());
lvi.SubItems.Add(drowHomeworkers["Surname"].ToString());
lvi.SubItems.Add(drowHomeworkers["Address"].ToString());
lvi.SubItems.Add(drowHomeworkers["Address2"].ToString());
lvi.SubItems.Add(drowHomeworkers["City"].ToString());
lvi.SubItems.Add(drowHomeworkers["Postcode"].ToString());
lvi.SubItems.Add(drowHomeworkers["CostCentre"].ToString());
lvi.SubItems.Add(drowHomeworkers["Email"].ToString());
lvi.SubItems.Add(drowHomeworkers["Telephone"].ToString());
lvi.SubItems.Add(drowHomeworkers["Mobile"].ToString());
lvi.SubItems.Add(drowHomeworkers["FMID"].ToString());
lvi.SubItems.Add(drowHomeworkers["Comments"].ToString());
lvi.SubItems.Add(drowHomeworkers["Leaver"].ToString());
lvi.SubItems.Add(drowHomeworkers["LeavingDate"].ToString());
lvi.SubItems.Add(drowHomeworkers["Base"].ToString());
lvi.SubItems.Add(drowHomeworkers["NextVisit"].ToString());
var deleted = drowHomeworkers["Deleted"].ToString();
if (deleted != "")
{
lvi.ForeColor = Color.Red;
}
listHomeworkersAll.Items.Add(lvi);
}
}
listHomeworkersAll.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
// this sorts the columns to the size of the largest object stored inside them.
listHomeworkersAll.EndUpdate();
// this ends the listview update process.
}
我认为这可能会运行得更快...
public void AllHomeworkers()
{
//This updates the homeworkers listview to contain all the records from the homeworkers table.
listHomeworkersAll.BeginUpdate(); //This uses the begin update process on the listview, this is used to stop flickering
listHomeworkersAll.Items.Clear(); //Clears all the items from the listview
// this takes the datatable returned from AllHomeworkers stored procedure.
// It then loops through the datatable adding every row to the list view.
DataTable dtHomeworkers = _businessLayer.AllHomeworkers();
List<ListViewItem> listHomeworkers = new List<ListViewItem>();
for (int i = 0; i < dtHomeworkers.Rows.Count; i++)
{
DataRow drowHomeworkers = dtHomeworkers.Rows[i];
if (drowHomeworkers.RowState != DataRowState.Deleted)
{
ListViewItem lvi = new ListViewItem(drowHomeworkers["StaffID"].ToString());
lvi.SubItems.Add(drowHomeworkers["Title"].ToString());
lvi.SubItems.Add(drowHomeworkers["Initials"].ToString());
lvi.SubItems.Add(drowHomeworkers["Forename"].ToString());
lvi.SubItems.Add(drowHomeworkers["Surname"].ToString());
lvi.SubItems.Add(drowHomeworkers["Address"].ToString());
lvi.SubItems.Add(drowHomeworkers["Address2"].ToString());
lvi.SubItems.Add(drowHomeworkers["City"].ToString());
lvi.SubItems.Add(drowHomeworkers["Postcode"].ToString());
lvi.SubItems.Add(drowHomeworkers["CostCentre"].ToString());
lvi.SubItems.Add(drowHomeworkers["Email"].ToString());
lvi.SubItems.Add(drowHomeworkers["Telephone"].ToString());
lvi.SubItems.Add(drowHomeworkers["Mobile"].ToString());
lvi.SubItems.Add(drowHomeworkers["FMID"].ToString());
lvi.SubItems.Add(drowHomeworkers["Comments"].ToString());
lvi.SubItems.Add(drowHomeworkers["Leaver"].ToString());
lvi.SubItems.Add(drowHomeworkers["LeavingDate"].ToString());
lvi.SubItems.Add(drowHomeworkers["Base"].ToString());
lvi.SubItems.Add(drowHomeworkers["NextVisit"].ToString());
var deleted = drowHomeworkers["Deleted"].ToString();
if (deleted != "")
{
lvi.ForeColor = Color.Red;
}
listHomeworkers.Add((ListViewItem)lvi);
}
}
ListViewItem[] arr = listHomeworkers.ToArray();
listHomeworkersAll.Items.AddRange(arr);
listHomeworkersAll.EndUpdate();
// this ends the listview update process.
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句