Exercise : Tìm hiểu về User và phân quyền trong Object Model cho WebPart
· Tiếp tục với WebPartSoln
v Exercise 01: Chuẩn bị tài nguyên cho webpart
Ø Thêm mới Class Library Project tên là UseObjectModelWebPart
Ø Click vào References | R-Right | Add Reference
Ø Chọn Microsoft.Sharepoint.Dll vào thư mục của WebPartSoln
Ø Tiếp tục chọn Tab .NET | System.Web
§ Khai báo Using
· using System.Web;
· using System.Web.UI;
· using Microsoft.SharePoint;
· using Microsoft.SharePoint.WebPartPages;
· using System.Web.UI.WebControls;
§ Khai báo kế thừa từ WebPart Class cho Class1
Ø Chọn Microsoft.Sharepoint.Dll vào thư mục của WebPartSoln
Ø Vào thư mục Properties mở file AssemblyInfo.cs
§ Di chuyển xuống phần cuối cùng của File AssemblyInfo.cs, thêm vào : (tùy với vị trí đặt Hkgsolution.snk).
· [assembly: AssemblyKeyFile("..\\hkgsolution.snk")]
Ø Build project ở chế độ Release và succsessfull
Exercise 02: Cách lấy user hiện hành Trong WebPart
Ø Tiếp tục với UseObjectModelWebPart project
Ø Đổi Class1 thành UserWebPart.cs
Ø Khai báo code trong phương thức CreateChildControls
§ Khai báo và khởi tạo Literal literalForText
· Gán “List: ” cho thuộc tính Text của literalForText
· Thêm literalForText vào webpart
§ Khai báo và khởi tạo Literal literalForValue
· Khai báo code để Gán user hiện hành cho thuộc tính Text của literalForValue
· Thêm literalForValue vào webpart
Ø Thêm UserWebPart.dwp
Ø Build project chế độ Release và Deploy WebPart
§ Copy UseObjectModelWebPart.dll đến thư mục bin
§ Copy UserWebPart.dwp đến thư mục wpcatalog
§ Thêm thẻ <SafeControl>
Ø Quay lại sharepoint site
§ Thêm WebPart này đến WebPart page
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;
using Microsoft.SharePoint.WebControls;
namespace UserObjectModelWebPart
{
public class UserWebPart:WebPart
{
Literal literalForValue;
SPSite spSite;
SPWeb spWeb;
protected override void CreateChildControls()
{
spSite = SPControl.GetContextSite(Context);
spWeb = spSite.OpenWeb();
Literal literalForText = new Literal();
literalForText.Text = "Hello: ";
this.Controls.Add(literalForText);
literalForValue = new Literal();
this.Controls.Add(literalForValue);
Button btnShowUserWebPart = new Button();
btnShowUserWebPart.Text = "Show User WebPart";
btnShowUserWebPart.Click += new EventHandler(btnShowUserWebPart_Click);
this.Controls.Add(btnShowUserWebPart);
}
void btnShowUserWebPart_Click(object sender, EventArgs e)
{
literalForValue.Text = spWeb.CurrentUser.Name;
}
}
}
v Exercise 03: Cách lấy những user trên site
Ø Tiếp tục với UseObjectModelWebPart project
Ø Thêm mới Class UsersWebPart.cs
Ø Khai báo code trong phương thức CreateChildControls
§ Khai báo và khởi tạo Literal literalForText
· Gán “Users: ” cho thuộc tính Text của literalForText
· Thêm literalForText vào webpart
Literal literalForText = new Literal();
literalForText.Text = "Users: ";
this.Controls.Add(literalForText);
§ Khai báo và khởi tạo DropDownList tên dropDownListForUsers
· Khai báo sự kiện Load để hiển thị tất cả Users của site hiện hành đến dropDownListForUsers
· Thêm dropDownListForUsers vào webpart
dropDownListForUsers = new DropDownList();
dropDownListForUsers.Load += new System.EventHandler(dropDownListForUsers_Load);
this.Controls.Add(dropDownListForUsers);
void dropDownListForUsers_Load(object sender, System.EventArgs e)
{
if (dropDownListForUsers.Items.Count==0)
{
foreach (SPUser spUser in spWeb.AllUsers)
{
dropDownListForUsers.Items.Add(new ListItem(spUser.LoginName, spUser.Name));
}
}
}
Ø Thêm UsersWebPart.dwp
Ø Build project chế độ Release và Deploy WebPart
§ Copy UsersWebPart.dwp đến thư mục wpcatalog
Ø Quay lại sharepoint site
§ Thêm WebPart này đến WebPart page
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;
using Microsoft.SharePoint.WebControls;
namespace UserObjectModelWebPart
{
public class UsersWebPart:WebPart
{
DropDownList dropDownListForUsers;
SPSite spSite;
SPWeb spWeb;
protected override void CreateChildControls()
{
spSite = SPControl.GetContextSite(Context);
spWeb = spSite.OpenWeb();
Literal literalForText = new Literal();
literalForText.Text = "Users: ";
this.Controls.Add(literalForText);
dropDownListForUsers = new DropDownList();
dropDownListForUsers.Load += new System.EventHandler(dropDownListForUsers_Load);
this.Controls.Add(dropDownListForUsers);
}
void dropDownListForUsers_Load(object sender, System.EventArgs e)
{
if (dropDownListForUsers.Items.Count==0)
{
foreach (SPUser spUser in spWeb.AllUsers)
{
dropDownListForUsers.Items.Add(new ListItem(spUser.LoginName, spUser.Name));
}
}
}
}
}
v Exercise 04: Cách hiển thị Roles của User
Ø Tiếp tục với UseObjectModelWebPart project
Ø Thêm mới Class RolesWebPart.cs
Ø Trong phương thức CreateChildControls khai báo thêm
§ Khai báo và khởi tạo Literal literalForText
· Gán “Roles: ” cho thuộc tính Text của literalForText
· Thêm literalForText vào webpart
§ Khai báo và khởi tạo DropDownList tên dropDownListForRoles
· Khai báo sự kiện Load để hiển thị tất cả Roles của site hiện hành đến dropDownListForRoles
· Thêm dropDownListForRoles vào webpart
Ø Thêm RolesWebPart.dwp
Ø Build project chế độ Release và Deploy WebPart
Ø Quay lại sharepoint site
§ Refesh WebPart này
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;
using Microsoft.SharePoint.WebControls;
namespace UserObjectModelWebPart
{
public class RolesWebPart:WebPart
{
DropDownList dropDownListForRoles;
SPSite spSite;
SPWeb spWeb;
protected override void CreateChildControls()
{
spSite = SPControl.GetContextSite(Context);
spWeb = spSite.OpenWeb();
Literal literalForText = new Literal();
literalForText.Text = "Roles: ";
this.Controls.Add(literalForText);
dropDownListForRoles = new DropDownList();
dropDownListForRoles.Load += new System.EventHandler(dropDownListForRoles_Load);
this.Controls.Add(dropDownListForRoles);
}
void dropDownListForRoles_Load(object sender, System.EventArgs e)
{
if (dropDownListForRoles.Items.Count==0)
{
foreach (SPRole spRole in spWeb.Roles)
{
dropDownListForRoles.Items.Add(new ListItem(spRole.Name,spRole.ID.ToString()));
}
}
}
}
}
v Exercise 05: hiểu biết thêm về cách lấy role
Ø Tiếp tục với UseObjectModelWebPart project
Ø Thêm mới Class RoleWebPart.cs
Ø Trong phương thức CreateChildControls khai báo thêm
§ Khai báo và khởi tạo Literal literalForText
· Gán “Roles: ” cho thuộc tính Text của literalForText
· Thêm literalForText vào webpart
§ Khai báo và khởi tạo DropDownList tên dropDownListForRoles
· Khai báo sự kiện Load để hiển thị tất cả Roles của site hiện hành đến dropDownListForRoles
· Thêm dropDownListForRoles vào webpart
§ Khai báo và khởi tạo DropDownList tên dropDownListForUsers
· Thêm dropDownListForUsers vào webpart
· Khai báo sự kiện SelectedIndexChanged để hiển thị tất cả users vào dropDownListForUsers có roles được chọn từ dropDownListForRoles
Ø Thêm RoleWebPart.dwp
Ø Build project chế độ Release và Deploy WebPart
Ø Quay lại sharepoint site
§ Refesh WebPart này
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;
using Microsoft.SharePoint.WebControls;
namespace UserObjectModelWebPart
{
public class RolesWebPart:WebPart
{
DropDownList dropDownListForRoles;
DropDownList dropDownListForUsers;
SPSite spSite;
SPWeb spWeb;
protected override void CreateChildControls()
{
spSite = SPControl.GetContextSite(Context);
spWeb = spSite.OpenWeb();
Literal literalForText = new Literal();
literalForText.Text = "Roles: ";
this.Controls.Add(literalForText);
dropDownListForRoles = new DropDownList();
dropDownListForRoles.AutoPostBack = true;
dropDownListForRoles.Load += new System.EventHandler(dropDownListForRoles_Load);
this.Controls.Add(dropDownListForRoles);
dropDownListForUsers = new DropDownList();
this.Controls.Add(dropDownListForUsers);
dropDownListForRoles.SelectedIndexChanged += new System.EventHandler(dropDownListForRoles_SelectedIndexChanged);
}
void dropDownListForRoles_SelectedIndexChanged(object sender, System.EventArgs e)
{
//dropDownListForUsers.Items.Clear();
//SPRoleCollection spRoleCollection = spWeb.Roles;
//SPRole spRole = spRoleCollection[dropDownListForRoles.SelectedItem.ToString()];
//SPUserCollection spUserCollection = spRole.Users;
SPUserCollection spUserCollection = spWeb.Roles[dropDownListForRoles.SelectedItem.ToString()].Users;
foreach (SPUser spUser in spUserCollection)
{
dropDownListForUsers.Items.Add(new ListItem(spUser.Name, spUser.ID.ToString()));
}
}
void dropDownListForRoles_Load(object sender, System.EventArgs e)
{
if (dropDownListForRoles.Items.Count==0)
{
foreach (SPRole spRole in spWeb.Roles)
{
dropDownListForRoles.Items.Add(new ListItem(spRole.Name, spRole.ID.ToString()));
}
}
}
}
}
v Exercise 06: Cách hiển thị Groups
Ø Tiếp tục với UseObjectModelWebPart project
Ø Thêm mới Class GroupsWebPart.cs
Ø Trong phương thức CreateChildControls khai báo thêm
§ Khai báo và khởi tạo Literal literalForText
· Gán “Groups: ” cho thuộc tính Text của literalForText
· Thêm literalForText vào webpart
§ Khai báo và khởi tạo DropDownList tên dropDownListForGroups
· Khai báo sự kiện Load để hiển thị tất cả Groups của site hiện hành đến dropDownListForGroups
· Thêm dropDownListForGroups vào webpart
Ø Thêm GroupsWebPart.dwp
Ø Build project chế độ Release và Deploy WebPart
Ø Quay lại sharepoint site
§ Refesh WebPart này
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;
using Microsoft.SharePoint.WebControls;
namespace UserObjectModelWebPart
{
public class GroupsWebPart:WebPart
{
SPSite spSite;
SPWeb spWeb;
Literal literalForValue;
protected override void CreateChildControls()
{
spSite = SPControl.GetContextSite(Context);
spWeb = spSite.OpenWeb();
Literal literalForText = new Literal();
literalForText.Text = "Group: ";
this.Controls.Add(literalForText);
literalForValue = new Literal();
this.Controls.Add(literalForValue);
ShowGroupName();
}
private void ShowGroupName()
{
foreach (SPGroup spGroup in spWeb.CurrentUser.Groups)
{
literalForValue.Text += spGroup.Name + "---";
}
}
}
}
v Exercise 07: Cách hiển thị Groups của user hiện hành
Ø Tiếp tục với UseObjectModelWebPart project
Ø Thêm mới Class GroupWebPart.cs
Ø Trong phương thức CreateChildControls khai báo thêm
§ Khai báo và khởi tạo Literal literalForText
· Gán “Group: ” cho thuộc tính Text của literalForText
· Thêm literalForText vào webpart
§ Khai báo và khởi tạo Literal literalForValue
· Thêm literalForValue vào webpart
· Khai báo code để hiển thị tên group của user hiện hành vào literalForValue
Ø Thêm GroupWebPart.dwp
Ø Build project chế độ Release và Deploy WebPart
Ø Quay lại sharepoint site
§ Refesh WebPart này
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;
using Microsoft.SharePoint.WebControls;
namespace UserObjectModelWebPart
{
public class GroupWebPart:WebPart
{
SPSite spSite;
SPWeb spWeb;
Literal literalForValue;
protected override void CreateChildControls()
{
spSite = SPControl.GetContextSite(Context);
spWeb = spSite.OpenWeb();
Literal literalForText = new Literal();
literalForText.Text = "Group: ";
this.Controls.Add(literalForText);
literalForValue = new Literal();
this.Controls.Add(literalForValue);
ShowGroupName();
}
private void ShowGroupName()
{
foreach (SPGroup spGroup in spWeb.CurrentUser.Groups)
{
literalForValue.Text += spGroup.Name + "---";
}
}
}
}
0 comments:
Post a Comment