Exercise : Tìm hiểu về Object Model cơ bản trong 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à ObjectModelWebPart
Ø 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: Object Model cơ bản trong WebPart
Ø Tiếp tục với ObjectModelWebPart project
Ø Đổi Class1 thành BasicOfObjectModelWebPart.cs
Ø Khai báo code trong phương thức CreateChildControls
§ Khai báo và khởi tạo Literal literalName
· Gán “Current Site:<br> ” cho thuộc tính Text của literalName
· Thêm literalName vào webpart
Literal literalName = new Literal();
literalName.Text = "Current Site:<br>";
this.Controls.Add(literalName);
§ Khai báo code để hiển thị thông tin của web application hiện hành cho literalName
void ShowInformation()
{
Literal literalInformation = new Literal();
literalInformation.Text = "Sites";
this.Controls.Add(literalInformation);
SPSite spSite = SPControl.GetContextSite(Context);
foreach (SPWeb web in spSite.AllWebs)
{
literalInformation.Text += "Site Name: " + web.Title + " -- ID: " + web.ID + "<br>";
}
}
Ø Thêm BasicOfObjectModelWebPart.dwp
<?xml version="1.0" encoding="utf-8"?>
<WebPart xmlns="http://schemas.microsoft.com/WebPart/v2" >
<Title>BasicOfObjectModelWebpart</Title>
<Description>BasicOfObjectModelWebpart</Description>
<Assembly>ObjectModelWebpart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ec47e7d9465cc36e</Assembly>
<TypeName>ObjectModelWebpart.BasicOfObjectModelWebpart</TypeName>
<!-- Specify initial values for any additional base class or custom properties here. -->
</WebPart>
Ø Build project chế độ Release và Deploy WebPart
§ Copy ObjectModelWebPart.dll đến thư mục bin
§ Copy BasicOfObjectModelWebPart.dwp đến thư mục wpcatalog
§ Thêm thẻ <SafeControl>
Ø Quay lại sharepoint site
§ Thêm WebPart này đến WebPart page
§ Thấy được danh sách thông tin của web application
using System;
using System.Web;
using System.Web.UI;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;
using System.Web.UI.WebControls;
using Microsoft.SharePoint.WebControls;
namespace ObjectModelWebpart
{
public class BasicOfObjectModelWebpart:WebPart
{
protected override void CreateChildControls()
{
Literal literalName = new Literal();
literalName.Text = "Current Site:<br>";
this.Controls.Add(literalName);
ShowInformation();
}
void ShowInformation()
{
Literal literalInformation = new Literal();
literalInformation.Text = "Sites";
this.Controls.Add(literalInformation);
SPSite spSite = SPControl.GetContextSite(Context);
foreach (SPWeb web in spSite.AllWebs)
{
literalInformation.Text += "Site Name: " + web.Title + " -- ID: " + web.ID + "<br>";
}
}
}
}
v Exercise 03: Cơ bản về SPWeb và SPSite cho webpart
Ø Tiếp tục với ObjectModelWebPart project
Ø Thêm mới Class SPWebWebPart.cs
Ø Khai báo code trong phương thức CreateChildControls
§ Khai báo và khởi tạo Literal literalName
· Gán “Site: ” cho thuộc tính Text của literalName
· Thêm vào literalName webpart
Literal literalName = new Literal();
literalName.Text = "Site:<br>";
this.Controls.Add(literalName);
§ Khai báo và khởi tạo DropDownList tên ddlSite
· Khai báo sự kiện Load để hiển thị tất cả sub site đến ddlSite
· Thêm ddlSite vào webpart
ddlSite = new DropDownList();
ddlSite.AutoPostBack = true;
ddlSite.Load += new EventHandler(ddlSite_Load);
this.Controls.Add(ddlSite);
void ddlSite_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
SPSite spSite = SPControl.GetContextSite(Context);
Literal literal = new Literal();
literal.Text = "Site: <br>";
foreach (SPWeb web in spSite.AllWebs)
{
ddlSite.Items.Add(new ListItem(web.Title, Convert.ToString(web.ID)));
literal.Text = "Site Name: " + web.Title + "<br>";
}
}}
Ø Thêm SPWebWebPart.dwp
Ø Build project chế độ Release và Deploy WebPart
§ Copy SPWebWebPart.dwp đến thư mục wpcatalog
Ø Quay lại sharepoint site
§ Thêm WebPart này đến WebPart page
v Exercise 04: Tìm hiểu thêm về SPWeb
Ø Tiếp tục với ObjectModelWebPart project
Ø Trong phương thức CreateChildControls khai báo thêm
§ Khai báo và khởi tạo Literal literalWebName
· Thêm literalName vào webpart
§ Khai báo và khởi tạo DropDownList tên ddlSubSite
· Khai báo sự kiện SelectedIndexChanged để lấy giá trị trên ddlSite và gán vào literalWebName
· Thêm ddlSubSite vào webpart
ddlSubSite = new DropDownList();
this.Controls.Add(ddlSubSite);
ddlSite.SelectedIndexChanged += new EventHandler(ddlSite_SelectedIndexChanged);
§ Khai báo và khởi tạo DropDownList tên ddlSubSite
· Khai báo sự kiện SelectedIndexChanged để lấy giá trị trên ddlSite và đổ tất cả các sub site vào ddlSubSite
void ddlSite_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList dropDowList = (DropDownList)sender;
SPSite spSite = SPControl.GetContextSite(Context);
Literal literal = new Literal();
this.Controls.Add(literal);
SPWeb web = spSite.OpenWeb(new Guid(dropDowList.SelectedValue.ToString()));
literal.Text = "Site Name ddlSite_SelectedIndexChanged: " + web.Title + "<br>";
ddlSubSite.Items.Clear();
foreach (SPWeb spweb in web.Webs)
{
ddlSubSite.Items.Add(new ListItem(spweb.Title, Convert.ToString(spweb.ID)));
}
}
Ø ReBuild project chế độ Release và Deploy WebPart
Ø Quay lại sharepoint site
§ Refesh WebPart này
using System;
using System.Web;
using System.Web.UI;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;
using System.Web.UI.WebControls;
using Microsoft.SharePoint.WebControls;
namespace ObjectModelWebpart
{
public class SPWebWebPart:WebPart
{
DropDownList ddlSite = null;
DropDownList ddlSubSite = null;
protected override void CreateChildControls()
{
try
{
Literal literalName = new Literal();
literalName.Text = "Site:<br>";
this.Controls.Add(literalName);
ddlSite = new DropDownList();
ddlSite.AutoPostBack = true;
ddlSite.Load += new EventHandler(ddlSite_Load);
this.Controls.Add(ddlSite);
ddlSubSite = new DropDownList();
this.Controls.Add(ddlSubSite);
ddlSite.SelectedIndexChanged += new EventHandler(ddlSite_SelectedIndexChanged);
}
catch (Exception ex)
{
}
}
void ddlSite_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList dropDowList = (DropDownList)sender;
SPSite spSite = SPControl.GetContextSite(Context);
Literal literal = new Literal();
this.Controls.Add(literal);
SPWeb web = spSite.OpenWeb(new Guid(dropDowList.SelectedValue.ToString()));
literal.Text = "Site Name ddlSite_SelectedIndexChanged: " + web.Title + "<br>";
ddlSubSite.Items.Clear();
foreach (SPWeb spweb in web.Webs)
{
ddlSubSite.Items.Add(new ListItem(spweb.Title, Convert.ToString(spweb.ID)));
}
}
void ddlSite_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
SPSite spSite = SPControl.GetContextSite(Context);
Literal literal = new Literal();
literal.Text = "Site: <br>";
foreach (SPWeb web in spSite.AllWebs)
{
ddlSite.Items.Add(new ListItem(web.Title, Convert.ToString(web.ID)));
literal.Text = "Site Name: " + web.Title + "<br>";
}
}
}
}
}
v Exercise 05: Cơ bản về SPList
Ø Tiếp tục với ObjectModelWebPart project
Ø Thêm mới Class SPListWebWebPart.cs
Ø Khai báo code trong phương thức CreateChildControls
§ Khai báo và khởi tạo Literal literalForList
· Gán “List: ” cho thuộc tính Text của literalForList
· Thêm vào literalForList webpart
Literal literalForList = new Literal();
literalForList.Text = "List: ";
this.Controls.Add(literalForList);
§ Khai báo và khởi tạo DropDownList tên ddlList
· Khai báo sự kiện Load để hiển thị tất cả Lists của site hiện hành đến ddlList
· Thêm ddlList vào webpart
ddlList = new DropDownList();
ddlList.Load += new EventHandler(ddlList_Load);
this.Controls.Add(ddlList);
void ddlList_Load(object sender, EventArgs e)
{
SPSite spSite = SPControl.GetContextSite(Context);
SPWeb spWeb = spSite.OpenWeb();
foreach (SPList spList in spWeb.Lists)
{
ddlList.Items.Add(new ListItem(spList.Title, spList.ID.ToString()));
}
}
Ø Thêm SPListWebWebPart.dwp
Ø Build project chế độ Release và Deploy WebPart
§ Copy SPListWebWebPart.dwp đến thư mục wpcatalog
Ø Quay lại sharepoint site
§ Thêm WebPart này đến WebPart page
using System;
using System.Web;
using System.Web.UI;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;
using System.Web.UI.WebControls;
using Microsoft.SharePoint.WebControls;
namespace ObjectModelWebpart
{
public class SPListWebpart:WebPart
{
DropDownList ddlList;
protected override void CreateChildControls()
{
Literal literalForList = new Literal();
literalForList.Text = "List: ";
this.Controls.Add(literalForList);
ddlList = new DropDownList();
ddlList.Load += new EventHandler(ddlList_Load);
this.Controls.Add(ddlList);
}
void ddlList_Load(object sender, EventArgs e)
{
SPSite spSite = SPControl.GetContextSite(Context);
SPWeb spWeb = spSite.OpenWeb();
foreach (SPList spList in spWeb.Lists)
{
ddlList.Items.Add(new ListItem(spList.Title, spList.ID.ToString()));
}
}
}
}
v Exercise 06: Tìm hiểu SPListManager
Ø Tiếp tục với ObjectModelWebPart project
Ø Thêm mới Class SPListManager.cs
Ø Khai báo code trong phương thức CreateChildControls
§ Khai báo và khởi tạo Literal literalForList
· Gán “List: ” cho thuộc tính Text của literalForList
· Thêm vào literalForList webpart
Literal literalForList = new Literal();
literalForList.Text = "List: ";
this.Controls.Add(literalForList);
§ Khai báo và khởi tạo TextBox tên txtList
· Thêm txtList vào webpart
txtList = new TextBox();
this.Controls.Add(txtList);
§ Khai báo và khởi tạo Button tên btnCreate
· Khai báo sự kiện Click của btnCreate để tạo mới list với tên được nhập vào từ txtList
· Thêm btnCreate vào webpart
Button btnCreate = new Button();
btnCreate.Text = "Create";
btnCreate.Click += new EventHandler(btnCreate_Click);
this.Controls.Add(btnCreate);
void btnCreate_Click(object sender, EventArgs e)
{
SPSite spSite = SPControl.GetContextSite(Context);
SPWeb spWeb = spSite.OpenWeb();
spWeb.AllowUnsafeUpdates = true;
SPListCollection spListCollection = spWeb.Lists;
spListCollection.Add(txtList.Text, "This is List created", SPListTemplateType.GenericList);
literalAdd.Text = "Them thanh cong List: " + txtList.Text;
spWeb.AllowUnsafeUpdates = false;
}
§ Khai báo và khởi tạo Button tên btnDelete
· Khai báo sự kiện của btnDelete để tạo xóa list với tên được nhập vào từ txtList
· Thêm btnDelete vào webpart
Button btnDelete = new Button();
btnDelete.Text = "Delete";
btnDelete.Click += new EventHandler(btnDelete_Click);
this.Controls.Add(btnDelete);
void btnDelete_Click(object sender, EventArgs e)
{
SPSite spSite = SPControl.GetContextSite(Context);
SPWeb spWeb = spSite.OpenWeb();
spWeb.AllowUnsafeUpdates = true;
SPListCollection spListCollection = spWeb.Lists;
SPList spList = spListCollection[txtList.Text];
Guid guid = spList.ID;
spListCollection.Delete(guid);
literalDelete.Text = "Xoa thanh cong List: " + txtList.Text;
spWeb.AllowUnsafeUpdates = false;
}
Ø Build project chế độ Release và Deploy WebPart
Ø Quay lại sharepoint site
§ Refesh WebPart này
using System;
using System.Web;
using System.Web.UI;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;
using System.Web.UI.WebControls;
using Microsoft.SharePoint.WebControls;
namespace ObjectModelWebpart
{
public class SPListManager:WebPart
{
TextBox txtList;
Literal literalAdd;
Literal literalDelete;
protected override void CreateChildControls()
{
Literal literalForList = new Literal();
literalForList.Text = "List: ";
this.Controls.Add(literalForList);
txtList = new TextBox();
this.Controls.Add(txtList);
literalAdd = new Literal();
this.Controls.Add(literalAdd);
Button btnCreate = new Button();
btnCreate.Text = "Create";
btnCreate.Click += new EventHandler(btnCreate_Click);
this.Controls.Add(btnCreate);
literalDelete = new Literal();
this.Controls.Add(literalDelete);
Button btnDelete = new Button();
btnDelete.Text = "Delete";
btnDelete.Click += new EventHandler(btnDelete_Click);
this.Controls.Add(btnDelete);
}
void btnDelete_Click(object sender, EventArgs e)
{
SPSite spSite = SPControl.GetContextSite(Context);
SPWeb spWeb = spSite.OpenWeb();
spWeb.AllowUnsafeUpdates = true;
SPListCollection spListCollection = spWeb.Lists;
SPList spList = spListCollection[txtList.Text];
Guid guid = spList.ID;
spListCollection.Delete(guid);
literalDelete.Text = "Xoa thanh cong List: " + txtList.Text;
spWeb.AllowUnsafeUpdates = false;
}
void btnCreate_Click(object sender, EventArgs e)
{
SPSite spSite = SPControl.GetContextSite(Context);
SPWeb spWeb = spSite.OpenWeb();
spWeb.AllowUnsafeUpdates = true;
SPListCollection spListCollection = spWeb.Lists;
spListCollection.Add(txtList.Text, "This is List created", SPListTemplateType.GenericList);
literalAdd.Text = "Them thanh cong List: " + txtList.Text;
spWeb.AllowUnsafeUpdates = false;
}
}
}
v Exercise 07: Cơ bản về SPLimitedWebPartManager
Ø Tiếp tục với ObjectModelWebPart project
Ø Thêm mới Class SPWebPartWebWebPart.cs
Ø Khai báo code trong phương thức CreateChildControls
§ Khai báo và khởi tạo Literal literalForWebPart
· Gán “WebPart: ” cho thuộc tính Text của literalForWebPart
· Thêm literalForWebPart vào webpart
Literal literalForWebPart = new Literal();
literalForWebPart.Text = "WebPart: ";
this.Controls.Add(literalForWebPart);
§ Khai báo và khởi tạo DropDownList tên ddlWebPart
· Khai báo sự kiện Load để hiển thị tất cả webpart của site hiện hành đến ddlWebPart
· Thêm ddlWebPart vào webpart
ddlWebPart = new DropDownList();
ddlWebPart.Load += new EventHandler(ddlWebPart_Load);
this.Controls.Add(ddlWebPart);
void ddlWebPart_Load(object sender, EventArgs e)
{
SPSite spSite = SPControl.GetContextSite(Context);
SPWeb spWeb = spSite.OpenWeb();
SPWebPartCollection spWebPartCollection = spWeb.GetWebPartCollection(spWeb.Url + "/default.aspx",
Microsoft.SharePoint.WebPartPages.Storage.Shared);
ddlWebPart.Items.Clear();
foreach (WebPart webPart in spWebPartCollection)
{
ddlWebPart.Items.Add(new ListItem(webPart.Title, webPart.ID));
}
}
Ø Thêm SPWebPartWebWebPart.dwp
Ø Build project chế độ Release và Deploy WebPart
§ Copy SPWebPartWebWebPart.dwp đến thư mục wpcatalog
Ø Quay lại sharepoint site
§ Thêm WebPart này đến WebPart page
using System;
using System.Web;
using System.Web.UI;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;
using System.Web.UI.WebControls;
using Microsoft.SharePoint.WebControls;
namespace ObjectModelWebpart
{
public class SPWebPartWebPart:WebPart
{
DropDownList ddlWebPart;
protected override void CreateChildControls()
{
Literal literalForWebPart = new Literal();
literalForWebPart.Text = "WebPart: ";
this.Controls.Add(literalForWebPart);
ddlWebPart = new DropDownList();
ddlWebPart.Load += new EventHandler(ddlWebPart_Load);
this.Controls.Add(ddlWebPart);
}
void ddlWebPart_Load(object sender, EventArgs e)
{
SPSite spSite = SPControl.GetContextSite(Context);
SPWeb spWeb = spSite.OpenWeb();
SPWebPartCollection spWebPartCollection = spWeb.GetWebPartCollection(spWeb.Url + "/default.aspx",
Microsoft.SharePoint.WebPartPages.Storage.Shared);
ddlWebPart.Items.Clear();
foreach (WebPart webPart in spWebPartCollection)
{
ddlWebPart.Items.Add(new ListItem(webPart.Title, webPart.ID));
}
}
}
}
v Exercise 08: Cách lấy SPList từ sub site
Ø Tiếp tục với ObjectModelWebPart project
Ø Thêm mới Class RemoteSPListWebWebPart.cs
Ø Khai báo code trong phương thức CreateChildControls
§ Khai báo và khởi tạo Literal literalForList
· Gán “List: ” cho thuộc tính Text của literalForList
· Thêm literalForList vào webpart
literalForSite = new Literal();
literalForSite.Text = "Site: ";
this.Controls.Add(literalForSite);
§ Khai báo và khởi tạo DropDownList tên ddlList
· Khai báo sự kiện Load để hiển thị tất cả List của site được chỉ định bằng cách cung cấp Guid của local site đến ddlList
· Thêm ddlList vào webpart
ddlSite = new DropDownList();
ddlSite.AutoPostBack = true;
ddlSite.Load += new EventHandler(ddlSite_Load);
this.Controls.Add(ddlSite);
void ddlSite_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
spSite = SPControl.GetContextSite(Context);
foreach (SPWeb web in spSite.AllWebs)
{
ddlSite.Items.Add(new ListItem(web.Title, Convert.ToString(web.ID)));
}
}
}
Ø Thêm RemoteSPListWebWebPart.dwp
Ø Build project chế độ Release và Deploy WebPart
§ Copy RemoteSPListWebWebPart.dwp đến thư mục wpcatalog
Ø Quay lại sharepoint site
§ Thêm WebPart này đến WebPart page
using System;
using System.Web;
using System.Web.UI;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;
using System.Web.UI.WebControls;
using Microsoft.SharePoint.WebControls;
namespace ObjectModelWebpart
{
public class RemoteSPListWebPart:WebPart
{
DropDownList ddlSite;
DropDownList ddlSubSite;
DropDownList ddlList;
Literal literalForSite;
Literal literalForSubSite;
Literal literalForList;
SPSite spSite;
SPWeb web;
protected override void CreateChildControls()
{
literalForSite = new Literal();
literalForSite.Text = "Site: ";
this.Controls.Add(literalForSite);
ddlSite = new DropDownList();
ddlSite.AutoPostBack = true;
ddlSite.Load += new EventHandler(ddlSite_Load);
this.Controls.Add(ddlSite);
literalForSubSite = new Literal();
literalForSubSite.Text = "SubSite: ";
this.Controls.Add(literalForSubSite);
ddlSubSite = new DropDownList();
ddlSubSite.AutoPostBack = true;
this.Controls.Add(ddlSubSite);
ddlSite.SelectedIndexChanged += new EventHandler(ddlSite_SelectedIndexChanged);
ddlSubSite.SelectedIndexChanged += new EventHandler(ddlSubSite_SelectedIndexChanged);
literalForList = new Literal();
literalForList.Text = "List: ";
this.Controls.Add(literalForList);
ddlList = new DropDownList();
this.Controls.Add(ddlList);
}
void ddlSubSite_SelectedIndexChanged(object sender, EventArgs e)
{
ddlList.Items.Clear();
try
{
SPSite spSite = SPControl.GetContextSite(Context);
ShowList(spSite, ddlSubSite.SelectedValue.ToString());
}
catch (Exception ex)
{
}
}
private void ShowList(SPSite spSite, string id)
{
SPWeb spWeb = spSite.OpenWeb();
foreach (SPList spList in spWeb.Lists)
{
ddlList.Items.Add(new ListItem(spList.Title, spList.ID.ToString()));
}
}
void ddlSite_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
spSite = SPControl.GetContextSite(Context);
foreach (SPWeb web in spSite.AllWebs)
{
ddlSite.Items.Add(new ListItem(web.Title, Convert.ToString(web.ID)));
}
}
}
void ddlSite_SelectedIndexChanged(object sender, EventArgs e)
{
spSite = SPControl.GetContextSite(Context);
ShowSubSite(spSite, ddlSite.SelectedValue.ToString());
}
private void ShowSubSite(SPSite spSite,string id)
{
web = spSite.OpenWeb(new Guid(id));
ddlSubSite.Items.Clear();
foreach (SPWeb spWeb in web.Webs)
{
ddlSubSite.Items.Add(new ListItem(spWeb.Title, spWeb.ID.ToString()));
}
}
}
}
v Exercise 09: Tìm hiểu thêm về cách hiển thị SPList trong ToolPart và cho phép user chọn 1 SPList và hiển thị tên SPList và id trên webpart
0 comments:
Post a Comment