Friday, August 19, 2011

Unable to open SharePoint site on host machine

Few weeks back, i created one SharePoint site means a web application using Central Admin. One thing which i did different from usual is Host hearder entry. After creating site i tried to open it using host header or say fully qualified name but i couldn't open it on my local machine but though i can open it from other machines.

Also one more problem i was facing at the time of creating new SharPoint project from Visual Studio 2010. Error like below
Cannot connect to SharePoint Site: http://<sitename>/. Make sure that this valid URL and the SharePoint site is running on the local computer. If you moved this project to a new computer or if the URL of the SharePoint site has changed since you created the project, update the Site URL Property of the project.

One of my friend gave me this useful link that i am sharing with you

http://support.microsoft.com/kb/896861

To create/open project in Visual Studio try to use host header URL not machine name or localhost.

Thursday, May 5, 2011

Sharepoint: User Type field in schema.xml

I was writting schema.xml for Custom List Template, there i need field of type User like below


I was setting value of ShowField property to Job Title which i was using in CAML query to filter out the users. I searched lot for ShowField values of User type but i coudn't found anything from MSDN, even not an expected results from google. I am very much habitual of seeing the View Source of the HTML pages so i see the page source of Task list's User column and i got all the values from that source. I think looking out HTML pages source is not a bad practice :)

Friday, April 22, 2011

Webpart Preview Page: Event handler not firing in webpart

Today i faced realy strange issue with button event handler in webpart, my webpart created from SharePoint webpart class. This is code

public class MyFirstWebPart : Microsoft.SharePoint.WebPartPages.WebPart
{
 Label userName = new Label();
 Button button;

 protected override void CreateChildControls()
 {
  button = new Button();
  userName.Text = "Sandip";
  button.Text = "Change this text";
  button.Click+=new EventHandler(button _Click);
  this.Controls.Add(userName);
  this.Controls.Add(button);
 }

 protected void button _Click(object sender, EventArgs e)
 {
  userName.Text = "Sandip Patil";
 }
}

I wired up event handler in CreateChildControls method so that was not an issue. Issue is with testing webpart on the page. I was testing webpart on webpart preview page. You can find webpart preview page whenever you select any webpart from webpart gallery page. After 1 hour of wasting time, i created one webpart page and put that webpart inside webpart zone. Thereafter i could see that event handler was firing. Means problem was not with the code but with testing scenario.
Be careful when you test webpart on Webpart Preview page.
Good Bye, Have a nice time...!

Friday, March 11, 2011

What is new in Visual Studio 2010 for SharePoint Developer?

Many of us are curious about new features of VS 2010 for SharePoint, Microsoft has provided good articles about this on their official site but we couldn't find this easily because keywords are not well defined for this entries.

First checkout the informational

What's New in SharePoint Development

then watch below video

Visual Studio 2010 for SharePoint 2010 Development

Enjoy SharePointing...!

Saturday, February 26, 2011

SharePoint 2010: Choice column not supported in lookup

One of the issue or we can say a bug that i found in new SharePoint 2010 version and it is confirmed from Microsoft team.

Issue is like this,

If you try to create a lookup column and select list from which you are setting lookup column, you will not get choice field columns in primary as well as secondary fields. For testing purpose take Task list and check the fields in dropdown as well as checkbox

ID
Title
Modified
Created
Version
Title (linked to item)
% Complete
Start Date
Due Date


You never get Priority and Status columns

On one of the Microsoft blog, i found a post where they say it is supporting but it's not true, Here below it is

Create list relationships by using lookup and unique columns

get confirmation from this post

Restrictions on additional columns available for addition with Lookup column?

Hope in upcoming hotfix this bug will be solved...!


Thursday, February 17, 2011

Awarded Microsoft Community Contributor

Hi Friends,

Today i have been awarded as Microsoft Community Contributor, Thanks Microsoft and all Friends/Microsoft Community Members who trust on me and my contributions.


Saturday, January 1, 2011

Deploying webpart in SharePoint


We can deploy webpart to SharePoint site either deploying assembly to BIN or GAC.

Some steps are mandatory for this

Steps
1: Put assembly in web application BIN or WFE's (Web Front End Server) GAC
2: Register assembly as safe control in web.config of web application
3: Add .webpart file into webpart gallery

Let's see master's(Andrew Cornell) quote on this 3rd point
In order to make the Web Part discoverable, or enable users to pick the Web Part from a list of available Web Parts, a Web Part definition file must exist in one of two places: the Web Part Gallery in a top – level site of a site collection or the wpcatalog folder within the Web root of a site ’ s hosting Web application. If the Web Part definition is deployed to the wpcatalog folder, all sites within all site collections within the Web application will have access to the Web Part. However, if the Web Part definition is added to the Web Part Gallery, a special document library in the top - level site of a site collection, only the sites within that site collection will be able to add the Web Part to their pages.
In this post we will concentrate on deploying webpart only to BIN.

A) Manual Deployment

A.1: Add webpart assembly (<WebPartName>.dll) to Bin directory of web application
Web application path would be C:inetpubwwwrootwssVirtualDirectoriesPort_No
A.2: Add Safe control entry to web.config file of web application

Example.

<SafeControl Assembly="<WebPartName>" Namespace="<WebPartName>" TypeName="*" Safe="True" />
OR

<SafeControl Assembly="<WebPartName>, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" Namespace="<WebPartName>" TypeName="*" Safe="True" />

