Thursday, February 5, 2015

SharePoint Site title update by using JavaScript

SharePoint Site title update by using JavaScript
<script language="javascript" type="text/javascript">
// <![CDATA[

     //Ensure the Client Object Model is ready before you use it
    ExecuteOrDelayUntilScriptLoaded(GetTitle, "sp.js");

    function Button1_onclick() {
    //Update the site's Title property   
        site.set_title(document.getElementById("Text1").value);
        //  site.update();
        site.update();
        // addd the site to Query queue       
        context.load(site);

        //Run the Query on the server     
        context.executeQueryAsync(onTitleUpdate, onQueryFailed);
    }
 
    function onTitleUpdate() {
        alert('Title has been changed');
             //Refresh the page
               SP.UI.ModalDialog.RefreshPage(SP.UI.DialogResult.OK);
    }

   var site; var context;
   function GetTitle() {
   //Get the current client context
    context = SP.ClientContext.get_current();
    //Add the site to query queue
    site = context.get_web();
    context.load(site);
    //Run the query on the server
    context.executeQueryAsync(onQuerySucceeded, onQueryFailed); }


function onQueryFailed(sender, args) {
        alert('Request failed' + args.get_message() + '\n' + ar.get_stackTrace());
    }

    function onQuerySucceeded(sender, args) {
        document.getElementById("Text1").value = site.get_title();
    }
// ]]>
</script>

<p>
    <input id="Text1" type="text" /></p>
<p>
    <input id="Button1" type="button" value="button" onclick="return Button1_onclick()" /></p>

Tuesday, February 3, 2015

Some of SharePoint Basic operations

           SharePoint Basic operations




1.Adding Data to List from Text File:

            SPWeb web = new SPSite("http://RKU:9870").OpenWeb();
            web.AllowUnsafeUpdates = true;
            SPList CusList = web.Lists["CusList"];
            SPListItem item;
            StreamReader reader = new StreamReader("C:\\Documents and Settings\\Administrator\\Desktop\\CusList.txt");
            while (reader.Peek() != -1)
            {
                item = CusList.Items.Add();
                item["One"] = reader.ReadLine();
                item["FName"] = reader.ReadLine();
                item["LName"] = reader.ReadLine();
                item["No"] = reader.ReadLine();
                item.Update();
            }


2.Displays data from CustListDesinger- 5141 :

            SPWeb Web = new SPSite("http://RKU:9870/").OpenWeb();
            SPList List = Web.Lists["CustListDesinger"];
           
            SPQuery spq=new SPQuery();
            spq.Query="Select * from CustListDesinger";
            SPListItemCollection Items = List.GetItems(spq);
            DataTable dt = new DataTable();
            dt = Items.GetDataTable();
            GridView1.DataSource = dt;
            GridView1.DataBind();

3.Adding data to CustListDesinger-5141 :

            SPWeb Web = new SPSite("http://RKU:9870/").OpenWeb();
            SPList List = Web.Lists["CustListDesinger"];
           
            Web.AllowUnsafeUpdates = true;

            // **** To add Item **** //
            SPListItem LItem = List.Items.Add();
            LItem["FName"] = txtFNmae.Text;
            LItem["LName"] = txtLName.Text;
            LItem["No"] = txtNo.Text;
            LItem.Update();
            List.Update();
            Web.Update();

4.Display data from CandInfo Document Library:

            SPWeb Web = new SPSite("http://RKU:9870/").OpenWeb();
            SPList List = Web.Lists["CandInfo"];

            SPQuery spq = new SPQuery();
            spq.Query = "Select * from CandInfo";
            SPListItemCollection Items = List.GetItems(spq);
            DataTable dt = new DataTable();
            dt = Items.GetDataTable();
            gvCandInfoDisplay.DataSource = dt;
            gvCandInfoDisplay.DataBind();

5.Display data from CandInfo Document Library using CAML Query:

            SPWeb Web = new SPSite("http://RKU:9870/").OpenWeb();
            SPList List = Web.Lists["CustListDesinger"];

            SPQuery spq = new SPQuery();
            spq.Query = "<OrderBy><FieldRef Name='Title' /></OrderBy><Where><Gt><FieldRef Name='No' /><Value Type='Number'>120</Value></Gt></Where>";
            SPListItemCollection Items = List.GetItems(spq);
            DataTable dt = new DataTable();
            dt = Items.GetDataTable();
            gvCaml.DataSource = dt;
            gvCaml.DataBind();

