Tuesday, June 19, 2012

SharePoint 2010 - Show/Hide Left Navigation


Issue:   Show/Hide Left Navigation-SharePoint 2010


Solution:

Place below code before the closing tag </head> in your customized v4.master

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

<script type="text/javascript">
$(document).ready(function() {
// do stuff when DOM is ready

LeftNavCollapsible();
}); 
var flg = 0;
function LeftNavCollapsible()
{
$("#s4-leftpanel-content ul.root>li.static>a").toggle(
 function () {
$(">ul", $(this).parent()).show("fast");
 },
 function () {
$(">ul", $(this).parent()).hide("fast");
 }
);
$("#s4-leftpanel-content li.static>ul.static").css("display","none");
}
</script>

Monday, April 9, 2012

SharePoint 2010 - Central Admin Create/Extend Web Application button on Ribbon are disabled

Issue:


Dev Environment is  SharePoint 2010 on WIN 7. 
  • sp\sharepoint – member of FARM Administrator


Now when I Sign-in with sp\sharepoint and use Manage Web Application link, on the Top Ribbon none of Button is enabled. I can not create Web APP nor Extend it.

Solution:
There can be more than one scenario for this issue.
Scenario 1
The Internet explorer is not opened using the administrator privileges. So, Open the Internet Explorer with "Run as Administrator" privileges. How to do this?
1. Just right click on the IE icon.
2. There you can see a menu as "Run as Administrator".



Scenario 2
This may be due to security problem on Win 7. Follow the steps below to solve the issue.
  1. Login as Administrator to the machine where SharePoint is installed.
  2. Open User Account Control Setting from C ontrol Panel -->System and Security-->Change User Account Control settings and set the Slider bar to "Never Notify "

SharePoint 2010 - Increase maximum size of List Template

If you try to save a list as a list template, you may see the following error due to the list being too large: 
The list is too large to save as a template. The size of a template cannot exceed 10485760 bytes.

You can increase the maximum size of a list / site template by running the following command (note that 500mb is the largest you can go):

stsadm -o setproperty -propertyname max-template-document-size -propertyvalue 50000000

Thursday, April 5, 2012

MSExcel - Large value comma separation using macros

Write the below code into the VB editor, that opens after creating a new macro.


For Each c In Selection
Select Case Abs(c.Value)
Case Is < 100000
c.Cells.NumberFormat = "##,##0"
Case Is < 10000000
c.Cells.NumberFormat = "#\,##\,##0"
Case Is < 1000000000
c.Cells.NumberFormat = "#\,##\,##\,##0"
Case Is < 1000000000
c.Cells.NumberFormat = "#\,##\,##\,##0"
Case Is < 100000000000#
c.Cells.NumberFormat = "#\,##\,##\,##\,##0"
Case Else
c.Cells.NumberFormat = "#\,##\,##\,##\,##\,##0"
End Select
Next c

Wednesday, April 4, 2012

.Net - code snippet to find and replace in any physical file

This is the code snippet to find and replace the content of the physical file.

using System;
using System.IO;
using System.Text.RegularExpressions;

/// <summary>
/// Replaces text in a file.
/// </summary>
/// <param name="filePath">Path of the text file.</param>
/// <param name="searchText">Text to search for.</param>
/// <param name="replaceText">Text to replace the search text.</param>
static public void ReplaceInFile( string filePath, string searchText, string replaceText )
{
   StreamReader reader = new StreamReader( filePath );
   string content = reader.ReadToEnd();
   reader.Close();

   content = Regex.Replace( content, searchText, replaceText );

   StreamWriter writer = new StreamWriter( filePath );
   writer.Write( content );
   writer.Close();
}

LINQ - Reading a csv file using LINQ

reading a csv file using LINQ.

Sample Data
I will use a sample file which contains a data about customers. When working with text files we must know the number of columns and the data contained in each column. Below is a list of columns in their right order for our file.
1.      First Name
2.      Last Name
3.      Job Title
4.      City
5.      Country
The file itself will contain this data. I have pulled this out of Employees table in Northwind database.