A.3: Add webpart to webpart gallery
Here we will not add any .webpart file to webpart gallery but this task will done by SharePoint itself. See how this is done.

Go to webpart gallery from "Site Actions". Click "New" and select your webpart assembly and populate it. This action actually create .webpart file for you webpart.
You can see this file content too. Click on "Edit" button in front of webpart in galley, then click "View XML" and save .webpart file. Open this file in notepad and see the xml markup.

A.4: Use webpart
Now open webpart page, edit it and put webpart in webpart zone.

B) Deployment by WSP package

B.1: Create solution for deployment
Create separate class library project in same solution which is totally a dummy project, we will not use it's assembly for deployment but it will help us to make deployment structure. Add one folder named "Defination" then copy your webpart assembly(DLL) there.

B.2: Create one text file and save it as manifest.xml, manifest file is actually a instruction file to STSADM utility which tells him where to place the files on server.
manifest.xml

<Solution xmlns='http://schemas.microsoft.com/sharepoint/' SolutionId='A54EF786-3131-4f6c-AF90-A7116DF2B814'>
<Assemblies>
<Assembly DeploymentTarget='WebApplication' Location='sandip.helloworldwebpart.dll'>
<SafeControls>
<SafeControl Assembly="sandip.helloworldwebpart" Namespace="sandip.helloworldwebpart" TypeName="*" Safe="True" />
</SafeControls>
</Assembly>
</Assemblies>
</Solution>
Above schema tells to STSADM that put my webpart assembly (sandip.helloworldwebpart.dll) into BIN folder of respective application and add safe control entry into web.config file of that application.

B.3: Create one text file and save it as inst.ddf, ddf(data definition file or diamond directive file) file is actually a instruction file to makecab utility which tells him how to create a package.
inst.ddf
 .Set CabinetNameTemplate="sandiphellowworldwebpart.wsp"
 .set DiskDirectoryTemplate=CDROM ; All cabinets go in a single directory
 .Set CompressionType=MSZIP;** All files are compressed in cabinet files
 .Set MaxDiskFileCount=1000 ; Limit file count per cabinet
 .Set UniqueFiles='OFF'
 .Set Cabinet=on
 .Set DiskDirectory1="../Defination"
 manifest.xml
 sandip.helloworldwebpart.dll
Above schema tells to makebcab that create package of name “sandiphellowworldwebpart.wsp", put manifest file and assembly to root of
WSP package and save it into current directory.

B.4: Create WSP package
Open command line and go to Defination folder of your deployment project
C:Documents and Settingssandip.patilMy DocumentsVisual Studio 2008ProjectsWSSsandip.helloworldwebpartDeploymentDefination>
and run this command

makecab /f inst.ddf

Now you will get package in same folder. To confirm files in WSP package, copy/paste package(.wsp) file on same directory and change extension to .cab. Open cab file and see 2 files (manifest.xml, sandip.helloworldwebpart.dll) should be there.

B.5: Create deployment/retraction file
Deployment file will add package to solution store and deploy to respective application.
Retraction file will retract solution (delete webpart from BIN and safe control from your web application) and delete solution from solution store.

DeploySolution.cmd
 :begin
 @echo off
 set solutionName=sandiphellowworldwebpart
 set url=http://sandip:6666
 @set PATH=C:Program FilesCommon FilesMicrosoft Sharedweb server extensions12BIN;%PATH%
 echo --- Adding solution %solutionName% to solution store...
 stsadm -o addsolution -filename %solutionName%.wsp
 echo --- Deploying solution %solutionName%...
 stsadm -o deploysolution -name %solutionName%.wsp -url %url% -immediate -allowCasPolicies -force
 stsadm -o execadmsvcjobs
 if errorlevel == 0
 echo ### Error deploying solution %solutionName%
 echo .
 goto end
 
RetractSolution.cmd

 :begin
 @echo off
 set solutionName=sandiphellowworldwebpart
 set url=http://sandip:6666
 @set PATH=C:Program FilesCommon FilesMicrosoft Sharedweb server extensions12BIN;%PATH%
 echo --- Attempting to deactivate/retract existing solution...
 stsadm -o retractsolution -name %solutionName%.wsp -url %url% -immediate
 stsadm -o execadmsvcjobs
 stsadm -o deletesolution -name %solutionName%.wsp -override
 rem stsadm -o execadmsvcjobs
B.6: Deploy solution package and confirm it
Double click DeploySolution.cmd and see webpart assembly(DLL) in your web application BIN and safe control entry in web.config too. You can see there is minor difference in safe control entry which is placed by there by STSADM and our manifest file entry.

<SafeControl Assembly="sandip.helloworldwebpart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=48cc2196eaf8dbe7" Namespace="sandip.helloworldwebpart" TypeName="*" Safe="True" />

Don't worry about this change.

B.7: Add webpart to webpart gallery and use it.
When we deploy webpart using WSP package without feature, our .webpart file is placed into wpcatalog directory in the application.
Path could be C:inetpubwwwrootwssVirtualDirectoriesPort_No
This insure that our webpart will available in all site collections of the application and ready to use, Follow A.4 steps to use webpart on the pages.

B.8: (Optional)Retract solution package and confirm it
If you don't need this solution then retract it by running RetractSolution.cmd file.
Double click RetractSolution.cmd and see webpart assembly(DLL) in your web application BIN and safe control entry in web.config has been removed.