Friday, March 2, 2012

Lesson 07: Basic sharepoint object model


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