예제 #1
0
        public static List <SPPrincipal> GetRelatedItemUsers(this SPListItem item)
        {
            List <SPPrincipal> arrRealtedItemUsers = new List <SPPrincipal>();
            dynamic            relatedItems;

            try
            {
                relatedItems = item[SPBuiltInFieldId.RelatedItems];
                if (relatedItems == null)
                {
                    relatedItems = item[SPBuiltInFieldId.RelatedItems];
                }
            }
            catch
            {
                relatedItems = null;
            }

            if (relatedItems == null)
            {
                return(arrRealtedItemUsers);
            }
            String relatedItemsString = relatedItems.ToString();

            dynamic jsonRelatedItems = JsonConvert.DeserializeObject(relatedItemsString);

            foreach (dynamic relItem in jsonRelatedItems)
            {
                int    relatedItemId       = (int)relItem["ItemId"];
                string relatedlistIdString = relItem["ListId"];
                Guid   relatedlistId       = new Guid(relatedlistIdString);

                SPList     relatedList = item.Web.Lists[relatedlistId];
                SPListItem relatedItem;
                try
                {
                    relatedItem = relatedList.GetItemById(relatedItemId);
                }
                catch (Exception)
                {
                    continue;
                }

                List <string> arrRelatedListUserFields = relatedList.GetListUserFields();

                arrRealtedItemUsers.AddRange(relatedItem.GetUsersFromUsersFields(arrRelatedListUserFields));
            }

            return(arrRealtedItemUsers);
        }