Лучший способ разрешить Пользователю определять порядок в таблице?

StackOverflow https://stackoverflow.com/questions/525652

Вопрос

Лучший способ разрешить Пользователю определять порядок в таблице?

Мы используем SQL Server 2005 и элементы управления DevExpress.

У нас есть таблица , которая содержит следующее:

  1. Процесс А
  2. Процесс В
  3. Процесс C
  4. Сообщить о
  5. Отчет В
  6. Отчет C

Мы хотим разрешить пользователю изменять порядок на все, что он захочет.

Вот один из примеров:

  1. Процесс C
  2. Процесс А
  3. Процесс В
  4. Отчет В
  5. Сообщить о
  6. Отчет C

Чтобы учесть это, мы добавили поле DisplayOrder (INT) в таблицу, которая поддерживается нашим приложением.

Является ли использование поля INT лучшим решением для пользовательского порядка?

Существуют ли какие-либо другие методы для достижения этой цели?

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

Если вам интересно, вот как, по моему мнению, наше приложение позволяет редактировать порядок отображения:

  1. Загрузите таблицу в GridView
  2. Выберите строку
  3. Нажатие кнопки Перемещения вниз (есть также кнопка перемещения вверх)
  4. Событие Click поменяет порядок отображения текущей строки местами со строкой под ней.
  5. Изменения, внесенные в обе записи, записываются обратно в базу данных
  6. Это занимает около 1 секунды на клик (т.е.10 щелчков равны 10 секундам)
Это было полезно?

Решение

Может ли это занимать 1 секунду на обмен, потому что вы обновляете базу данных с каждым щелчком мыши?Может быть, даже повторный выбор данных тоже?

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

  1. Когда пользователь, наконец, нажимает Сохранить.
  2. Если какое-либо из значений объекта изменилось.

Другие советы

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

Дополнительные моменты, которые следует учитывать - явный переход к элементам Top и Move to Bottom.

Я реализовал очень успешный пользовательский интерфейс, используя такого рода подход для управляемого пользователем выбора элементов с возможностью поиска и создания отчетов в корпоративной системе.Более подробная информация о пользовательском интерфейсе приведена ниже доступно для вашего ознакомления (будьте добры, помните, что ему около 15 лет - еще в дни flat mono!).Одно из ключевых уточнений, полученных в результате многочисленных пользовательских тестов, - преимущество сохранения этого заказа было не для каждого пользователя или компании, а для каждой группы.Группы представляли собой людей, работающих вместе, у которых была одна и та же начальная страница (по сути, один и тот же корень в многосвязном графе).У нас в организации было около 7 уникальных групп.

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

Если вы говорите о порядке отображения, который пользователь хочет установить и сохранить, это должно быть в отдельной таблице с идентификатором пользователя и идентификаторами записей, которые он или она хочет видеть, и столбцом порядка отображения.Затем запрос, который получает данные на эту страницу, будет использовать соединение с таблицей пользовательских предпочтений.

Если вы хотите просто установить временный порядок на то время, пока пользователь смотрит на экран, сделайте это через пользовательский интерфейс.

Ни в коем случае не переупорядочивайте записи в базовой таблице, это плохой выбор, поскольку вы столкнетесь с условиями гонки, когда пользователь a хочет получить одну настройку, а пользователь b тем временем пытается перейти на другую настройку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top