6.Calculate avg of No Column in CusList:

            SPWeb web = new SPSite("http://RKU:9870").OpenWeb();
            SPList CusList = web.Lists["CusList"];
            double total = 0;
            foreach (SPListItem item in CusList.Items)
            {
                //Console.WriteLine("Title : {0}", item["Title"]);
                //Console.WriteLine("Price : {0}", item["Price"]);
                total += (double)item["No"];
            }
            double Avg = total / CusList.Items.Count;
            lblAvg.Text = Avg.ToString();

7.Creating Sub Sites(Pages) and adding to QuickLunchBar:

          Using System.IO;
          Using System.Shareoint.Navigation;

             SPWeb web = new SPSite("http://RKU:9870").OpenWeb();
            web.AllowUnsafeUpdates = true;
            MemoryStream stream;
            StreamWriter writer;
            StreamReader reader;

            stream = new MemoryStream();
            writer = new StreamWriter(stream);
            reader = new StreamReader("C:\\Documents and Settings\\Administrator\\Desktop\\SharePoint Program Examples\\csharp.aspx");
            writer.Write(reader.ReadToEnd());
            writer.Flush();
            web.Files.Add("csharp.aspx", stream, true);
            writer.Close();
            reader.Close();

            stream = new MemoryStream();
            writer = new StreamWriter(stream);
            reader = new StreamReader("C:\\Documents and Settings\\Administrator\\Desktop\\SharePoint Program Examples\\vbnet.aspx");
            writer.Write(reader.ReadToEnd());
            writer.Flush();
            web.Files.Add("vbnet.aspx", stream, true);
            writer.Close();
            reader.Close();

            stream = new MemoryStream();
            writer = new StreamWriter(stream);
            reader = new StreamReader("C:\\Documents and Settings\\Administrator\\Desktop\\SharePoint Program Examples\\aspnet.aspx");
            writer.Write(reader.ReadToEnd());
            writer.Flush();
            web.Files.Add("aspnet.aspx", stream, true);
            writer.Close();
            reader.Close();

            SPNavigationNode dropdownMenu =
            new SPNavigationNode("Course Materials", "");
            SPNavigationNodeCollection quickLaunch =
                web.Navigation.QuickLaunch;
            quickLaunch.AddAsLast(dropdownMenu);
            dropdownMenu.Children.AddAsLast(
             new SPNavigationNode
            ("Csharp", "csharp.aspx"));

            dropdownMenu.Children.AddAsLast(
                new SPNavigationNode
                ("VB.Net", "vbnet.aspx"));

            dropdownMenu.Children.AddAsLast(
                new SPNavigationNode
                ("ASP.Net", "aspnet.aspx"));

