#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");