Thursday 9 June 2016

ItemAdded EventReceiver To Add Item In Another List

SPList lst = properties.Web.GetList(properties.WebUrl + "/Lists/ListName1/AllItems.aspx");
           if (lst != null && lst.ID == properties.ListId)
           {
               SPList lstRes = properties.Web.GetList(properties.WebUrl + "/Lists/ListName/AllItems.aspx");
               if (lstRes != null)
               {
                   string str =Convert.ToString(properties.ListItem["Title"]);
                   int res =Convert.ToInt16(properties.ListItem["Marks"]);

                   SPListItem itm = lstRes.Items.Add();
                   if (res >= 40)
                       itm["Title"] = "Pass";
                   else
                       itm["Title"] = "Fail";

                   itm.Update();
               }
           }

SPGridView SharePoint 2010

1. Add Below Code To Your .ascx File

<SharePoint:SPGridView ID="spgvOrder" runat="server" AutoGenerateColumns="false"
                valign="top" AllowPaging="true" AllowSorting="true" AllowFiltering="true" FilterDataFields="Title,FirstName,LastName,State,Marks"
                FilteredDataSourcePropertyName="FilterExpression" FilteredDataSourcePropertyFormat="{1} like '{0}'"
                OnSorting="spgvOrder_Sorting">
                <Columns>
                    <SharePoint:SPBoundField DataField="Title" HeaderText="Code" ItemStyle-HorizontalAlign="Left" />
                    <SharePoint:SPBoundField DataField="FirstName" HeaderText="First Name" ItemStyle-HorizontalAlign="Left" />
                    <SharePoint:SPBoundField DataField="LastName" HeaderText="Last Name" ItemStyle-HorizontalAlign="Left" />
                    <SharePoint:SPBoundField DataField="State" HeaderText="State" ItemStyle-HorizontalAlign="Left" />
                    <SharePoint:SPBoundField DataField="Marks" HeaderText="Marks" ItemStyle-HorizontalAlign="Left" />
                </Columns>
            </SharePoint:SPGridView>
            <asp:ObjectDataSource runat="server" ID="gridds" OnFiltering="gridds_Filtering" OnObjectCreating="gridds_ObjectCreating" />
            <SharePoint:SPGridViewPager ID="SPGridViewPager1" GridViewId="spgvOrder" runat="server"></SharePoint:SPGridViewPager>


2. Add Below Code To Bind List Items To  SPGridView With Sorting & Filtering

protected void Page_Load(object sender, EventArgs e)
        {
            gridds.TypeName = this.GetType().AssemblyQualifiedName;
            spgvOrder.DataSourceID = gridds.ID;
            gridds.SelectMethod = "LoadData";
            spgvOrder.PageSize = 50;
            spgvOrder.DataBind();
        }
protected void spgvOrder_Sorting(object sender, GridViewSortEventArgs e)
        {
            if (ViewState["FilterExpression"] != null)
            {
                gridds.FilterExpression = (string)ViewState["FilterExpression"];
            }
        }
        protected void gridds_Filtering(object sender, ObjectDataSourceFilteringEventArgs e)
        {
            ViewState["FilterExpression"] = ((ObjectDataSourceView)sender).FilterExpression;
        }
        protected sealed override void LoadViewState(object savedState)
        {
            base.LoadViewState(savedState);

            if (Context.Request.Form["__EVENTARGUMENT"] != null &&
                 Context.Request.Form["__EVENTARGUMENT"].EndsWith("__ClearFilter__"))
            {
                // Clear FilterExpression
                ViewState.Remove("FilterExpression");
            }
        }
        protected void gridds_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
        {
            e.ObjectInstance = this;
        }

public DataTable LoadData()
        {
            DataTable dt = null;
            try
            {
                dt = new DataTable();
                dt.Columns.Add("Title", typeof(string));
                dt.Columns.Add("FirstName", typeof(string));
                dt.Columns.Add("LastName", typeof(string));
                dt.Columns.Add("State", typeof(string));
                dt.Columns.Add("Marks", typeof(Int16));

                using (SPSite site = new SPSite(SPContext.Current.Site.ID))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        SPList lst = web.Lists["ListName"];
                        SPListItemCollection itmcol = lst.Items;

                        if (itmcol != null && itmcol.Count > 0)
                        {
                            DataRow dr = null;
                            foreach (SPListItem itm in itmcol)
                            {
                                dr = dt.NewRow();
                                dr["Title"] = itm["Title"];
                                dr["FirstName"] = itm["FirstName"];
                                dr["LastName"] = itm["LastName"];
                                dr["State"] = itm["State"];
                                dr["Marks"] = itm["Marks"];

                                dt.Rows.Add(dr);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex.InnerException;
            }
            return dt;
        }

Create Timer Job Step By Step

1. Add new SharePoint Empty Project.
2. Add new class as below.

public class CustomTimerJob : SPJobDefinition
    {
        public CustomTimerJob() : base() { }
        public CustomTimerJob(string jobName, SPService service, SPServer server, SPJobLockType targetType)
            : base(jobName, service, server, targetType)
        {

        }
        public CustomTimerJob(string jobName, SPWebApplication webapp) :
            base(jobName, webapp, null, SPJobLockType.ContentDatabase)
        {
            this.Title = jobName;
        }
        public override void Execute(Guid targetInstanceId)
        {
            SPWebApplication webApp = this.Parent as SPWebApplication;
            SPList taskList = webApp.Sites[0].RootWeb.Lists["ListName"];


            //SPListItem newTask = taskList.Items.Add();
            //newTask["Title"] = "NewTask";
            //newTask.Update();




                                                              OR



         
                string siteURL = this.Properties["siteurl"].ToString();
                SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    using (SPSite spSite = new SPSite(siteURL))
                    {
                        using (SPWeb spWeb = spSite.OpenWeb())
                        {
                            SPList lst = spWeb.Lists["ListName"];
                            SPListItem itm = lst.Items.Add();
                            itm["Title"] = "NewTask";
                            itm.Update();
                        }
                    }
                });
           
        }
    }



Now Create New Feature Event Receiver and perform below steps in event receiver cs file

   private const string LIST_JOB = "Testing Timer Job";
   private const string LIST_JOB = "Testing Timer Job1";
   private const string LIST_JOB = "Testing Timer Job2";


        public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
            Guid SiteID = ((SPSite)properties.Feature.Parent).ID;
            SPSecurity.RunWithElevatedPrivileges(delegate(){
                SPSite site = new SPSite(SiteID);
                if (site != null)
                {
                    foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)
                    {
                        if (job.Name == LIST_JOB )
                            job.Delete();
                    }
                    CustomTimerJob TimeJob = new CustomTimerJob(LIST_JOB, site.WebApplication);
                    SPDailySchedule schedule = new SPDailySchedule();
                    schedule.BeginHour = 15;
                    schedule.BeginMinute = 30;
                    schedule.EndHour = 15;
                    schedule.EndMinute = 45;

                    TimeJob.Schedule = schedule;
                    TimeJob.Properties.Add("siteurl", site.Url);
                    TimeJob.Update();
                }
            });
        }

        public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
        {
            SPSite site = properties.Feature.Parent as SPSite;
            foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)
            {
                if (job.Name == LIST_JOB )
                    job.Delete();
            }
        }