8.Creating List=Navigation and add one link=home:

            SPWeb web = new SPSite
                ("http://RKU:9870").OpenWeb();
            System.Guid NewListGuid = new System.Guid();
            SPList list = null;
            // THIS IS REQUIRED WHEN CREATING NEW LISTS!!
            web.AllowUnsafeUpdates = true;
            // Create the list in SharePoint:
            NewListGuid = web.Lists.Add("Navigation Page List",
            "List used to provide Custom Navigation",
            SPListTemplateType.GenericList);
            list = web.Lists[NewListGuid];
            list.OnQuickLaunch = true;
            list.Update();
            // Rename the title field:
            SPField TitleField = list.Fields["Title"];
            TitleField.Description = "Title to appear in Navigation";
            TitleField.Update();
            // Add Link Field:
            list.Fields.Add("Link", SPFieldType.URL, true);
            SPField LinkField = list.Fields["Link"];
            LinkField.Description = "Relative Link and Tool Tip";
            LinkField.ShowInEditForm = true;
            LinkField.ShowInDisplayForm = true;
            LinkField.ShowInListSettings = true;
            LinkField.ShowInViewForms = true;
            LinkField.Update();
            // Add Appearance Order Field:
            list.Fields.Add("Appearance Order", SPFieldType.Number, true);
            SPField AppearanceOrderField = list.Fields["Appearance Order"];
            AppearanceOrderField.Description = "Order to display";
            AppearanceOrderField.ShowInEditForm = true;
            AppearanceOrderField.ShowInDisplayForm = true;
            AppearanceOrderField.ShowInListSettings = true;
            AppearanceOrderField.ShowInViewForms = true;
            AppearanceOrderField.Update();
            // Add Publish Date Field:
            list.Fields.Add("Publish Date", SPFieldType.DateTime, false);
            SPFieldDateTime PublishDateF =
            (SPFieldDateTime)list.Fields["Publish Date"];
            PublishDateF.Description = "Date to publish (show)";
            PublishDateF.DefaultValue = "[today]";
            PublishDateF.DisplayFormat = SPDateTimeFieldFormatType.DateOnly;
            PublishDateF.ShowInEditForm = true;
            PublishDateF.ShowInDisplayForm = true;
            PublishDateF.ShowInListSettings = true;
            PublishDateF.ShowInViewForms = true;
            // NOWCRAWL means don’t search this field!
            PublishDateF.NoCrawl = true;
            PublishDateF.Update();
            // Add Stop Publish Date Field:
            list.Fields.Add("Stop Publish Date", SPFieldType.DateTime, false);
            SPFieldDateTime StopPublishDateF =
            (SPFieldDateTime)list.Fields["Stop Publish Date"];
            StopPublishDateF.Description = "Date to remove";
            StopPublishDateF.DisplayFormat = SPDateTimeFieldFormatType.DateOnly;
            StopPublishDateF.ShowInEditForm = true;
            StopPublishDateF.ShowInDisplayForm = true;
            StopPublishDateF.ShowInListSettings = true;
            StopPublishDateF.ShowInViewForms = true;
            // NOWCRAWL means don’t search this field!
            StopPublishDateF.NoCrawl = true;
            StopPublishDateF.Update();
            //
            // Add the Columns (fields) to the default view:
            SPView DefView = list.DefaultView;
            DefView.ViewFields.Add(LinkField);
            DefView.ViewFields.Add(AppearanceOrderField);
            DefView.ViewFields.Add(PublishDateF);
            DefView.ViewFields.Add(StopPublishDateF);
            DefView.Update();
            //
            // Now add an item:
            SPListItem NewItem = list.Items.Add();
            //
            NewItem["Title"] = "Home";
            NewItem["Link"] =
            web.ServerRelativeUrl.ToString() + ", " + web.Title;
            NewItem["Appearance Order"] = 0;
            NewItem["Publish Date"] = System.DateTime.Today.AddDays(-1);
            NewItem["Stop Publish Date"] = null;
            NewItem.Update();

9.Creating EmpInfoList and Adding one Item:
           
            SPWeb Web = new SPSite("http://RKU:9870").OpenWeb();
            Web.AllowUnsafeUpdates = true;
            // Creating EmpInfoList, here GenericList means Custom List
            System.Guid NewListGuid = new System.Guid();
            SPList List = null;
            NewListGuid=Web.Lists.Add("EmpInfoList","This is Employee List",SPListTemplateType.GenericList);
            List = Web.Lists[NewListGuid];
            List.OnQuickLaunch = true;
            List.Update();

            // Rename the title field:
            SPField TitleField = List.Fields["Title"];
            TitleField.Description = "Title to appear in Navigation";
            TitleField.Update();

            //Add EmpName Field
            List.Fields.Add("EmpName", SPFieldType.Text, true);
            SPField EmpNameField = List.Fields["EmpName"];
            EmpNameField.Description = "Employee Name";
            EmpNameField.ShowInDisplayForm = true;
            EmpNameField.ShowInEditForm = true;
            EmpNameField.ShowInListSettings = true;
            EmpNameField.ShowInViewForms = true;
            List.Update();

            //Add Number Field
            List.Fields.Add("Number", SPFieldType.Integer, true);
            SPField EmpNumberField = List.Fields["Number"];
            EmpNumberField.Description = "Employee Number";
            EmpNumberField.ShowInDisplayForm = true;
            EmpNumberField.ShowInEditForm = true;
            EmpNumberField.ShowInListSettings = true;
            EmpNumberField.ShowInViewForms = true;
            List.Update();

            //Add BOD Field
            List.Fields.Add("BOD", SPFieldType.DateTime, false);
            SPFieldDateTime EmpBODField = (SPFieldDateTime)List.Fields["BOD"];
            EmpBODField.Description = "Employee BOD";
            EmpBODField.DefaultValue = "[today]";
            EmpBODField.DisplayFormat = SPDateTimeFieldFormatType.DateOnly;
            EmpBODField.ShowInDisplayForm = true;
            EmpBODField.ShowInEditForm = true;
            EmpBODField.ShowInListSettings = true;
            EmpBODField.ShowInViewForms = true;
            EmpBODField.NoCrawl = true;
            List.Update();

            //Add Salary Field
            List.Fields.Add("Salary", SPFieldType.Number, false);
            SPField EmpSalField = List.Fields["Salary"];
            EmpSalField.Description = "Employee Salary";
            EmpSalField.ShowInDisplayForm = true;
            EmpSalField.ShowInEditForm = true;
            EmpSalField.ShowInListSettings = true;
            EmpSalField.ShowInViewForms = true;
            List.Update();

            // Add Columns to Default View
            SPView DefView = List.DefaultView;
            DefView.ViewFields.Add(EmpNameField);
            DefView.ViewFields.Add(EmpNumberField);
            DefView.ViewFields.Add(EmpBODField);
            DefView.Update();

            //Add a Item to List
            SPListItem newItem = List.Items.Add();
            newItem["Title"] = "Nag Title";
            newItem["EmpName"] = "Nag";
            newItem["Number"] = "141";
            newItem["BOD"] = System.DateTime.Today.AddDays(-1);
            newItem["Salary"] = "1000";
            newItem.Update();
            List.Update();

