Загрузка отсутствующих записей поиска в раскрывающемся списке

У меня есть приложение для сбора данных о сотрудниках. .net и т-sql.

Он имеет несколько таблиц поиска (метаданных), которые используются для заполнения раскрывающихся списков в пользовательском интерфейсе. пример: "Отделы". Каждая таблица поиска имеет активный флаг. Иногда этот флаг устанавливается в false. Это означает, что я не должен загружать эти неактивные «Отделы» в раскрывающемся списке. Это отлично работает для сценария ДОБАВИТЬ НОВОГО СОТРУДНИКА. Но в сценарии EDIT EMPLOYEE, если одна запись поиска (Department-HR) оказывается неактивной, но по какой-то причине связана с EMPLOYEE, у меня возникает проблема, связанная с тем, что в раскрывающемся списке для выбора отсутствует Department-HR.

Я знаю, вопрос выглядит глупо. Я могу передать EmployeeId и загрузить Active + все связанные отделы в EmployeeId, но я хочу знать более разумный и чистый способ справиться с ситуацией.


person m00sila    schedule 06.09.2012    source источник


Ответы (1)


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

Если бы в вашей базе данных были таблицы Employees и Departments (с отношением "один ко многим" или "многие ко многим"), то у вас были бы настроены соответствующие внешние ключи. Если бы вы на самом деле удаляли строки отдела из таблицы Departments (а не помечали их как неактивные), то, очевидно, вы бы получили нарушение внешнего ключа, если бы были какие-либо записи сотрудников, ссылающиеся на удаляемый отдел.

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

В любом случае, я не уверен, почему у вас есть таблицы специально для заполнения раскрывающегося списка отделов? Почему это не заполняется напрямую из таблицы Departments? Экран добавления нового сотрудника и экран редактирования сотрудника могут запрашивать список всех активных отделов, а экран редактирования также может проверять активное состояние текущего отдела для сотрудника, а затем предлагать пользователю переназначить сотрудника при входе экран редактирования.

person devdigital    schedule 06.09.2012
comment
Раскрывающийся список отделов заполняется непосредственно из таблицы отделов. Экран добавления нового сотрудника и экран редактирования сотрудника могут запрашивать список всех активных отделов, а экран редактирования также может проверять активное состояние текущего отдела для сотрудника, а затем предлагать пользователю переназначить сотрудника при входе экран редактирования. это решение, я думаю. Спасибо за быстрый ответ! - person m00sila; 07.09.2012
comment
Хорошо, это были «таблицы поиска метаданных», о которых вы упомянули, которые предполагали, что вы не запрашивали исходные таблицы напрямую. - person devdigital; 07.09.2012