从数据库中检索具有名称的图像到 ListView

我正在创建一个桌面聊天应用程序,用户可以在其中按姓名或电子邮件搜索其他用户。当我搜索其他用户时,他们的图像不是按顺序排列的。


// 这是来自 Home Form 的代码


    private void BtnSearch_Click(object sender, EventArgs e)

    {

        if (Friends.SelectedIndex == 0)

        {

            UsersClass.SearchContacts(listAllContacts, ImgListAllContacts, TxtSearch.Text.Trim());

        }

    }

// 这是来自 UserClass 的代码


    public static void SearchContacts(ListView listview, ImageList imagelist, string searchkey)

    {

        DataTable dt = new DataTable();

        listview.Items.Clear();

        ListViewItem[] listviewitem = null;

        dt = DataBaseAccess.Retrive("select UID,FullName,DP from TKDBUsers WHERE ( FullName+' '+UserName ) Like '%" + searchkey + "%' AND UID != '" + LogInUser.UID + "'");

        if (dt != null)

        {

            if (dt.Rows.Count > 0)

            {

                listviewitem = new ListViewItem[(dt.Rows.Count)];

                int LC = 0;        //List contacts

                foreach (DataRow item in dt.Rows)

                {

                    Image img = DataBaseAccess.Base64ToImage(Convert.ToString(item["DP"]));

                    imagelist.Images.Add(img);

                    listviewitem[LC] = new ListViewItem(new string[] { Convert.ToString(item["UID"]) + " - " + Convert.ToString(item["FullName"]) }, LC);

                    LC++;

                }

            }

        }

        if (listviewitem != null)

        {

            listview.Items.AddRange(listviewitem);

        }

在此处输入图像描述

在此处输入图像描述


烙印99
浏览 111回答 2
2回答

幕布斯6054654

尝试将选择查询更改为(添加“ORDER BY UserName”):dt = DataBaseAccess.Retrive("    SELECT UID, FullName, DP     FROM TKDBUsers     WHERE (FullName+' '+UserName ) LIKE '%" + searchkey + "%'     AND UID != '" + LogInUser.UID + "'     ORDER BY UserName");

小唯快跑啊

你不需要清除你的图像列表吗?
打开App,查看更多内容
随时随地看视频慕课网APP