Friday, March 2, 2012

Lesson 08: Advanced 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à MoreObjectModelWebPart
Ø     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 MoreObjectModelWebPart project
Ø     Đổi Class1 thành SPViewWebPart.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
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ả List của site hiện hành đến ddlList
·        Thêm ddlList vào webpart
ddlList = new DropDownList();
            ddlList.AutoPostBack = true;
            ddlList.Load += new EventHandler(ddlList_Load);
            this.Controls.Add(ddlList);

        void ddlList_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                ddlList.Items.Clear();
                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()));
                }
            }
        }
§        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
Literal literalForView = new Literal();
            literalForView.Text = "View: ";
            this.Controls.Add(literalForView);
§        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
ddlView = new DropDownList();
            this.Controls.Add(ddlView);
            ddlList.SelectedIndexChanged += new EventHandler(ddlList_SelectedIndexChanged);

        void ddlList_SelectedIndexChanged(object sender, EventArgs e)
        {
            SPSite spSite = SPControl.GetContextSite(Context);
            ddlView.Items.Clear();
            ShowView(spSite);
        }
       
        private void ShowView(SPSite spSite)
        {
            SPWeb spWeb = spSite.OpenWeb();
            SPListCollection listCollection = spWeb.Lists;
            SPList spList = listCollection[new Guid(ddlList.SelectedValue)];
            ddlView.Items.Clear();
            foreach (SPView spView in spList.Views)
            {
                ddlView.Items.Add(new ListItem(spView.Title, spView.ID.ToString()));
            }
        }
Ø     Thêm SPViewWebPart.dwp
Ø     Build project chế độ Release và Deploy WebPart
§        Copy MoreObjectModelWebPart.dll đến thư mục bin
§        Copy SPViewWebPart.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 MoreObjectModelWebpart