10. Event Receiver Example 1:

Class Library :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;

namespace ERListExample1
{
    public class CusListEventReceiver : SPListEventReceiver
    {
        public override void FieldAdding(SPListEventProperties properties)
        {
            properties.ErrorMessage = "You cannot change this list schema!";
            properties.Cancel = true;
        }
        public override void FieldUpdating(SPListEventProperties properties)
        {
            properties.ErrorMessage = "You cannot change this list schema!";
            properties.Cancel = true;
        }
        public override void FieldDeleting(SPListEventProperties properties)
        {
            properties.ErrorMessage = "You cannot change this list schema!";
            properties.Cancel = true;
        }
    }
}

To Deploy Programatically:
using System;
using Microsoft.SharePoint;
namespace EventHandlerExample2DeployProgrammatically
{
    class Program
    {
        static void Main(string[] args)
        {
            SPWeb webSite = new SPSite("http://RKU:9870").OpenWeb();
            SPList theList = webSite.Lists["CusList"];
            theList.EventReceivers.Add(SPEventReceiverType.FieldAdding,
                "EventHandlerExample2,Version=1.0.0.0,Culture=neutral,PublicKeyToken=8b788521338931a6",
                "EventHandlerExample2.TasksListEventReceiver");
            theList.EventReceivers.Add(SPEventReceiverType.FieldDeleting,
                 "EventHandlerExample2,Version=1.0.0.0,Culture=neutral,PublicKeyToken=8b788521338931a6",
                 "EventHandlerExample2.TasksListEventReceiver");
            theList.EventReceivers.Add(SPEventReceiverType.FieldUpdating,
                 "EventHandlerExample2,Version=1.0.0.0,Culture=neutral,PublicKeyToken=8b788521338931a6",
                 "EventHandlerExample2.TasksListEventReceiver");
           
        }
    }
}

11. Store data from sql to SharePoint List:

using System.Data;
using System.Data.SqlClient;

            SPWeb web = new SPSite("http://RKU:9870").OpenWeb();
            web.AllowUnsafeUpdates = true;
            SPList clientsList = web.Lists["CusList"];
            SPListItem item;
            SqlConnection myCon = new SqlConnection(@"Data Source=MOSS07;Initial Catalog=testDB;Persist Security Info=True;User ID=sa;Password=Welcome141");
            SqlCommand myCom = new SqlCommand("Select Name, NO from test1", myCon);
            myCon.Open();
            SqlDataReader reader = myCom.ExecuteReader();
            while (reader.Read())
            {
                item = clientsList.Items.Add();
                item["One"] = "ONE";
                item["FName"] = reader["Name"];
                item["LName"] = reader["Name"];
                item["No"] = reader["NO"];
                item.Update();
            }
            reader.Close();
            myCon.Close();