First Name  Last Name  Job Title  City  Country
Sharan       Raj              SE           Bang India

Reading Data
Before we start reading our csv file we will create a class which will hold a record we will read from our csv file. For this I will create a customer class which looks like this.


public class Customer
{
   string Firstname { get; set; }
   string Lastname { get; set; }
   string JobTitle { get; set; }
   string City { get; set; }
   string Country { get; set; }
}


Reading Entire File
Now we are ready to read data from our file using LINQ. Using this code we can read the entire file. I am also using a foreach statement to output the results.


var query =
       from line in File.ReadAllLines(filePath)
       let customerRecord = line.Split(',')
       select new Customer()
           {
               Firstname = customerRecord[0],
               Lastname = customerRecord[1],
               JobTitle = customerRecord[2],
               City = customerRecord[3],
               Country = customerRecord[4]
           };
foreach (var item in query)
{
   Console.WriteLine("{0}, {1}, {2}, {3}, {4}",
       item.Firstname, item.Lastname, item.JobTitle, item.City, item.Country);
}


File.ReadAllLines() returns an array of lines and we then use the split function of array to split it by a comma. Its just that simple.
Reading selected records
We can use this code to read all customers who live in UK.


var query =
       from c in
           (from line in File.ReadAllLines(filePath)
            let customerRecord = line.Split(',')
            select new Customer()
                {
                    Firstname = customerRecord[0],
                    Lastname = customerRecord[1],
                    JobTitle = customerRecord[2],
                    City = customerRecord[3],
                    Country = customerRecord[4]
                })
       where c.Country == "UK"
       select c;


This code can be used to read customers who have sales in their job title.


var query =
       from c in
           (from line in File.ReadAllLines(filePath)
            let customerRecord = line.Split(',')
            select new Customer()
                {
                    Firstname = customerRecord[0],
                    Lastname = customerRecord[1],
                    JobTitle = customerRecord[2],
                    City = customerRecord[3],
                    Country = customerRecord[4]
                })
       where c.JobTitle.Contains("Sales")
       select c;

Tuesday, April 3, 2012

SharePoint 2010 - Where my versions get stored

Once enabled for a library or list, major and minor versions of documents and items can be kept; the number of which can be specified in the library or list settings:
Versions
The version history for items or documents can be viewed, and old versions can be opened and inspected. But where are these old versions stored?
Version histories are maintained for files and for property (column) values. In the case of a document library both a file and a property history is maintained, but for a list item only a property history is kept. The SharePoint class libraries or web services can be used to programmatically access this information, and also determine the URL where a pervious version of a document is located.
So, on a SharePoint server create a new Visual Studio project and add a reference to the “Microsoft.SharePoint.dll” library. Then add a using statement to “Microsoft.SharePoint.” Assuming you have already a reference to a SPList object representing the list or library you can obain a reference to the collection of previous file versions:
            SPFileVersionCollection theFileVersions = lstItem.File.Versions;
The collection can be iterated, and in this case, the version label and URL are added to a WinForm data grid view control:
            foreach (SPFileVersion liVer in theFileVersions)
            {
               int rowID = dgvVersions.Rows.Add();
               dgvVersions.Rows[rowID].Cells[0].Value = liVer.VersionLabel;
               dgvVersions.Rows[rowID].Cells[1].Value = liVer.Url;
            }
The output will look like the following:
Versions2
You can see from this that the previous versions are stored in a virtual folder called “_vti_history” under the site in which the library is located. The virtual folder “512” represents the version number (taking into account other versioned documents in the site). This URL together with the URL for the site can be used to directly open previous versions.
The SPFileVersion object can also be used to access the contents of the file. In this code, the bytes associated with the version are obtained and then saved to a file:
            byte[] outBytes = liVer.OpenBinary();
            using (BinaryWriter binWriter =
               new BinaryWriter(File.Open(@”C:\Temp\MyFile.xlsx”,
                    FileMode.Create)))
            {
               binWriter.Write(outBytes);
            }
This works well with documents, but the situation is much more complex with pages, content and web parts. Navigating to the URL for pages will result in an HTTP 404 – “file not found”.