Лучший способ разрешить Пользователю определять порядок в таблице?
-
22-08-2019 - |
Вопрос
Лучший способ разрешить Пользователю определять порядок в таблице?
Мы используем SQL Server 2005 и элементы управления DevExpress.
У нас есть таблица , которая содержит следующее:
- Процесс А
- Процесс В
- Процесс C
- Сообщить о
- Отчет В
- Отчет C
Мы хотим разрешить пользователю изменять порядок на все, что он захочет.
Вот один из примеров:
- Процесс C
- Процесс А
- Процесс В
- Отчет В
- Сообщить о
- Отчет C
Чтобы учесть это, мы добавили поле DisplayOrder (INT) в таблицу, которая поддерживается нашим приложением.
Является ли использование поля INT лучшим решением для пользовательского порядка?
Существуют ли какие-либо другие методы для достижения этой цели?
Причина, о которой я спрашиваю, в том, что в нашем текущем приложении перемещение строки вниз (или вверх) занимает около 1 секунды.Я собираюсь взломать код, чтобы понять, почему это занимает так много времени, и если у вас, гуру переполнения стека, есть какие-нибудь хорошие идеи, я мог бы реализовать их в то же время.
Если вам интересно, вот как, по моему мнению, наше приложение позволяет редактировать порядок отображения:
- Загрузите таблицу в GridView
- Выберите строку
- Нажатие кнопки Перемещения вниз (есть также кнопка перемещения вверх)
- Событие Click поменяет порядок отображения текущей строки местами со строкой под ней.
- Изменения, внесенные в обе записи, записываются обратно в базу данных
- Это занимает около 1 секунды на клик (т.е.10 щелчков равны 10 секундам)
Решение
Может ли это занимать 1 секунду на обмен, потому что вы обновляете базу данных с каждым щелчком мыши?Может быть, даже повторный выбор данных тоже?
Почему бы не выделить данные в локальные объекты.Привязка к этим объектам в сетке.Когда вы перемещаете объекты вверх и вниз, измените их свойство порядка отображения.Затем только выполните обновление базы данных
- Когда пользователь, наконец, нажимает Сохранить.
- Если какое-либо из значений объекта изменилось.
Другие советы
Я бы перенес решение о сохранении в явную кнопку Сохранения для изменения порядка, потому что пользователь может передумать, и, как предполагает Питер Моррис, это устранит вашу проблему с производительностью.
Дополнительные моменты, которые следует учитывать - явный переход к элементам Top и Move to Bottom.
Я реализовал очень успешный пользовательский интерфейс, используя такого рода подход для управляемого пользователем выбора элементов с возможностью поиска и создания отчетов в корпоративной системе.Более подробная информация о пользовательском интерфейсе приведена ниже доступно для вашего ознакомления (будьте добры, помните, что ему около 15 лет - еще в дни flat mono!).Одно из ключевых уточнений, полученных в результате многочисленных пользовательских тестов, - преимущество сохранения этого заказа было не для каждого пользователя или компании, а для каждой группы.Группы представляли собой людей, работающих вместе, у которых была одна и та же начальная страница (по сути, один и тот же корень в многосвязном графе).У нас в организации было около 7 уникальных групп.
Итак, если вы предпочитаете подход для каждого пользователя или для каждой группы, вам нужно перенести данные сортировки в отдельную таблицу, которая сопоставляет ключи данных с порядковыми числами.
Если вы говорите о порядке отображения, который пользователь хочет установить и сохранить, это должно быть в отдельной таблице с идентификатором пользователя и идентификаторами записей, которые он или она хочет видеть, и столбцом порядка отображения.Затем запрос, который получает данные на эту страницу, будет использовать соединение с таблицей пользовательских предпочтений.
Если вы хотите просто установить временный порядок на то время, пока пользователь смотрит на экран, сделайте это через пользовательский интерфейс.
Ни в коем случае не переупорядочивайте записи в базовой таблице, это плохой выбор, поскольку вы столкнетесь с условиями гонки, когда пользователь a хочет получить одну настройку, а пользователь b тем временем пытается перейти на другую настройку.