12. Creating Document Library with Name=CandDocLib:

            SPWeb Web = new SPSite("http://RKU:9870").OpenWeb();
            Web.AllowUnsafeUpdates = true;
            // Creating EmpInfoList, here GenericList means Custom List
            System.Guid NewListGuid = new System.Guid();
            SPList List = null;
            NewListGuid = Web.Lists.Add("CandDocLib", "This is Candidate Document Library", SPListTemplateType.DocumentLibrary);
            List = Web.Lists[NewListGuid];
            List.OnQuickLaunch = true;
            List.Update();

            // Rename the title field:
            SPField TitleField = List.Fields["Title"];
            TitleField.Description = "Title to appear in Navigation";
            TitleField.Update();

            //Add CandNameField
            List.Fields.Add("CandName", SPFieldType.Text, true);
            SPField EmpNameField = List.Fields["CandName"];
            EmpNameField.Description = "Candidate Name";
            EmpNameField.ShowInDisplayForm = true;
            EmpNameField.ShowInEditForm = true;
            EmpNameField.ShowInListSettings = true;
            EmpNameField.ShowInViewForms = true;
            List.Update();

            //Add CandNumberField
            List.Fields.Add("CandNumber", SPFieldType.Integer, true);
            SPField EmpNumberField = List.Fields["CandNumber"];
            EmpNumberField.Description = "Candidate Number";
            EmpNumberField.ShowInDisplayForm = true;
            EmpNumberField.ShowInEditForm = true;
            EmpNumberField.ShowInListSettings = true;
            EmpNumberField.ShowInViewForms = true;
            List.Update();

            //Add BOD Field
            List.Fields.Add("BOD", SPFieldType.DateTime, false);
            SPFieldDateTime EmpBODField = (SPFieldDateTime)List.Fields["BOD"];
            EmpBODField.Description = "Candidate BOD";
            EmpBODField.DefaultValue = "[today]";
            EmpBODField.DisplayFormat = SPDateTimeFieldFormatType.DateOnly;
            EmpBODField.ShowInDisplayForm = true;
            EmpBODField.ShowInEditForm = true;
            EmpBODField.ShowInListSettings = true;
            EmpBODField.ShowInViewForms = true;
            EmpBODField.NoCrawl = true;
            List.Update();


            // Add Columns to Default View
            SPView DefView = List.DefaultView;
            DefView.ViewFields.Add(EmpNameField);
            DefView.ViewFields.Add(EmpNumberField);
            DefView.ViewFields.Add(EmpBODField);
            DefView.Update();

            ////Add a Item to List
            //SPListItem newItem = List.Items.Add();
            //newItem["Title"] = "Nag Title";
            //newItem["EmpName"] = "Nag";
            //newItem["Number"] = "141";
            //newItem["BOD"] = System.DateTime.Today.AddDays(-1);
            //newItem["Salary"] = "1000";
            //newItem.Update();
            List.Update();

13. Event Receiver for Validating Phone Number and Convert Title Field to UpperCase and Restrict to Delete data if he is not Admin:

