PDA

View Full Version : کدهای دم دستی و کار راه انداز برای برنامه نویسان شیرپوینت



حسین نیک پور
سه شنبه 19 آذر 1392, 09:20 صبح
با سلام
در این پست من قصد دارم تا کد هایی ساده و کم حجمی رو معرفی کنم که برنامه نویس های شیر پوینت بتونن از این کد ها در پروژه ها شون استفاده کنن

حسین نیک پور
سه شنبه 19 آذر 1392, 09:29 صبح
معمولا بیشترین چیزی که برنامه نویس شیرپوینت با هاش موجه میشه ست کردن پرمیشن ها در سطح آیتم هست برای این منظور از یک متد مانند مثال زیر استفاده می کنیم


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);

}

حسین نیک پور
سه شنبه 19 آذر 1392, 16:19 عصر
ایجاد 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;

حسین نیک پور
سه شنبه 19 آذر 1392, 16:36 عصر
ایجاد 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();


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

حسین نیک پور
یک شنبه 24 آذر 1392, 09:20 صبح
ایجاد Content Type :
SPContentType spct = new SPContentType(web.ContentTypes["ParentName"], web.ContentTypes, "CTname");
spct.Group = "CTGroup";
web.ContentTypes.Add(spct);

حسین نیک پور
یک شنبه 24 آذر 1392, 09:24 صبح
برای اضافه کردن فیلد ها به Content Type :
SPFieldLink fieldLink = new SPFieldLink(web.Fields["FieldName"]);
web.ContentTypes["CTname"].FieldLinks.Add(fieldLink);
web.ContentTypes["CTname"].Update(true);

حسین نیک پور
پنج شنبه 28 آذر 1392, 09:07 صبح
ایجاد لیست :

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
جمعه 06 دی 1392, 04:54 صبح
این موارد هم واقعا مفید هستند:
متد استخراج یا یافتن لیست و فیلد توسط مقادیر مختلف در شرپوینت (http://www.itnerd.ir/post/get-a-sharepoint-list-or-field-by-any-value)