{

    public class SPViewWebPart:WebPart

    {

        DropDownList ddlList;

        DropDownList ddlView;

        protected override void CreateChildControls()

        {

            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)

        {

            SPSite spSite = SPControl.GetContextSite(Context);

            ddlView.Items.Clear();

            ShowView(spSite);

        }

       

        private void ShowView(SPSite spSite)

        {

            SPWeb spWeb = spSite.OpenWeb();

            SPListCollection listCollection = spWeb.Lists;

            SPList spList = listCollection[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 (!Page.IsPostBack)

            {

                ddlList.Items.Clear();

                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 03: Cách tạo View cho List
Ø     Tiếp tục với MoreObjectModelWebPart project
Ø     Thêm mới Class SPViewManagerWebPart.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
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ả List 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)
        {
            if (!Page.IsPostBack)
            {
                ddlList.Items.Clear();
                SPSite spSite = SPControl.GetContextSite(Context);
                SPWeb sqWeb = spSite.OpenWeb();
                foreach (SPList spList in sqWeb.Lists)
                {
                    ddlList.Items.Add(new ListItem(spList.Title, spList.ID.ToString()));
                }
            }           
        }
§        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
Literal literalForView = new Literal();
            literalForView.Text = "View Name: ";
            this.Controls.Add(literalForView);
§        Khai báo và khởi tạo TextBox tên txtView
·        Thêm txtView vào webpart
txtView = new TextBox();
this.Controls.Add(txtView);
§        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
Button btnCreateView = new Button();
            btnCreateView.Text = "Create";
            btnCreateView.Click += new EventHandler(btnCreateView_Click);
            this.Controls.Add(btnCreateView);

        void btnCreateView_Click(object sender, EventArgs e)
        {
            SPSite spSite = SPControl.GetContextSite(Context);
            AddView(spSite);
        }

        private void AddView(SPSite spSite)
        {
            SPWeb spWeb = spSite.OpenWeb();
            SPListCollection listCollection = spWeb.Lists;
            SPList spList = listCollection[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 = "Add View Successfull";
        }
Ø     Thêm SPViewManagerWebPart.dwp
Ø     Build project chế độ Release và Deploy WebPart
§        Copy SPViewManagerWebPart.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 MoreObjectModelWebpart

{

    public class SPViewManagerWebPart:WebPart

    {

        DropDownList ddlList;

        TextBox txtView;

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




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

            btnCreateView.Click += new EventHandler(btnCreateView_Click);

            this.Controls.Add(btnCreateView);

        }




        void btnCreateView_Click(object sender, EventArgs e)

        {

            SPSite spSite = SPControl.GetContextSite(Context);

            AddView(spSite);

        }




        private void AddView(SPSite spSite)

        {

            SPWeb spWeb = spSite.OpenWeb();

            SPListCollection listCollection = spWeb.Lists;

            SPList spList = listCollection[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 = "Add View Successfull";

        }

        void ddlList_Load(object sender, EventArgs e)

        {

            if (!Page.IsPostBack)

            {

                ddlList.Items.Clear();

                SPSite spSite = SPControl.GetContextSite(Context);

                SPWeb sqWeb = spSite.OpenWeb();

                foreach (SPList spList in sqWeb.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 MoreObjectModelWebPart project
Ø     Thêm mới Class SPFieldManagerWebPart.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
Literal literalForList = new Literal();
            literalForList.Text = "List For Field: ";
            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ả List của site hiện hành đến ddlList
·        Thêm ddlList vào webpart
ddlList = new DropDownList();
            ddlList.AutoPostBack = true;
            ddlList.Load += new EventHandler(ddlList_Load);
            this.Controls.Add(ddlList);

        void ddlList_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                ddlList.Items.Clear();
                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()));
                }
            }           
        }
§        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
ddlField = new DropDownList();
            this.Controls.Add(ddlField);
            ddlList.SelectedIndexChanged += new EventHandler(ddlList_SelectedIndexChanged);

        void ddlList_SelectedIndexChanged(object sender, EventArgs e)
        {
            SPSite spSite = SPControl.GetContextSite(Context);
            ShowField(spSite, ddlList.SelectedValue.ToString());
        }

        private void ShowField(SPSite spSite, string listID)
        {
            ddlField.Items.Clear();
            SPWeb spWeb = spSite.OpenWeb();
            SPListCollection spListCollection = spWeb.Lists;
            SPList spList = spListCollection[new Guid(listID)];
            foreach (SPField spField in spList.Fields)
            {
                ddlField.Items.Add(new ListItem(spField.Title, spField.Id.ToString()));
            }
        }
Ø     Thêm SPFieldManagerWebPart.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;




namespace MoreObjectModelWebpart

{

   

    public class SPFieldManagerWebpart:WebPart

    {

        DropDownList ddlList;

        DropDownList ddlField;

        protected override void CreateChildControls()

        {

            Literal literalForList = new Literal();

            literalForList.Text = "List For Field: ";

            this.Controls.Add(literalForList);




            ddlList = new DropDownList();

            ddlList.AutoPostBack = true;

            ddlList.Load += new EventHandler(ddlList_Load);

            this.Controls.Add(ddlList);




            ddlField = new DropDownList();

            this.Controls.Add(ddlField);

            ddlList.SelectedIndexChanged += new EventHandler(ddlList_SelectedIndexChanged);

        }




        void ddlList_SelectedIndexChanged(object sender, EventArgs e)

        {

            SPSite spSite = SPControl.GetContextSite(Context);

            ShowField(spSite, ddlList.SelectedValue.ToString());

        }




        private void ShowField(SPSite spSite, string listID)

        {

            ddlField.Items.Clear();

            SPWeb spWeb = spSite.OpenWeb();

            SPListCollection spListCollection = spWeb.Lists;

            SPList spList = spListCollection[new Guid(listID)];

            foreach (SPField spField in spList.Fields)

            {

                ddlField.Items.Add(new ListItem(spField.Title, spField.Id.ToString()));

            }

        }




        void ddlList_Load(object sender, EventArgs e)

        {

            if (!Page.IsPostBack)

            {

                ddlList.Items.Clear();

                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 05: Cách lấy dữ liêuh từ SPList
Ø     Tiếp tục với MoreObjectModelWebPart project
Ø     Thêm mới Class SPListItemWebPart.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
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ả List của site hiện hành đến ddlList
·        Thêm ddlList vào webpart
ddlListForData = new DropDownList();
            ddlListForData.AutoPostBack = true;
            ddlListForData.Load += new EventHandler(ddlListForData_Load);
            this.Controls.Add(ddlListForData);

        void ddlListForData_Load(object sender, EventArgs e)
        {
           
                SPSite spSite = SPControl.GetContextSite(Context);
                SPWeb spWeb = spSite.OpenWeb();
                foreach (SPList spList in spWeb.Lists)
                {
                    ddlListForData.Items.Add(new ListItem(spList.Title, spList.ID.ToString()));
                }                       
        }
§        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
            ddlListForData.SelectedIndexChanged += new EventHandler(ddlListForData_SelectedIndexChanged);
            spGridView = new SPGridView();
            spGridView.AutoGenerateColumns = false;
            spGridView.GridLines = GridLines.Both;
            spGridView.BackColor = Color.Azure;
            spGridView.ForeColor = Color.Red;

        void ddlListForData_SelectedIndexChanged(object sender, EventArgs e)
        {
            spGridView.Columns.Clear();
            try
            {
                SPSite spSite = SPControl.GetContextSite(Context);
                // literalError.Text += ShowDataTable(spSite);

                ShowDataTable(spSite);
            }
            catch (Exception ex)
            {
            }
        }

        private void ShowDataTable(SPSite spSite)
        {
            try
            {
                SPWeb spWeb = spSite.OpenWeb();
               
                SPList spList = spWeb.Lists[new Guid(ddlListForData.SelectedValue)];
                SPView spView = spList.DefaultView;
               
                spGridView.Columns.Clear();
                spBoundField = new SPBoundField();
                spBoundField.HeaderText = "EmployeeId";
                spBoundField.DataField = "EmployeeId";
                spBoundField.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
                spBoundField.ItemStyle.Wrap = false;
                spGridView.Columns.Add(spBoundField);
                this.Controls.Add(spGridView);

               
                spBoundField = new SPBoundField();
                spBoundField.HeaderText = "FirstName";
                spBoundField.DataField = "FirstName";
                spBoundField.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
                spBoundField.ItemStyle.Wrap = false;
                spGridView.Columns.Add(spBoundField);
                this.Controls.Add(spGridView);

                spBoundField = new SPBoundField();
                spBoundField.HeaderText = "LastName";
                spBoundField.DataField = "LastName";
                spBoundField.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
                spBoundField.ItemStyle.Wrap = false;
                spGridView.Columns.Add(spBoundField);
                this.Controls.Add(spGridView);

                SPDataSource spDataSource = new SPDataSource();
                spDataSource.List = spList;
                spGridView.DataSource = spDataSource;
                spGridView.DataBind();
            }
            catch (Exception ex)
            {
            }
        }
Ø     Thêm SPListItemWebPart.dwp
Ø     Build project chế độ Release và Deploy WebPart
§        Copy SPListItemWebPart.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.Drawing;




namespace MoreObjectModelWebpart

{




    public class SPListItemWebPart:WebPart

    {

        DropDownList ddlListForData;

        SPGridView spGridView;

        SPBoundField spBoundField;

        protected override void CreateChildControls()

        {

            Literal literalForList = new Literal();

            literalForList.Text = "List:";

            this.Controls.Add(literalForList);




            ddlListForData = new DropDownList();

            ddlListForData.AutoPostBack = true;

            ddlListForData.Load += new EventHandler(ddlListForData_Load);

            this.Controls.Add(ddlListForData);

            ddlListForData.SelectedIndexChanged += new EventHandler(ddlListForData_SelectedIndexChanged);







            spGridView = new SPGridView();

            spGridView.AutoGenerateColumns = false;

            spGridView.GridLines = GridLines.Both;

            spGridView.BackColor = Color.Azure;

            spGridView.ForeColor = Color.Red;




           

        }




        void ddlListForData_SelectedIndexChanged(object sender, EventArgs e)

        {

            spGridView.Columns.Clear();

            try

            {

                SPSite spSite = SPControl.GetContextSite(Context);

                // literalError.Text += ShowDataTable(spSite);




                ShowDataTable(spSite);

            }

            catch (Exception ex)

            {

            }

        }




        private void ShowDataTable(SPSite spSite)

        {

            try

            {

                SPWeb spWeb = spSite.OpenWeb();




               

                SPList spList = spWeb.Lists[new Guid(ddlListForData.SelectedValue)];

                SPView spView = spList.DefaultView;

               

                spGridView.Columns.Clear();

                spBoundField = new SPBoundField();

                spBoundField.HeaderText = "EmployeeId";

                spBoundField.DataField = "EmployeeId";

                spBoundField.ItemStyle.HorizontalAlign = HorizontalAlign.Center;

                spBoundField.ItemStyle.Wrap = false;

                spGridView.Columns.Add(spBoundField);

                this.Controls.Add(spGridView);




               

                spBoundField = new SPBoundField();

                spBoundField.HeaderText = "FirstName";

                spBoundField.DataField = "FirstName";

                spBoundField.ItemStyle.HorizontalAlign = HorizontalAlign.Center;

                spBoundField.ItemStyle.Wrap = false;

                spGridView.Columns.Add(spBoundField);

                this.Controls.Add(spGridView);




                spBoundField = new SPBoundField();

                spBoundField.HeaderText = "LastName";

                spBoundField.DataField = "LastName";

                spBoundField.ItemStyle.HorizontalAlign = HorizontalAlign.Center;

                spBoundField.ItemStyle.Wrap = false;

                spGridView.Columns.Add(spBoundField);

                this.Controls.Add(spGridView);




                SPDataSource spDataSource = new SPDataSource();

                spDataSource.List = spList;

                spGridView.DataSource = spDataSource;

                spGridView.DataBind();

            }

            catch (Exception ex)

            {

            }

        }




        void ddlListForData_Load(object sender, EventArgs e)

        {

           

                SPSite spSite = SPControl.GetContextSite(Context);

                SPWeb spWeb = spSite.OpenWeb();

                foreach (SPList spList in spWeb.Lists)

                {

                    ddlListForData.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 MoreObjectModelWebPart project
Ø     Thêm mới Class AddSPListItemWebPart.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
Literal literalForList = new Literal();
            literalForList.Text = "Title: ";
            this.Controls.Add(literalForList);
§        Khai báo và khởi tạo TextBox tên  txtTitle
·        Thêm txtTitle vào webpart
txtTitle = new TextBox();
            this.Controls.Add(txtTitle);
§        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
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)
        {
            SPSite spSite = SPControl.GetContextSite(Context);
            AddListItem(spSite);
        }
        private void AddListItem(SPSite spSite)
        {
            try
            {
                using (SPWeb spWeb = spSite.OpenWeb())
                {
                    SPList splist = spWeb.Lists["MyCustomList"];
                    SPListItemCollection spListItemCollection = splist.Items;
                    SPListItem item = spListItemCollection.Add();
                    item["OfficeID"] = txtTitle.Text;
                    item["OfficeName"] = txtTitle.Text;
                    item.Update();
                }
            }
            catch (Exception ex)
            {

            }
        }
Ø     Build project chế độ Release và Deploy WebPart
Ø     Quay lại sharepoint site
§        Refesh WebPart này
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;

using System.Drawing;




namespace MoreObjectModelWebpart

{

    public class AddSPListViewWebPart : WebPart

    {

        TextBox txtTitle;

        protected override void CreateChildControls()

        {

            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)

        {

            SPSite spSite = SPControl.GetContextSite(Context);

            AddListItem(spSite);

        }

        private void AddListItem(SPSite spSite)

        {

            try

            {

                using (SPWeb spWeb = spSite.OpenWeb())

                {

                    SPList splist = spWeb.Lists["MyCustomList"];

                    SPListItemCollection spListItemCollection = splist.Items;

                    SPListItem item = spListItemCollection.Add();

                    item["OfficeID"] = txtTitle.Text;

                    item["OfficeName"] = txtTitle.Text;

                    item.Update();

                }

            }

            catch (Exception ex)

            {







            }




        }

    }




}
v    Exercise 07: Cách cập nhật list item vào SPList
Ø     Tiếp tục với MoreObjectModelWebPart project
Ø     Thêm mới Class UpdateSPListItemWebPart.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
Literal literalForList = new Literal();
            literalForList.Text = "Title: ";
            this.Controls.Add(literalForList);
§        Khai báo và khởi tạo TextBox tên  txtTitle
·        Thêm txtTitle vào webpart
txtTitle = new TextBox();
            this.Controls.Add(txtTitle);
txtName = new TextBox();
            this.Controls.Add(txtName);
§        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
Button btnUpdate = new Button();
            btnUpdate.Text = "Update";
            btnUpdate.Click += new EventHandler(btnUpdate_Click);
            this.Controls.Add(btnUpdate);

       void btnUpdate_Click(object sender, EventArgs e)
        {
            SPSite spSite = SPControl.GetContextSite(Context);
            UpdateListItem(spSite);
        }

        private void UpdateListItem(SPSite spSite)
        {
            using (SPWeb spWeb=spSite.OpenWeb())
            {
                SPList spList = spWeb.Lists["MyCustomList"];
                SPListItemCollection spListItemCollection = spList.Items;
                for (int i = 0; i < spListItemCollection.Count; i++)
                {
                    SPListItem spListItem = spListItemCollection[i];
                    if (spListItem["OfficeID"].ToString()==txtTitle.Text)
                    {
                        spListItem["OfficeName"] = txtName.Text;
                        spListItem.Update();
                    }
                }

            }
        }
Ø     Thêm UpdateSPListItemWebPart.dwp
Ø     Build project chế độ Release và Deploy WebPart
§        Copy UpdateSPListItemWebPart.dwp đến thư mục wpcatalog
Ø     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;

using System.Drawing;




namespace MoreObjectModelWebpart

{

    public class UpdateSPListItemWebPart:WebPart

    {

        TextBox txtTitle;

        TextBox txtName;

        protected override void CreateChildControls()

        {

            Literal literalForList = new Literal();

            literalForList.Text = "Title: ";

            this.Controls.Add(literalForList);




            txtTitle = new TextBox();

            this.Controls.Add(txtTitle);




            txtName = new TextBox();

            this.Controls.Add(txtName);




            Button btnUpdate = new Button();

            btnUpdate.Text = "Update";

            btnUpdate.Click += new EventHandler(btnUpdate_Click);

            this.Controls.Add(btnUpdate);

        }




        void btnUpdate_Click(object sender, EventArgs e)

        {

            SPSite spSite = SPControl.GetContextSite(Context);

            UpdateListItem(spSite);

        }




        private void UpdateListItem(SPSite spSite)

        {

            using (SPWeb spWeb=spSite.OpenWeb())

            {

                SPList spList = spWeb.Lists["MyCustomList"];

                SPListItemCollection spListItemCollection = spList.Items;

                for (int i = 0; i < spListItemCollection.Count; i++)

                {

                    SPListItem spListItem = spListItemCollection[i];

                    if (spListItem["OfficeID"].ToString()==txtTitle.Text)

                    {

                        spListItem["OfficeName"] = txtName.Text;

                        spListItem.Update();

                    }

                }




            }

        }




    }

}
v    Exercise 08: Cách xóa list item của SPList
v    Exercise 09: Cách lấy 1 list item của SPList

0 comments:

Post a Comment