# برنامه نویسی با محصولات مایکروسافت > Sharepoint > برنامه نویسی شیرپوینت (Sharepoint Development) >  کدهای دم دستی و کار راه انداز برای برنامه نویسان شیرپوینت

## حسین نیک پور

با سلام 
در این پست من قصد دارم تا کد هایی ساده و کم حجمی رو معرفی کنم که برنامه نویس های شیر پوینت بتونن از این کد ها در پروژه ها شون استفاده کنن

----------


## حسین نیک پور

معمولا بیشترین چیزی که برنامه نویس شیرپوینت با هاش موجه میشه ست کردن پرمیشن ها در سطح آیتم هست برای این منظور از یک متد مانند مثال زیر استفاده می کنیم


   public static void SetListItemPermission(SPListItem ListItem, String UserName, String Permission, bool ClearPreviousPermissions)
        {
            SPWeb Web = ListItem.Web;
            Web.AllowUnsafeUpdates = true;

            if (!ListItem.HasUniqueRoleAssignments)
                ListItem.BreakRoleInheritance(true);
            SPPrincipal UserOrGroup = Web.AllUsers[UserName];
           

            SPRoleAssignment roleAssignment = new SPRoleAssignment(UserOrGroup);
            SPRoleDefinition roleDefinition = Web.RoleDefinitions[Permission];
            SPRoleDefinitionBindingCollection RoleDefinitionBindings = roleAssignment.RoleDefinitionBindings;
            if (ClearPreviousPermissions)
            {
                for (int i = ListItem.RoleAssignments.Count; i > 0; i--)
                {
                    ListItem.RoleAssignments.Remove(ListItem.RoleAssig  nments.Count - 1);

                }
            }

            RoleDefinitionBindings.Add(roleDefinition);
            ListItem.RoleAssignments.Remove(UserOrGroup);
            ListItem.RoleAssignments.Add(roleAssignment);
           
        }

----------


## حسین نیک پور

ایجاد site Column با کد:

web.Fields.Add(name, SPFieldType.Text, req);

به جای name نام فیلد و به جای req الزامی بودن فیلد را ایگزین کنید.

در صورتی که خصوصیت های دیگری از فیلد را می خواهید  مقدار دهی کنید از کد زیر استفاده کنید
web.Fields[name].Group = "HN_Group";
 web.Fields[name].Description = "Desc";
 web.Fields[name].Update();


البته لازم به ذکر است که در صورتی که خصوصیات منحصر به فرد یک فیلد خاص را میخواهید مقدار دهی کنید (مثلا خاصیت انتخاب چندگانه برای کاربران) ابتدا باید فیلد مورد نظر را تبدیل کنید

 SPFieldUser u = (SPFieldUser)web.Fields[name];
  u.AllowMultipleValues = true;

----------


## حسین نیک پور

ایجاد LookUp Column :

برای ایجاد فیلد لوک آپ  از این روش استفاده کنید

 web.Fields.AddLookup(name, List.ID, web.ID, req);
 SPFieldLookup l = (SPFieldLookup)web.Fields[name];
 l.Description = "desc";
 l.Group = "HN_Columns";
 l.LookupField = "LookupField"
 l.AllowMultipleValues = true;
 web.Fields[name].Update();


نکته مهم این که در صورتی توی شیرپوینت بخواهید یک فیلد لوک آپ بسازید بر روی لیستی که در سایت دیگری وجود دارد به صورت پیشفرض چنین امکانی با صفحات شیرپوینتی وجود ندارد و شما یا باید از ابزار های جانبی استفاده کنید یا از طریف کد فیلد مورد نظر خود را تعریف کنید.

----------


## حسین نیک پور

ایجاد Content Type :
SPContentType spct = new SPContentType(web.ContentTypes["ParentName"], web.ContentTypes, "CTname");
spct.Group = "CTGroup";
web.ContentTypes.Add(spct);

----------


## حسین نیک پور

برای اضافه کردن فیلد ها به Content Type  :
SPFieldLink fieldLink = new SPFieldLink(web.Fields["FieldName"]);
web.ContentTypes["CTname"].FieldLinks.Add(fieldLink);
web.ContentTypes["CTname"].Update(true);

----------


## حسین نیک پور

ایجاد لیست :

Guid listid = sweb.Lists.Add("ListName","ListDescription", sweb.ListTemplates["Custom List"]);
SPList lst = sweb.Lists[listid];
lst.EnableAttachments = false;
lst.OnQuickLaunch = true;
lst.Update()

----------


## YourName

این موارد هم واقعا مفید هستند:
متد استخراج یا یافتن لیست و فیلد توسط مقادیر مختلف در شرپوینت

----------