using Microsoft.SharePoint;
namespace EventHandlerExample3
{
    class CustomersItemEventReceiver:SPItemEventReceiver
    {
        // provide method with validation logic
        private bool PhoneIsValid(string Phone)
        {
            if ((Phone == null) || (Phone.Length < 10))
                return false;
            else
                return true;
        }
        // provide error message
        const string PhoneInvalidErrorMessage =
              "VALIDATION ERROR: Phone must be at least 10 digits.";
        public override void ItemAdding(SPItemEventProperties properties)
        {
            // validate Phone column for new customer item
            string Phone = properties.AfterProperties["Phone"].ToString();
            if (!PhoneIsValid(Phone))
            {
                properties.Status = SPEventReceiverStatus.CancelWithError;
                properties.ErrorMessage = PhoneInvalidErrorMessage;
                properties.Cancel = true;
            }
        }
        public override void ItemUpdating(SPItemEventProperties properties)
        {
            // validate Phone column for update to customer item
            string Phone = properties.AfterProperties["Phone"].ToString();
            if (!PhoneIsValid(Phone))
            {
                properties.Status = SPEventReceiverStatus.CancelWithError;
                properties.ErrorMessage = PhoneInvalidErrorMessage;
                properties.Cancel = true;
            }
        }
        public override void ItemAdded(SPItemEventProperties properties)
        {
            DisableEventFiring();
            string Title = properties.ListItem["Title"].ToString();
            properties.ListItem["Title"] = Title.ToUpper();
            properties.ListItem.Update();
            EnableEventFiring();
        }
        public override void ItemUpdated(SPItemEventProperties properties)
        {
            DisableEventFiring();
            string Title = properties.ListItem["Title"].ToString();
            properties.ListItem["Title"] = Title.ToUpper();
            properties.ListItem.Update();
            EnableEventFiring();
        }
        public override void ItemDeleting(SPItemEventProperties properties)
        {
            if (!properties.OpenWeb().CurrentUser.IsSiteAdmin)
            {
                properties.Status = SPEventReceiverStatus.CancelWithError;
                properties.ErrorMessage = "Customer can only be deleted by site administrator";
                properties.Cancel = true;
            }
        }
    }
}

To Deploy :

using Microsoft.SharePoint;
namespace EventHandlerExample3DeployProgrammatically
{
    class Program
    {
        static void Main(string[] args)
        {
            SPWeb webSite = new SPSite("http://intanet.com").OpenWeb();
            SPList theList = webSite.Lists["Customers"];
            theList.EventReceivers.Add(SPEventReceiverType.ItemAdded,
                "EventHandlerExample3,Version=1.0.0.0,Culture=neutral,PublicKeyToken=be792ae89c60d497",
                "EventHandlerExample3.CustomersItemEventReceiver");
            theList.EventReceivers.Add(SPEventReceiverType.ItemAdding,
                "EventHandlerExample3,Version=1.0.0.0,Culture=neutral,PublicKeyToken=be792ae89c60d497",
                "EventHandlerExample3.CustomersItemEventReceiver");
            theList.EventReceivers.Add(SPEventReceiverType.ItemUpdated,
                "EventHandlerExample3,Version=1.0.0.0,Culture=neutral,PublicKeyToken=be792ae89c60d497",
                "EventHandlerExample3.CustomersItemEventReceiver");
            theList.EventReceivers.Add(SPEventReceiverType.ItemUpdating,
                "EventHandlerExample3,Version=1.0.0.0,Culture=neutral,PublicKeyToken=be792ae89c60d497",
                "EventHandlerExample3.CustomersItemEventReceiver");
            theList.EventReceivers.Add(SPEventReceiverType.ItemDeleting,
                "EventHandlerExample3,Version=1.0.0.0,Culture=neutral,PublicKeyToken=be792ae89c60d497",
                "EventHandlerExample3.CustomersItemEventReceiver");
        }
    }
}

14.Event Receiver for calculating discount based on Price

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
namespace EventHandlerExample4
{
    public class ProductsItemEventReceiver:SPItemEventReceiver
    {
        public override void ItemAdded(SPItemEventProperties properties)
        {
            DisableEventFiring();
            double price = (double)properties.ListItem["Price"];
            if (price <= 1000)
                properties.ListItem["Discount"] = 0.1;
            else
                properties.ListItem["Discount"] = 0.15;
            properties.ListItem.Update();
            EnableEventFiring();

        }
        public override void ItemUpdated(SPItemEventProperties properties)
        {
            DisableEventFiring();
            double price = (double)properties.ListItem["Price"];
            if (price <= 1000)
                properties.ListItem["Discount"] = 0.1;
            else
                properties.ListItem["Discount"] = 0.15;
            properties.ListItem.Update();
            EnableEventFiring();
        }
    }
}

To Deploy :

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
namespace EventHandlerExample4DeployProgrammatically
{
    class Program
    {
        static void Main(string[] args)
        {
            SPWeb webSite = new SPSite("http://intanet.com").OpenWeb();
            SPList theList = webSite.Lists["Products"];
            theList.EventReceivers.Add(SPEventReceiverType.ItemAdded,
                "EventHandlerExample4,Version=1.0.0.0,Culture=neutral,PublicKeyToken=81eb34befd3bc9b4",
                "EventHandlerExample4.ProductsItemEventReceiver");
            theList.EventReceivers.Add(SPEventReceiverType.ItemUpdated,
                "EventHandlerExample4,Version=1.0.0.0,Culture=neutral,PublicKeyToken=81eb34befd3bc9b4",
                "EventHandlerExample4.ProductsItemEventReceiver");
      
        }
    }
}

