SharePoint Getting Started

Few weeks back I saw a question in the Stackoverflow. The question was How to start learning SharePoint. Well at first it seem simple, I couldn't get an answer straight away. I did a Google but no luck all links I landed up was about some SharePoint books. The user who posted the question specifically mentioned that he doesn't want go through books to get the hold of it. Well I am of the same kind I hate going through 500+ pages books. Finally I answer the question on how I learnt SharePoint. Below is my answer for the question.

First step is to get created with a SharePoint site, from your System admin.

If you are the one who need to kick start the SharePoint. Then follow the steps and for each of the steps you can find ample number of links using Google

  1. Install SharePoint and Configure it.
  2. Create a Site Collection
  3. Go to the Site and in the Right Corner you will find a Menu called Site Settings
  4. Select that and play around with each and every options out there.
  5. Most of the options can be understood by the Name
  6. If you struck up some where come to SO or Start over again.
  7. Make sure that you always ask the question why this behaves this way & why this implemented this way.
  8. Try creating pages Same Site Settings Menu has option to create page.
  9. There is some thing called Web Part which is actually a Pluggable component UI/ functionally which can be customized as per the user needs.
  10. Try using those web parts (Lost of Out of the Box)
  11. Later move in to Web Part development,create your own, deploy it
  12. Start using the Microsoft.SharePoint.dll to access the SharePoint site using you custom code.

To give you a brief description.

Microsoft Office SharePoint Server 2007 is an integrated suite of server capabilities that can help improve organizational effectiveness by providing comprehensive content management and enterprise search, accelerating shared business processes, and facilitating information-sharing across boundaries for better business insight. Additionally, this collaboration and content management server provides IT professionals and developers with the platform and tools they need for server administration, application extensibility, and interoperability.

  1. I call it as Application development platform
  2. For anything you wanted to do there will be a option directly / indirectly in SharePoint
  3. Basically it is a Web Application built on top of ASP.NET 2.0
  4. Main entry point to it is an Web Application (Central Administration Site) you get this once you install SharePoint.
  5. This is where you can Create Web Application (Nothing but a Site in the IIS & Content DB)
  6. Yes you read it right Database,SharePoint stores all its content in Database
  7. Web Application is directly not usable (Its like empty DB and Empty IIS site) you need to have some content to be display to the user.
  8. Then Site collection comes, it give content to the User.You need to at least create Site collection under Web Application (Through Central Admin).
  9. While Creating Site Collection you will be provided with a Site Template (Template is nothing but a Blue print sort of thing that will dictate what your site will look like and what it have) there are template For Project Management,Bug Tracking (has options to track Bug, kind of basic infrastructure that will be needed in any Bug Tracking system).
  10. Next level is Sub site, under site collection you can have Site( here too you have an option to select the template), and under that Site you can have another Sub Site so on.
  11. And there is another important thing in SharePoint called List, its a similar to Table in SQL server but not exactly same (because list content are internally stored in SQL Tables), and List contains Fields (Similar to Column in Table). You can use them to store your custom data. While creating the list also you will have Templates (Say for example to Represent a Announcement you have a template, this will have all the fields that are needed to represent announcement)
  12. And you have a Option to Create your own List Structure as well.
  13. There is a special kind of List in SharePoint called Document Library which can store documents.
  14. One final thing Security, managing Security is out of the Box. You can control who has access to you Site and what they can Access (Only Announcement , only Published documents) and what they can do with the item (Edit/Read-only/Delete) etc.
  15. You can create fine grained permission as you wish.

Welcome to THE SHAREPOINT WORLD

.NET 4.0 – Part 1

You should be aware that .Net 4.0 is currently in CTP and I am currently in process of exploring the new features in .Net 4.0. Channel9 have a good series of videos that will help you to get started. This is where I started my journey towards .Net 4.0. I would like to share all the learning I had from the above videos and additions to that I would like to share few items that I noticed during my learning. Altogether you will find information about .Net 4.0, ASP.NET Visual Studio 2010. How well it integrates with SharePoint & more. To practice this you will need a CTP version of Visual Studio 2010 and .Net FX 4.0. You can download it from this location. Also be sure to follow these steps before you open the Visual Studio 2010 because it comes with a hardcoded value of 1 Jan 09 as expire date.

