Я пытаюсь реализовать функциональность управления пользователями для веб-сайта.
Я использую ASP.NET MVC 3, Entity Framework 4.1, MvcScaffolding.
Давайте рассмотрим сущности:
Пользовательский объект:
public class User
{
public int Id
{
get;
set;
}
public string FirstName
{
get;
set;
}
public string LastName
{
get;
set;
}
public virtual ICollection<UserGroup> Groups
{
get;
set;
}
}
Объект группы пользователей:
public class UserGroup
{
public int Id
{
get;
set;
}
public string Name
{
get;
set;
}
public virtual ICollection<User> Users
{
get;
set;
}
}
Как видите, существует взаимосвязь "многие ко многим" между пользователем и объектами группы пользователей.
Итак, я хотел бы иметь следующий пользовательский интерфейс для редактирования группы пользователей:

Есть две сетки:
1. Сетка пользователей содержит текущее состояние редактируемой группы пользователей.
2. Сетка просмотра пользователей содержит всех пользователей (кроме пользователей, которые уже входят в группу пользователей). При щелчке строки пользователя этой сетки пользователь будет перемещен в сетку пользователей . Кроме того, эта сетка должна поддерживать разбиение по страницам, фильтрацию и сортировку для обеспечения удобного просмотра пользователями.
Итак, пользователь выбирает пользователей для группы пользователей и затем нажимает кнопку «Сохранить». Класс контроллера группы пользователей должен сохранить изменения.
Теперь вопрос: как реализовать эту функциональность? Есть ли хороший пример для такой проблемы взаимоотношений «многие ко многим»?
Если не существует простого решения, какой пользовательский интерфейс для управления группами пользователей вы могли бы посоветовать мне использовать?
P.S. Я довольно новичок в ASP.NET, поэтому я не понимаю, как реализовать такие динамические сетки.
Обновление 1:
Я просмотрел примеры jqGrid. ссылка
См. Advanced -> Multi Select
Возникла проблема, выбор флажков сбрасывается при смене фильтра. Как сохранить все выбранные идентификаторы, несмотря на смену фильтра?