15. Code for Web Part:

using System;
using System.Runtime.InteropServices;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;

using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;

namespace KNRaoWPExample4
{
    [Guid("e2002c61-a873-4409-ad84-96c88f43f721")]
    public class LoanCalculator : System.Web.UI.WebControls.WebParts.WebPart
    {
        protected override void OnPreRender(EventArgs e)
        {
            this.Title = "Loan Calculator";
            this.Description = "Calculates monthly loan payment amount";
        }
        TextBox txtAmount, txtPeriod, txtInterestRate, txtMonthlyPayment;
        Button btnCalculateMonthlyPayment;
        public LoanCalculator(){}
        protected override void CreateChildControls()
        {
            txtAmount = new TextBox();
            this.Controls.Add(txtAmount);
            txtPeriod = new TextBox();
            this.Controls.Add(txtPeriod);
            txtInterestRate = new TextBox();
            this.Controls.Add(txtInterestRate);
            txtMonthlyPayment = new TextBox();
            txtMonthlyPayment.ReadOnly = true;
            this.Controls.Add(txtMonthlyPayment);
            btnCalculateMonthlyPayment = new Button();
            btnCalculateMonthlyPayment.Text = "Calculate Monthly Payment";
            btnCalculateMonthlyPayment.Click += new EventHandler(btnCalculateMonthlyPayment_Click);
            this.Controls.Add(btnCalculateMonthlyPayment);
        }
        void btnCalculateMonthlyPayment_Click(object sender, EventArgs e)
        {
            double amount, interestRate, monthlyPayment;
            int period;
            amount = Convert.ToDouble(txtAmount.Text);
            period = Convert.ToInt32(txtPeriod.Text);
            interestRate = Convert.ToDouble(txtInterestRate.Text);
            monthlyPayment = amount * (interestRate / 100) / (1 - (1 / Math.Pow((1 + interestRate / 100), period)));
            txtMonthlyPayment.Text = monthlyPayment.ToString("f2");
        }
        protected override void RenderContents(HtmlTextWriter writer)
        {
            this.EnsureChildControls();
            writer.Write("<table width = 100%>");
            writer.Write("<tr>");
            writer.Write("<td>Principal amount</td>");
            writer.Write("<td>");
            txtAmount.RenderControl(writer);
            writer.Write("</td>");
            writer.Write("</tr>");
            writer.Write("<tr>");
            writer.Write("<td>Period in months</td>");
            writer.Write("<td>");
            txtPeriod.RenderControl(writer);
            writer.Write("</td>");
            writer.Write("</tr>");
            writer.Write("<tr>");
            writer.Write("<td>Monthly interest rate (%)</td>");
            writer.Write("<td>");
            txtInterestRate.RenderControl(writer);
            writer.Write("</td>");
            writer.Write("</tr>");
            writer.Write("</tr>");
            writer.Write("<tr>");
            writer.Write("<td>Monthly payment</td>");
            writer.Write("<td>");
            txtMonthlyPayment.RenderControl(writer);
            writer.Write("</td>");
            writer.Write("</tr>");
            writer.Write("</table>");
            btnCalculateMonthlyPayment.RenderControl(writer);
        }
    }
}

16. Connected Web Parts:
Provider Web Part:
using System;
using System.Runtime.InteropServices;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;

using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;
using KNRaoWPExample8;

namespace KNRaoWPExample8
{
    [Guid("323f9612-522a-4af7-b12e-f0b1412ba5ed")]
    public class CustomerProvider : System.Web.UI.WebControls.WebParts.WebPart, ICustomer
    {
        protected override void OnPreRender(EventArgs e)
        {
            this.Title = "Customer Provider";
        }
        TextBox txtName, txtCity;
        Button btnSend;
        protected override void CreateChildControls()
        {
            txtName = new TextBox();
            Controls.Add(txtName);
            txtCity = new TextBox();
            Controls.Add(txtCity);
            btnSend = new Button();
            btnSend.Text = "Send Customer";
            Controls.Add(btnSend);
        }
        protected override void RenderContents(HtmlTextWriter writer)
        {
            writer.Write("Name : ");
            txtName.RenderControl(writer);
            writer.Write("<br/>");
            writer.Write("City : ");
            txtCity.RenderControl(writer);
            writer.Write("<br/>");
            btnSend.RenderControl(writer);
        }

