Listview花费太长时间来更新C#

罗素

我有一个问题,我已经坚持了很长时间,希望您能全力以赴。

我有一个列表视图,该列表视图在程序首次加载时就用数据库中的数据填充。

在我的程序中,我有一个按钮,通过从列表视图中清除所有数据并运行在程序加载时填充列表视图的相同方法来“刷新”此列表视图。但是,此刷新按钮花费的时间太长(约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.
}
你好123

我认为这可能会运行得更快...

    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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Listview花费太长时间来更新C#

来自分类Dev

LINQ DBcontext花费太长时间来加载数据

来自分类Dev

LINQ DBcontext花费太长时间来加载数据

来自分类Dev

NSURLConnection花费太长时间

来自分类Dev

getFrameBufferPixels在libgdx中花费太长时间

来自分类Dev

MySQL jdbc连接花费太长时间

来自分类Dev

iOS UIWebView loadRequest花费太长时间

来自分类Dev

phpexcel脚本花费太长时间

来自分类Dev

iOS UIWebView loadRequest花费太长时间

来自分类Dev

超时功能,如果花费太长时间

来自分类Dev

Ubuntu 12.04.3花费太长时间来挂载USB 3.0 NTFS硬盘驱动器

来自分类Dev

C#应用程序的SQlite部分花费的时间太长

来自分类Dev

在 C# 中,如何将进程的输出作为字符串获取,同时如果花费太长时间也终止进程?

来自分类Dev

Titan索引更新花费的时间太长

来自分类Dev

如果花费太长时间取消解析请求

来自分类Dev

为什么套接字BeginSend将花费太长时间

来自分类Dev

如果方法花费太长时间完成,则超时

来自分类Dev

如何中断花费太长时间的PHP函数?

来自分类Dev

使用子查询花费太长时间的sort_by

来自分类Dev

万一花费太长时间,如何取消OdbcConnection.Open()?

来自分类Dev

sql最后记录的行花费太长时间查询

来自分类Dev

数独在序言上花费太长时间解决

来自分类Dev

如果花费太长时间,则监视进程并回显

来自分类Dev

为什么Android Studio构建过程花费太长时间

来自分类Dev

识别网站是否花费太长时间进行响应

来自分类Dev

for循环花费的时间太长

来自分类Dev

prop()花费的时间太长

来自分类Dev

mkfs花费的时间太长

来自分类Dev

removeFromSuperview()花费的时间太长

Related 相关文章

热门标签

归档