Извлечение изображений с именами из базы данных в ListView

#c# #sql-server

#c# #sql-сервер

Вопрос:

Я создаю приложение для настольного чата, в котором пользователь может искать других пользователей по имени или электронной почте. Когда я ищу других пользователей, их изображения не расположены последовательно.

// Это код из домашней формы

     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);
        }
  

введите описание изображения здесь

введите описание изображения здесь

Комментарии:

1. Что вы подразумеваете под «не последовательно»? Если вы хотите, чтобы они были в определенном порядке (по имени или чему-либо еще), вы можете использовать order by предложение в своем запросе.

2. да, это то, что я имею в виду Порядок по «Имени»

3. Вы пытались добавить «Порядок по имени» в запрос выбора?

4. SQL Server не хранит данные в каком-либо определенном порядке и не извлекает данные в каком-либо определенном порядке. База данных является многопоточной, и выполнение одного и того же запроса может каждый раз давать разные результаты. Вы должны использовать Order By в запросе, чтобы убедиться, что результаты каждый раз выдаются в одном и том же порядке.

Ответ №1:

Разве вам не нужно очистить свой imagelist?

Комментарии:

1. Я очищаю список изображений, но изображение одного пользователя все еще отображается в другом пользовательском месте.

2. @MuhammadMansoorIshaq Я предлагаю вам также взглянуть на мой ответ. Добавьте «Порядок по».

Ответ №2:

Попробуйте изменить запрос выбора на (добавить «ПОРЯДОК ПО имени пользователя»):

 dt = DataBaseAccess.Retrive("
    SELECT UID, FullName, DP 
    FROM TKDBUsers 
    WHERE (FullName ' ' UserName ) LIKE '%"   searchkey   "%' 
    AND UID != '"   LogInUser.UID   "' 
    ORDER BY UserName");