Назад | Перейти на главную страницу

Как ограничить просмотры настраиваемого списка по группе в Sharepoint 2007?

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

Например:

У нового сотрудника может быть

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

Если это не вариант, есть ли способ связать таблицы в разных списках?

Решение без кода asp:

Вам понадобятся две библиотеки javascript:
- JQuery
- SPServices - http://spservices.codeplex.com/

В sharepoint создайте непубличную библиотеку под названием «Библиотеки Jquery» и загрузите в нее свой jquery и SPServices.

В конструкторе sharepoint создайте копию AllItems.aspx.

В конструкторе sharepoint отредактируйте файл AllItems.aspx. Очистите весь код и вставьте этот код javascript.

        <script language="javascript" type="text/javascript" src="PATH-TO-YOUR-JQUERY-FILE"></script>
<script language="javascript" type="text/javascript" src="PATH-TO-YOUR-SPSERVICES-FILE"></script>

<script type="text/javascript">
$(document).ready(function() {
    //Get current username
    userName = $().SPServices.SPGetCurrentUser({
        fieldName: "Name",
        debug: false
    });

    //get user's group
    $().SPServices({
        operation: "GetGroupCollectionFromUser",
        userLoginName: userName,
        async: false,
        completefunc: function(xData, status){

            $(xData.responseXML).find("Group").each(function(){
                if(status == "success"){
                    var nomeGrupo = $(this).attr('Name');
                    //if user is in group 1 redirect to page 1. If user is in group 2 redirect to page 2 etc...
                    if(nomeGrupo=="Grupo sergio"){
                             window.location.replace("PATH-TO-PAGE-1/SomeItems.aspx");
                    }else{
                        window.location.replace("/PATH-TO-PAGE-2/ViewAll.aspx");
                    }

                }else{
                    alert("Falha na comunicação com o Sharepoint");
                }
            });
        }
    });
});
</script>

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

В дизайне sharepoint переименуйте AllItems.aspx в SomeItems.aspx (например).

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

Отредактируйте этот файл и удалите основную веб-часть, расположенную в PlaceHolderMain. (Совет: вы можете щелкнуть и удалить, если вы находитесь в разделенном представлении (код дизайна) в конструкторе sharepoint).

Затем вы можете вставить настраиваемое представление веб-части для своего списка. В этом настраиваемом представлении вы можете фильтровать данные или не отображать некоторые столбцы.

Легко. 1 список. Несколько разных представлений для этого списка на основе метаданных - отдел, здание, что угодно. Вы можете отображать разные столбцы в каждом представлении. Например ... для HR вы должны показать столбец зарплаты, а также столбец имени. Для обычных людей другой вид, в котором НЕ отображается зарплата.

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

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

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

Привет, мне удалось программно скрыть поле, см. Ниже. Поле «Утвердить» теперь скрыто на экране редактирования списка.

SPField Appprove = bdcList.Fields.GetField("Approved");
                        Appprove.ShowInEditForm = false;
                        Appprove.ShowInDisplayForm = true;
                        Appprove.ShowInNewForm = false;
                        Appprove.Update();