[Update: June 21,2009 : .Net 4.0 and Visual Studio 2010 Beta 1 is now available, please refer to the post for more information.]

This article will host Table of Links for the all Upcoming posts.

ASP.NET 4.0
ClientID (this)
EnableViewStage & ViewStateMode(Refering Dino's Post)
C# 4.0
Named and Optional Parameters
Visual Studio 2010
Snippets option for ASP.NET and HTML code 

One feature that has everyone's attention when it comes to ASP.NET 4.0 is ClientID. Till now we had the ClientID as the getter and renders the id based on the naming container, from 4.0 we will be able to decide how the client ID is render to the browser. Each of the server control in the ASP.NET 4.0 has three new Properties that decide how the client Id is rendered.

  1. ClientID                 -    ID that we wish to give to the server control when rendered to                                               the browser.
  2. ClientIDMode        -    Mode that decides how the client ID is generated.Can            anyone of the following value
  • Inherit         -    Gets the mode that is set to the parent.
  • Predictable    -    Gives us an option to predict the ClientID that is goingto get rendered. (In the case of data bound control it generates a auto increment number
  • Legacy        -    No change works as like the previous version and thisis the default value.
  • Static        -    Static value that we set will render as it is.

      3. RowClientIDSuffix    -    Sometimes when we use the Predictable option for ClientIDMode we might need to have a different pattern of the value as the suffix rather than having auto increment. In such a case we can provide a Comma Separated Value of Data Fields (Off course this option is available for the data bound controls) so the client Id will have the value of the Data field appended to the suffix.

Let's see an Example of the above. I have a User Control (ClientIDUserControl.ascx) with a Label inside that, which is used in the page. You can see my project structure in the screen shot.

ClientIDMode:: Legacy : In the below picture you will see the even though I set the client ID of the Label control it renders client ID based on the naming container, because by default the ClientIDMode is Legacy, I didn't specified the ClientIDMode attribute so it defaults to Legacy.

ClientIDMode:: Static : In the below picture you will see that both the client ID and ClientIDMode (Static) is set hence the client ID that is rendered to the client is same as the one we set in the Code.

ClientIDMode:: Inherit : In the below picture you will see that client id that was rendered is based on the Naming container because for the Label I set the ClientIDMode as Inherit. Because of this label check its parent (in this case it's the User Control) for the ClientIDMode and as it doesn't have one it goes to the Page and checks for the ClientIDMode, as page as well doesn't have one, it further goes to the web config and check for the ClientIDMode and as it doesn't have one it by defaults to the Legacy mode. You can also set the ClientIDMode property at the page or the WebApplication level.Refer to the notes section at the end of the article.

ClientIDMode:: Predictable : In the below picture you will see that ClientIDMode is set to Predictable and ClientID is set to "deleteEmployee" and as a result it renders the client id as a AutoIncremented value "DeleteEmployee_0" and soon. When setting the Predictable make sure that Parent control also has the ClientIDMode value set. Refer notes section in the end of the article.

ClientIDMode:Predictable and RowClientIDSuffix:

    When using the Predicatble option there is another tweak we can perform that is to generate our own predictable ID rather than using the auto incremented value of (0,1,2 …).In the below picture I have used RowClientIDSuffix to ID and Company, hence the rendered element has the ID in the format DeleteEmployee_[ID]_[Company]

Notes:

  1. While using the ClientIDMode="Predictable" you need to set the ClientIDMode property in the parent control as well else the ClientID generated by the client control will not have the predictable value, it will default to Naming container method of generating the ID. In the above case I have set the ClientIDMode of the GridView to Static and the CheckBox which is the child control to Predictable.
  2. In addition to the setting the ClientIDMode to the each and every control you can set this value at the Page Level or at the Application level (Web.Config).When there is no explicitly set ClientIDMode to any of the control it will get the value from the page or Web.Config level if one is set else it default to the legacy mode. 
Mode ID ClientID Suffix Client ID At the Browser
Legacy/Nothing Set A C - [ParentNamingContanierID]_A
Static A C - C
Predictable A C - C_0,C_1
Predictable A C ID C_[ID],C_[IDNext]