Friday, March 2, 2012

Lesson 09: Manipulate data for sharepoint object model


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 mi 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).
·        [assemblyAssemblyKeyFile("..\\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, truetrue);

            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