Exercise : Tìm hiểu về Object Model nâng cao 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à ManipulateMoreObjectModelWebPart
Ø 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 Nâng Cao Trong WebPart
Ø Tiếp tục với ManipulateMoreObjectModelWebPart project
Ø Đổi Class1 thành ManipulateSPViewWebPart.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
§ 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 hiện hành đến ddlList
· Thêm ddlList vào webpart
§ Khai báo và khởi tạo Literal literalForView
· Gán “View: ” cho thuộc tính Text của literalForView
· Thêm literalForView vào webpart
§ Khai báo và khởi tạo DropDownList tên ddlView
· Thêm ddlList vào webpart
· Khai báo sự kiện SelectedIndexChanged để hiển thị tất cả View của ddlList đã chọn
Ø Thêm ManipulateSPViewWebPart.dwp
Ø Build project chế độ Release và Deploy WebPart
§ Copy ManipulateMoreObjectModelWebPart.dll đến thư mục bin
§ Copy ManipulateSPViewWebPart.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.Web;
using System.Web.UI;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;
using System.Web.UI.WebControls;
using Microsoft.SharePoint.WebControls;
namespace ManipulateDataObjectModel
{
public class ManipulateSPViewWebPart:WebPart
{
DropDownList ddlList;
DropDownList ddlView;
SPSite spSite;
SPWeb spWeb;
protected override void CreateChildControls()
{
spSite = SPControl.GetContextSite(Context);
spWeb = spSite.OpenWeb();
Literal literalForList = new Literal();
literalForList.Text = "List: ";
this.Controls.Add(literalForList);
ddlList = new DropDownList();
ddlList.AutoPostBack = true;
ddlList.Load += new EventHandler(ddlList_Load);
this.Controls.Add(ddlList);
Literal literalForView = new Literal();
literalForView.Text = "View";
this.Controls.Add(literalForView);
ddlView = new DropDownList();
this.Controls.Add(ddlView);
ddlList.SelectedIndexChanged += new EventHandler(ddlList_SelectedIndexChanged);
}
void ddlList_SelectedIndexChanged(object sender, EventArgs e)
{
SPListCollection spListCollection = spWeb.Lists;
SPList spList = spListCollection[new Guid(ddlList.SelectedValue)];
ddlView.Items.Clear();
foreach (SPView spView in spList.Views)
{
ddlView.Items.Add(new ListItem(spView.Title, spView.ID.ToString()));
}
}
void ddlList_Load(object sender, EventArgs e)
{
if (ddlList.Items.Count==0)
{
foreach (SPList spList in spWeb.Lists)
{
ddlList.Items.Add(new ListItem(spList.Title, spList.ID.ToString()));
}
}
}
}
}
v Exercise 03: Cách tạo View cho List
Ø Tiếp tục với ManipulateMoreObjectModelWebPart project
Ø Thêm mới Class ManipulateSPViewManagerWebPart.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
§ 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 hiện hành đến ddlList
· Thêm ddlList vào webpart
§ Khai báo và khởi tạo Literal literalForView
· Gán “View: ” cho thuộc tính Text của literalForView
· Thêm literalForView vào webpart
§ Khai báo và khởi tạo TextBox tên txtView
· Thêm txtView vào webpart
§ Khai báo và khởi tạo Button tên btnCreate, Text là Create
· Khai báo sự kiện Click của btnCreate để tạo mới View cho List đã chọn ở ddlList
· Thêm btnCreate vào webpart
Ø Thêm ManipulateSPViewManagerWebPart.dwp
Ø Build project chế độ Release và Deploy WebPart
§ Copy ManipulateSPViewManagerWebPart.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;
using System.Data;
namespace ManipulateDataObjectModel
{
public class ManipulateSPViewManagermentWebPart:WebPart
{
DropDownList ddlList;
SPSite spSite;
SPWeb spWeb;
TextBox txtView;
protected override void CreateChildControls()
{
spSite = SPControl.GetContextSite(Context);
spWeb = spSite.OpenWeb();
Literal literalForList = new Literal();
literalForList.Text = "List: ";
this.Controls.Add(literalForList);
ddlList = new DropDownList();
ddlList.AutoPostBack = true;
ddlList.Load += new EventHandler(ddlList_Load);
this.Controls.Add(ddlList);
//ddlList.SelectedIndexChanged += new EventHandler(ddlList_SelectedIndexChanged);
Literal literalForView = new Literal();
literalForView.Text = "View Name: ";
this.Controls.Add(literalForView);
txtView = new TextBox();
this.Controls.Add(txtView);
Button btnCreateView = new Button();
btnCreateView.Text = "Create View: ";
btnCreateView.Click += new EventHandler(btnCreateView_Click);
this.Controls.Add(btnCreateView);
}
void ddlList_SelectedIndexChanged(object sender, EventArgs e)
{
SPListCollection spListCollection = spWeb.Lists;
SPList spList = spListCollection[new Guid(ddlList.SelectedValue)];
Literal literalResult = new Literal();
literalResult.Text = "";
this.Controls.Add(literalResult);
}
void btnCreateView_Click(object sender, EventArgs e)
{
AddNewView();
}
private void AddNewView()
{
SPListCollection spListCollection = spWeb.Lists;
SPList spList = spListCollection[new Guid(ddlList.SelectedValue)];
Literal literalError = new Literal();
this.Controls.Add(literalError);
spWeb.AllowUnsafeUpdates = true;
System.Collections.Specialized.StringCollection columnCollection = newSystem.Collections.Specialized.StringCollection();
columnCollection.Add("Title");
spList.Views.Add(txtView.Text, columnCollection, @"", 100, true, true);
spList.Update();
spWeb.AllowUnsafeUpdates = false;
literalError.Text = "Successfull";
}
void ddlList_Load(object sender, EventArgs e)
{
if (ddlList.Items.Count==0)
{
foreach (SPList spList in spWeb.Lists)
{
ddlList.Items.Add(new ListItem(spList.Title, spList.ID.ToString()));
}
}
}
}
}
v Exercise 04: Cách hiển thị Field của SPList hoặc SPView
Ø Tiếp tục với ManipulateMoreObjectModelWebPart project
Ø Thêm mới Class ManipulateSPFieldManagerWebPart.cs
Ø Trong phương thức CreateChildControls khai báo thêm
§ 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
§ 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 hiện hành đến ddlList
· Thêm ddlList vào webpart
§ Khai báo và khởi tạo DropDownList tên ddlField
· Khai báo sự kiện SelectedIndexChanged để lấy giá trị trên ddlList và đổ tất cả các Field vào ddlField
· Thêm ddlField vào webpart
Ø Thêm ManipulateSPFieldManagerWebPart.dwp
Ø 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;
using System.Data;
namespace ManipulateDataObjectModel
{
public class ManipulateSPFieldManagerWebpart:WebPart
{
DropDownList ddlList;
DropDownList ddlField;
SPSite spSite;
SPWeb spWeb;
protected override void CreateChildControls()
{
spSite = SPControl.GetContextSite(Context);
spWeb = spSite.OpenWeb();
Literal literalForList = new Literal();
literalForList.Text = "List: ";
this.Controls.Add(literalForList);
ddlList = new DropDownList();
ddlList.AutoPostBack = true;
ddlList.Load += new EventHandler(ddlList_Load);
this.Controls.Add(ddlList);
ddlField = new DropDownList();
ddlList.SelectedIndexChanged += new EventHandler(ddlList_SelectedIndexChanged);
this.Controls.Add(ddlField);
}
void ddlList_SelectedIndexChanged(object sender, EventArgs e)
{
ddlField.Items.Clear();
SPListCollection spListCollection = spWeb.Lists;
SPList spList = spListCollection[new Guid(ddlList.SelectedValue)];
foreach (SPField spField in spList.Fields)
{
ddlField.Items.Add(new ListItem(spField.Title, spField.Id.ToString()));
}
}
void ddlList_Load(object sender, EventArgs e)
{
if (ddlList.Items.Count==0)
{
foreach (SPList spList in spWeb.Lists)
{
ddlList.Items.Add(new ListItem(spList.Title, spList.ID.ToString()));
}
}
}
}
}
v Exercise 05: Cách lấy dữ liêuh từ SPList
Ø Tiếp tục với ManipulateMoreObjectModelWebPart project
Ø Thêm mới Class ManipulateSPListWebPart.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
§ 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 hiện hành đến ddlList
· Thêm ddlList vào webpart
§ Khai báo và khởi tạo GridView tên grvListItem
· Khai báo sự kiện SelectedIndexChanged để lấy giá trị trên ddlList và đổ tất cả các ListItem vào grvListItem
· Thêm grvListItem vào webpart
Ø Thêm ManipulateSPListWebPart.dwp
Ø Build project chế độ Release và Deploy WebPart
§ Copy ManipulateSPListWebPart.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;
using System.Data;
namespace ManipulateDataObjectModel
{
public class ManipulateSPListViewWebPart:WebPart
{
DropDownList ddlList;
GridView gridView;
SPSite spSite;
SPWeb spWeb;
protected override void CreateChildControls()
{
spSite = SPControl.GetContextSite(Context);
spWeb = spSite.OpenWeb();
Literal literalForList = new Literal();
literalForList.Text = "List: ";
this.Controls.Add(literalForList);
ddlList = new DropDownList();
ddlList.AutoPostBack = true;
ddlList.Load += new EventHandler(ddlList_Load);
this.Controls.Add(ddlList);
gridView = new GridView();
ddlList.SelectedIndexChanged += new EventHandler(ddlList_SelectedIndexChanged);
this.Controls.Add(gridView);
}
void ddlList_SelectedIndexChanged(object sender, EventArgs e)
{
SPList spList = spWeb.Lists[new Guid(ddlList.SelectedValue)];
SPQuery spQuery = new SPQuery();
SPListItemCollection spListItemCollection = spList.GetItems(spQuery);
DataTable dataTable = spListItemCollection.GetDataTable();
gridView.DataSource = dataTable;
gridView.DataBind();
}
void ddlList_Load(object sender, EventArgs e)
{
if (ddlList.Items.Count==0)
{
foreach (SPList spList in spWeb.Lists)
{
ddlList.Items.Add(new ListItem(spList.Title, spList.ID.ToString()));
}
}
}
}
}
v Exercise 06: Cách thêm ListItem vào SPList
Ø Tiếp tục với ManipulateMoreObjectModelWebPart project
Ø Thêm mới Class ManipulateAddSPListItemWebPart.cs
Ø Khai báo code trong phương thức CreateChildControls
§ Khai báo và khởi tạo Literal literalForTitle
· Gán “Title: ” cho thuộc tính Text của literalForTitle
· Thêm vào literalForTitle webpart
§ Khai báo và khởi tạo TextBox tên txtTitle
· Thêm txtTitle vào webpart
§ Khai báo và khởi tạo Button tên btnAddNew, text là Add New
· Khai báo sự kiện Click của btnCreate để thêm title của txtTitle vào MyCustomList
· Thêm btnAddNew vào webpart
Ø 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 ManipulateDataObjectModel
{
public class ManipulateAddSPListItemWebPart:WebPart
{
TextBox txtTitle;
SPSite spSite;
SPWeb spWeb;
protected override void CreateChildControls()
{
spSite = SPControl.GetContextSite(Context);
spWeb = spSite.OpenWeb();
Literal literalForList = new Literal();
literalForList.Text = "Title: ";
this.Controls.Add(literalForList);
txtTitle = new TextBox();
this.Controls.Add(txtTitle);
Button btnAddNew = new Button();
btnAddNew.Text = "Add New";
btnAddNew.Click += new EventHandler(btnAddNew_Click);
this.Controls.Add(btnAddNew);
}
void btnAddNew_Click(object sender, EventArgs e)
{
SPList spList = spWeb.Lists["MyCustomList"];
SPListItemCollection spListItemCollection = spList.Items;
SPListItem spListItem = spListItemCollection.Add();
spListItem["Title"] = txtTitle.Text;
spListItem.Update();
}
}
}
v Exercise 07: Cách cập nhật list item vào SPList
Ø Tiếp tục với ManipulateMoreObjectModelWebPart project
Ø Thêm mới Class ManipulateUpdateSPListItemWebPart.cs
Ø Khai báo code trong phương thức CreateChildControls
§ Khai báo và khởi tạo Literal literalForTitle
· Gán “Title: ” cho thuộc tính Text của literalForTitle
· Thêm vào literalForTitle webpart
§ Khai báo và khởi tạo TextBox tên txtTitle
· Thêm txtTitle vào webpart
§ Khai báo và khởi tạo Button tên btnUpdate, text là Update
· Khai báo sự kiện Click của btnUpdate để cập nhật title của txtTitle vào MyCustomList mà có Id là 1 số của Title
· Thêm btnUpdate vào webpart
Ø Thêm ManipulateUpdateSPListItemWebPart.dwp
Ø Build project chế độ Release và Deploy WebPart
§ Copy ManipulateUpdateSPListItemWebPart.dwp đến thư mục wpcatalog
Ø Quay lại sharepoint site
§ Thêm WebPart này đến WebPart page
v Exercise 08: Cách xóa list item của SPList
Ø Tiếp tục với ManipulateMoreObjectModelWebPart project
Ø Thêm mới Class ManipulateDeleteSPListItemWebPart.cs
Ø Khai báo code trong phương thức CreateChildControls
§ Khai báo và khởi tạo Literal literalForId
· Gán “Id: ” cho thuộc tính Text của literalForId
· Thêm vào literalForId webpart
§ Khai báo và khởi tạo TextBox tên txtId
· Thêm txtId vào webpart
§ Khai báo và khởi tạo Button tên btnDelete, text là Delete
· Khai báo sự kiện Click của btnDelete để xóa SpListItem của MyCustomList mà có Id là 1 số của txtId
· Thêm btnDelete vào webpart
Ø Thêm ManipulateDeleteSPListItemWebPart.dwp
Ø Build project chế độ Release và Deploy WebPart
§ Copy ManipulateDeleteSPListItemWebPart.dwp đến thư mục wpcatalog
Ø Quay lại sharepoint site
§ Thêm WebPart này đến WebPart page
v Exercise 09: Cách lấy 1 list item của SPList
Ø Tiếp tục với ManipulateMoreObjectModelWebPart project
Ø Thêm mới Class ManipulateGetSPListItemWebPart.cs
Ø Khai báo code trong phương thức CreateChildControls
§ Khai báo và khởi tạo Literal literalForId
· Gán “Id: ” cho thuộc tính Text của literalForId
· Thêm vào literalForId webpart
· Khai báo và khởi tạo TextBox tên là txtId và thêm vào webpart
§ Khai báo và khởi tạo Literal với tên
· literalTitle để hiển thị Title
· literalCreated để hiển thị Created By
§ Khai báo và khởi tạo Button tên btnGet, text là Get Item
· Khai báo sự kiện Click của btnGet để lấy SpListItem của MyCustomList mà có Id là 1 số của txtId
· Thêm btnGet vào webpart
Ø Thêm ManipulateGetSPListItemWebPart.dwp
Ø Build project chế độ Release và Deploy WebPart
§ Copy ManipulateGetSPListItemWebPart.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 ManipulateDataObjectModel
{
public class ManipulateGetSPListItemWebPart:WebPart
{
SPSite spSite;
SPWeb spWeb;
TextBox txtId;
Literal literalTitle;
Literal literalCreatedBy;
Literal literalCreateDate;
Literal literalModifiedBy;
Literal literalModifiedDate;
protected override void CreateChildControls()
{
spSite = SPControl.GetContextSite(Context);
spWeb = spSite.OpenWeb();
Literal literalForId = new Literal();
literalForId.Text = "Id: ";
this.Controls.Add(literalForId);
txtId = new TextBox();
this.Controls.Add(txtId);
literalTitle = new Literal();
this.Controls.Add(literalTitle);
literalCreatedBy = new Literal();
this.Controls.Add(literalCreatedBy);
literalCreateDate = new Literal();
this.Controls.Add(literalCreateDate);
literalModifiedBy = new Literal();
this.Controls.Add(literalModifiedBy);
literalModifiedDate = new Literal();
this.Controls.Add(literalModifiedDate);
Button btnGet = new Button();
btnGet.Text = "Get Item";
btnGet.Click += new EventHandler(btnGet_Click);
this.Controls.Add(btnGet);
}
void btnGet_Click(object sender, EventArgs e)
{
GetItems(Convert.ToInt32(txtId.Text));
}
private void GetItems(int id)
{
SPList spList = spWeb.Lists["MyCustomList"];
SPListItem spListItem = spList.GetItemById(id);
literalTitle.Text = spListItem["Title"].ToString();
literalCreatedBy.Text = spListItem["Created"].ToString();
}
}
}
0 comments:
Post a Comment