        public string Name
        {
            get { return txtName.Text; }
        }

        public string City
        {
            get { return txtCity.Text; }
        }
        [ConnectionProvider("Customer", AllowsMultipleConnections=true)]
        public ICustomer ProvideCustomer()
        {
            return this;
        }
    }
}
Consumer Web Part:
using System;
using System.Runtime.InteropServices;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;

using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;

using KNRaoWPExample8;

namespace KNRaoWPExample8
{
    [Guid("6fb56784-970e-4b53-b9bc-0e0880a5e963")]
    public class CustomerConsumer : System.Web.UI.WebControls.WebParts.WebPart
    {
        ICustomer customer;
        [ConnectionConsumer("Customer")]
        public void ConsumeCustomer(ICustomer customer)
        {
            this.customer = customer;
        }
        protected override void RenderContents(HtmlTextWriter writer)
        {
            if (customer == null)
                writer.Write("No connection");
            else if (customer.Name == "" || customer.City == "")
                writer.Write("Provide customer name and city");
            else
                writer.Write("Welcome " + customer.Name + " from " + customer.City);
        }
    }
}

17. To display List Event Receivers in Site(It's a Console Application):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;

namespace ShowEvents
{
    class Program
    {
        static void Main(string[] args)
        {
            SPWeb Web = new SPSite("http://RKU:9870").OpenWeb();
            SPEventReceiverDefinitionCollection receivers = Web.EventReceivers;
            if (receivers.Count == 0)
            {
                Console.WriteLine("No");
            }
            foreach (SPEventReceiverDefinition def in receivers)
            {
                Console.WriteLine("Event Receiver :"+def.Name);
                Console.WriteLine("Event Receiver Type :"+def.Type);
            }
        }
    }
}

18. By activating Feature add link to Top Navigation Bar , By deactivating Feature remove link

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Navigation;

namespace SitePagesEx1
{
    public class FeatureReceiver:SPFeatureReceiver
    {

        public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
            SPWeb web = (SPWeb)properties.Feature.Parent;
            SPNavigationNodeCollection topNavBar =
                web.Navigation.TopNavigationBar;
            topNavBar[0].Children.AddAsLast(
                new SPNavigationNode("About Us",
                "sitepages/aboutus.aspx"));
        }

        public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
        {
            SPWeb web = (SPWeb)properties.Feature.Parent;
            web.GetFile("sitepages/aboutus.aspx").Delete();
            SPNavigationNodeCollection topNav = web.Navigation.TopNavigationBar;
            for (int i = topNav[0].Children.Count - 1; i >= 0; i--)
                if (topNav[0].Children[i].Title == "About Us")
                    topNav[0].Children[i].Delete();
           
        }

        public override void FeatureInstalled(SPFeatureReceiverProperties properties)
        {
        }

        public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
        {
        }
    }
}

19. To Create Custom Web Part(Web Part for Using User Controls):

using System;
using System.Runtime.InteropServices;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint.WebPartPages;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Utilities;
using System.ComponentModel;


namespace Contentpages
{
   [Guid("3e65b857-9c8e-4021-aee0-fbc13814f90c")]
   public class ContentPage : System.Web.UI.WebControls.WebParts.WebPart
   {
       private string _cPath;

       [Personalizable(PersonalizationScope.Shared),
       WebBrowsable(true),
       WebDisplayName("Contentpage Webpart"),
       WebDescription("Enter the control path"),
      Category("ContentPage Properties")]
       public string CPATH
       {
           get { return _cPath; }
           set { _cPath = value; }
       }


       protected override void CreateChildControls()
       {

          //this.Controls.Add(Page.LoadControl(@"/_CONTROLTEMPLATES/cotentpages/ContentPages.ascx"));
           if (!string.IsNullOrEmpty(CPATH))
           {
               this.Controls.Add(Page.LoadControl(CPATH));
           }


       }
   }
}