Pages

Monday 26 August 2013

How to move Add new item link to top location in SharePoint 2010

Add new item link to top:

Recently my client request to me for moving “Add new Item” link to top location instead of bottom of every web part. Actually for adding new item user first click on tab (in ribbon bar) and then click on New Item button. Which is taking time and not a very good practice.
Secondly, if there are many items are saved in list or library then user have to scroll down and then click on Add new item link. That is also tedious.
Solution:
We will use jQuery for moving Add new item link from bottom to top location, for this we generically add the following script in master page. It will move all the Add new item links to top of each web part at run time in browser.
<script src=”http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js type=”text/javascript”></script>
<script language=”javascript” type=“text/javascript”>
$(document).ready(function () {
$(“td.ms-addnew“).parent().parent().parent().each(function () {
$(this).insertBefore($(this).prev());
});
});
</script>
You can also add this script to CEWP on page and the result will be same but on specified page.

Wednesday 14 August 2013

Export To PDF in sharepoint 2010/C#

Export To PDF in sharepoint 2010/C#

I had an requirement to export some data to PDF format in Sharepoint application pages.

First You have to download and attach a DLL from ItextSharp.dll .(Can be downloaded from Here).Add it into  your webpart or solution  or for application pages.

For application pages and for inline coding add following  lines


<%@ Register TagPrefix="itext" Namespace="iTextSharp.text" Assembly="itextsharp, Version=5.3.0.0, Culture=neutral, PublicKeyToken=8354ae6d2174ddca" %>
<%@ Import Namespace="iTextSharp.text.pdf" %>
<%@ Import Namespace="iTextSharp.text.html.simpleparser" %>


For coding purpose add following lines


using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.html.simpleparser;


Then add the following  code to export to PDF


private DataTable  SearchItem()
    {
        DataTable dt = new DataTable();
        SPSecurity.RunWithElevatedPrivileges(delegate
        {
            SPList list = SPContext.Current.Web.Lists["TestList"];
         
       
            string query = null;
            SPQuery qry = new SPQuery(list.DefaultView);
            //SPListItemCollection lstColl =
            int iCnt = 0;
            try
            {

                qry.ViewFields = "<FieldRef Name='LinkTitleNoMenu' /><FieldRef Name='TestColumn' />";
                    qry.Query = query;
                 
                dt= list.GetItems(qry).GetDataTable();
                 

                 
                }

            catch (Exception ex) { Response.Write(ex.Message); }
        });
        return dt;
    }
    protected void btnExport_click(object sender, EventArgs e)
    {
        DataTable dt1 = SearchItem();
     

        //Get the data from database into datatable

        GridView GridView1 = new GridView();
        GridView1.AllowPaging = false;
        GridView1.DataSource = dt1;
        GridView1.DataBind();


        Response.ContentType = "application/pdf";
        Response.AddHeader("content-disposition",
          "attachment;filename=DataTable.pdf");
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        StringWriter sw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(sw);

        GridView1.RenderControl(hw);
        StringReader sr = new StringReader(sw.ToString());
        Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
        HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
        PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
        pdfDoc.Open();
        htmlparser.Parse(sr);
        pdfDoc.Close();
        Response.Write(pdfDoc);
        Response.End();
    }
 

  public override void VerifyRenderingInServerForm(Control control)
    {
    }


If you observe above code I added one function that is VerifyRenderingInServerForm this function is used to avoid the error like “control must be placed in inside of form tag”. If we setVerifyRenderingInServerForm function then compiler will think that controls rendered before exporting and our functionality will work perfectly.



After the button Click the PDf file will ask you to save or open the File.After that you can't do any post back options in that page.for doing such you have to add a little bit of code into that page within a script block.
Add the following code to that particular page



   <script type="text/javascript">

            _spOriginalFormAction = document.forms[0].action;

            _spSuppressFormOnSubmitWrapper = true;

</script>

If you are getting any dll error, try this

Adding DLL to WSP SharePoint 2010

In order to add custom dll to WSP Package , follow these steps:

  • Create new Empty SharePoint Project 
    • File->New->Project->SharePoint(2010)->Empty SharePoint Project 
    • In second screen provide test site URL
    • Select "Deploy as Farm Solution"

  • Expand package node and double click on Package.package file 




  • Click on "Advanced" Tab



  • Add the Custom dll's using the "Add" button



  • Save the project, compile and deploy. Custom dll will be part of WSP.

Happy Coding  :)

Tuesday 13 August 2013

Download wsp from central admin sharepoint

 We can do this with the PowerShell scripting. 

 Following are the PowerShell script code to take the backup and restore it is local folder with .wsp externsion. 
?
$farm = Get-SpFarm
$file = $farm.Solutions.Item("Test.wsp").SolutionFile
$file.SaveAs("c:\Temp\Test.wsp")