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


Friday 22 April 2016

Increase Max Length Of Multiple People Picker Control






Sometimes you got warning message like "Item cannot be more than 256 characters" at the people editor control while adding or updating large number of data. To avoid this just add below script to content editor web part & Change g_MAX_LEN value as required.


<script language="ecmascript" type="text/ecmascript">
function onPageLoad() {
  g_MAX_LEN = 2000;
}
$(document).ready(onPageLoad);
</script>

Thanks & Regards
Modi Vishal

Tuesday 5 April 2016

SharePoint 2010 Shortcuts

http://<Site>/_vti_bin/Lists.asmx: - List Web Service
http://<Site>/_layouts/viewlsts.aspx:- View All Site Contents
http://<Site>/Page.aspx?contents=1:- View Web part For Current Page 

Wednesday 16 September 2015

Event Receivers BeforeProperties and AfterProperties

SharePoint 2010 Create Monthly Timer Job Which Execut On Last Day Of Month

      
 MonthlyTJService is helper class in which your logic for timer job is implemented



       string MonthlyTJ = "Monthly TJ";

        public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
                 SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    SPSite site = properties.Feature.Parent as SPSite;
                    DeleteJob(site);
                    CreateJob(site);
                });
          
         }

        private static void DeleteJob(SPSite site)
        {
            foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)
            {
                 job.Delete();
            }
        }

        private static void CreateJob(SPSite site)
        {
            if (site == null)
                throw new ArgumentNullException("site", "site is null.");
          
            MonthlyTJService monthlyTJ = new MonthlyTJService(MonthlyTJ, site.WebApplication);
            SPMonthlySchedule monthlyTJSchedule = new SPMonthlySchedule()
            {
                BeginDay = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month),
                EndDay = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month),
                BeginHour = 23,
                BeginMinute = 15,
                EndHour = 23,
                EndMinute = 45
            };

            monthlyTJ.Schedule = monthlyTJSchedule;
            monthlyTJ.Properties.Add("siteurl", site.Url);
            monthlyTJ.Update();
       }

        public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
        {
            DeleteJob(properties.Feature.Parent as SPSite); // Delete the Job
        }