Showing posts with label SharePoint 2010. Show all posts
Showing posts with label SharePoint 2010. Show all posts

Saturday, January 19, 2013

How to create a Dynamic CAML Query

Hi All,

Many a times you might come into a situation when you have to deal with some complex query building and the scenario is like you have to pull the data from a SharePoint list and the records on which you need to fire the <Where> clause is not fixed.


So, you to need to write a dynamic query where the <OR> tags changes accordingly.
Here is the code:

// This lstPeers can be of any type like array or List Type or Collection.
List<String> lstPeers = new List<String>();

SPQuery peersQuery = new SPQuery();
string createquery = "";
peersQuery.Query = "<Where>" + CreateDynamicQuery(createquery, lstPeers) + "</Where>";


Here is your Dynamic Query :

protected String CreateDynamicQuery(String query, List<string> lstString)
        {
            bool firstIteration = true;
            if (query != "")
            {
                query = "<Or>" + query;
                firstIteration = false;
            }

            if (lstString.Count >= 2)
            {
                query += "<Or>";
                query += "<Eq><FieldRef Name='Type' /><Value Type='Lookup'>" + lstString[0] + "</Value></Eq>";
                query += "<Eq><FieldRef Name='Type' /><Value Type='Lookup'>" + lstString[1] + "</Value></Eq>";
                query += "</Or>";

                lstString.RemoveRange(1, 1);
                lstString.RemoveRange(0, 1);

                if (!firstIteration)
                    query += "</Or>";

                if (lstString.Count != 0)
                    query = CreateDynamicQuery(query, lstString);
            }
            else
            {
                if (lstString.Count != 0)
                {
                    query += "<Eq><FieldRef Name='Type' /><Value Type='Lookup'>" + lstString[0] + "</Value></Eq>";
                    if (!firstIteration)
                        query += "</Or>";
                }
            }
            return query;
        }


As you can notice you are calling a recursive function and dynamically creating the <OR> tags.

I am sure this will help your case !!



Monday, January 7, 2013

Populate Drop Down Lists in Client Object Model

Hi All,

SharePoint 2010 provided two major custom web part enhancements: Visual Web Parts and Client Side Object Model (COM) using JavaScript. We can populate a dropdown items from a sharepoint list.

First populate a list for example : InterviewerList

In visual webpart add following tag in .ascx file inside a DIV tag :

<select id="ddlInterviewerName">

</select>

Then jump to your .js file and write following code :



jQuery(document).ready(function () {

    ExecuteOrDelayUntilScriptLoaded(function () {
        obj = new ScheduleInterviewClass();
        obj.LoadObjects();
    }, "sp.js");
});


function ScheduleInterviewClass() {

    this.LoadObjects = LoadObjects;

    var siteObjects = {
        ctx: null,
        web: null,
        url: null,
        InterviewerList: null,
        InterviewerListItems: null
    };

    
    function LoadObjects() {
        siteObjects.ctx = SP.ClientContext.get_current();
        siteObjects.web = siteObjects.ctx.get_web();
        siteObjects.ctx.load(siteObjects.web);
        siteObjects.ctx.executeQueryAsync(Function.createDelegate(this, LoadObjectsOnSuccess), Function.createDelegate(this, LoadObjectsOnFailure));
    }

    function LoadObjectsOnSuccess() {

        siteObjects.InterviewerList = siteObjects.web.get_lists().getByTitle("InterviewerList");      
        var query = new SP.CamlQuery();
        query.set_viewXml();

        siteObjects.InterviewerListItems = siteObjects.InterviewerList.getItems(query);

        siteObjects.ctx.load(siteObjects.InterviewerListItems);
        siteObjects.ctx.executeQueryAsync(Function.createDelegate(null, RenderHtmlOnSuccess), Function.createDelegate(null, RenderHtmlOnFailure));
    }

    function LoadObjectsOnFailure() {
        alert("Objects Not Loaded Properly. Try again");
    }

    function RenderHtmlOnSuccess() {
        var ddlInterviewer = this.document.getElementById("ddlInterviewerName");
        ddlInterviewer.options.length = 0;
        var enumerator = siteObjects.InterviewerListItems.getEnumerator();

        while (enumerator.moveNext()) {
            var currentItem = enumerator.get_current();
            ddlInterviewer.options[ddlInterviewer.options.length] = new Option(currentItem.get_item("InterviewerName").get_lookupValue(), currentItem.get_item("ID"));                    
        }
    }


    function RenderHtmlOnFailure(sender, args) {
        alert(args.get_message());
        alert("Not able to render HTML");
    }



}


Thursday, December 20, 2012

SharePoint Fields Internal Names List


Much used reprinting of list of fields with internal names for easy reference:
Document Library fields
Display NameInternal NameGUIDType
IDID{1d22ea11-1e32-424e-89ab-9fedbadb6ce1}Counter
Content Type IDContentTypeId{03e45e84-1992-4d42-9116-26f756012634}ContentTypeId
Content TypeContentType{c042a256-787d-4a6f-8a8a-cf6ab767f12d}Text
CreatedCreated{8c06beca-0777-48f7-91c7-6da68bc07b69}DateTime
Created ByAuthor{1df5e554-ec7e-46a6-901d-d85a3881cb18}User
ModifiedModified{28cf69c5-fa48-462a-b5cd-27b6f9d2bd5f}DateTime
Modified ByEditor{d31655d1-1d5b-4511-95a1-7a09e9b75bf2}User
Has Copy Destinations_HasCopyDestinations{26d0756c-986a-48a7-af35-bf18ab85ff4a}Boolean
Copy Source_CopySource{6b4e226d-3d88-4a36-808d-a129bf52bccf}Text
Approval Status_ModerationStatus{fdc3b2ed-5bf2-4835-a4bc-b885f3396a61}ModStat
Approver Comments_ModerationComments{34ad21eb-75bd-4544-8c73-0e08330291fe}Note
URL PathFileRef{94f89715-e097-4e8b-ba79-ea02aa8b7adb}Lookup
PathFileDirRef{56605df6-8fa1-47e4-a04c-5b384d59609f}Lookup
ModifiedLast_x0020_Modified{173f76c8-aebd-446a-9bc9-769a2bd2c18f}Lookup
CreatedCreated_x0020_Date{998b5cff-4a35-47a7-92f3-3914aa6aa4a2}Lookup
File SizeFile_x0020_Size{8fca95c0-9b7d-456f-8dae-b41ee2728b85}Lookup
Item TypeFSObjType{30bb605f-5bae-48fe-b4e3-1f81d9772af9}Lookup
Effective Permissions MaskPermMask{ba3c27ee-4791-4867-8821-ff99000bac98}Computed
ID of the User who has the item Checked OutCheckedOutUserId{a7b731a3-1df1-4d74-a5c6-e2efba617ae2}Lookup
Is Checked out to localIsCheckedoutToLocal{cfaabd0f-bdbd-4bc2-b375-1e779e2cad08}Lookup
Checked Out ToCheckoutUser{3881510a-4e4a-4ee8-b102-8ee8e2d0dd4b}User
NameFileLeafRef{8553196d-ec8d-4564-9861-3dbe931050c8}File
Unique IdUniqueId{4b7403de-8d94-43e8-9f0f-137a3e298126}Lookup
ProgIdProgId{c5c4b81c-f1d9-4b43-a6a2-090df32ebb68}Lookup
ScopeIdScopeId{dddd2420-b270-4735-93b5-92b713d0944d}Lookup
Virus StatusVirusStatus{4a389cb9-54dd-4287-a71a-90ff362028bc}Lookup
Checked Out ToCheckedOutTitle{9d4adc35-7cc8-498c-8424-ee5fd541e43a}Lookup
Check In Comment_CheckinComment{58014f77-5463-437b-ab67-eec79532da67}Lookup
Checked Out ToLinkCheckedOutTitle{e2a15dfd-6ab8-4aec-91ab-02f6b64045b0}Computed
Document Modified ByModified_x0020_By{822c78e3-1ea9-4943-b449-57863ad33ca9}Text
Document Created ByCreated_x0020_By{4dd7e525-8d6b-4cb4-9d3e-44ee25f973eb}Text
File TypeFile_x0020_Type{39360f11-34cf-4356-9945-25c44e68dade}Text
HTML File TypeHTML_x0020_File_x0020_Type{0c5e0085-eb30-494b-9cdd-ece1d3c649a2}Text
Source Url_SourceUrl{c63a459d-54ba-4ab7-933a-dcf1c6fadec2}Text
Shared File Index_SharedFileIndex{034998e9-bf1c-4288-bbbd-00eacfc64410}Text
Edit Menu Table Start_EditMenuTableStart{3c6303be-e21f-4366-80d7-d6d0a3b22c7a}Computed
Edit Menu Table End_EditMenuTableEnd{2ea78cef-1bf9-4019-960a-02c41636cb47}Computed
NameLinkFilenameNoMenu{9d30f126-ba48-446b-b8f9-83745f322ebe}Computed
NameLinkFilename{5cc6dc79-3710-4374-b433-61cb4a686c12}Computed
TypeDocIcon{081c6e4c-5c14-4f20-b23e-1a71ceb6a67c}Computed
Server Relative URLServerUrl{105f76ce-724a-4bba-aece-f81f2fce58f5}Computed
Encoded Absolute URLEncodedAbsUrl{7177cfc7-f399-4d4d-905d-37dd51bc90bf}Computed
NameBaseName{7615464b-559e-4302-b8e2-8f440b913101}Computed
File SizeFileSizeDisplay{78a07ba4-bda8-4357-9e0f-580d64487583}Computed
Property BagMetaInfo{687c7f94-686a-42d3-9b67-2782eac4b4f8}Lookup
Level_Level{43bdd51b-3c5b-4e78-90a8-fb2087f71e70}Integer
Is Current Version_IsCurrentVersion{c101c3e7-122d-4d4d-bc34-58e94a38c816}Boolean
SelectSelectTitle{b1f7969b-ea65-42e1-8b54-b588292635f2}Computed
SelectSelectFilename{5f47e085-2150-41dc-b661-442f3027f552}Computed
EditEdit{503f1caa-358e-4918-9094-4a2cdc4bc034}Computed
owshiddenversionowshiddenversion{d4e44a66-ee3a-4d02-88c9-4ec5ff3f4cd5}Integer
UI Version_UIVersion{7841bf41-43d0-4434-9f50-a673baef7631}Integer
Version_UIVersionString{dce8262a-3ae9-45aa-aab4-83bd75fb738a}Text
Instance IDInstanceID{50a54da4-1528-4e67-954a-e2d24f1e9efb}Integer
OrderOrder{ca4addac-796f-4b23-b093-d2a3f65c0774}Number
GUIDGUID{ae069f25-3ac2-4256-b9c3-15dbc15da0e0}Guid
Workflow VersionWorkflowVersion{f1e020bc-ba26-443f-bf2f-b68715017bbc}Integer
Workflow Instance IDWorkflowInstanceID{de8beacf-5505-47cd-80a6-aa44e7ffe2f4}Guid
Source Version (Converted Document)ParentVersionString{bc1a8efb-0f4c-49f8-a38f-7fe22af3d3e0}Lookup
Source Name (Converted Document)ParentLeafName{774eab3a-855f-4a34-99da-69dc21043bec}Lookup
TitleTitle{fa564e0f-0c70-4ab9-b863-0177e6ddd247}Text
Template LinkTemplateUrl{4b1bf6c6-4f39-45ac-acd5-16fe7a214e5e}Text
Html File Linkxd_ProgID{cd1ecb9f-dd4e-4f29-ab9e-e9ff40048d64}Text
Is Signedxd_Signature{fbf29b2d-cae5-49aa-8e0a-29955b540122}Boolean
MergeCombine{e52012a0-51eb-4c0c-8dfb-9b8a0ebedcb6}Computed
RelinkRepairDocument{5d36727b-bcb2-47d2-a231-1f0bc63b7439}Computed

 Custom list fields 
Display NameInternal NameGUIDType
IDID{1d22ea11-1e32-424e-89ab-9fedbadb6ce1}Counter
Content Type IDContentTypeId{03e45e84-1992-4d42-9116-26f756012634}ContentTypeId
Content TypeContentType{c042a256-787d-4a6f-8a8a-cf6ab767f12d}Text
TitleTitle{fa564e0f-0c70-4ab9-b863-0177e6ddd247}Text
ModifiedModified{28cf69c5-fa48-462a-b5cd-27b6f9d2bd5f}DateTime
CreatedCreated{8c06beca-0777-48f7-91c7-6da68bc07b69}DateTime
Created ByAuthor{1df5e554-ec7e-46a6-901d-d85a3881cb18}User
Modified ByEditor{d31655d1-1d5b-4511-95a1-7a09e9b75bf2}User
Has Copy Destinations_HasCopyDestinations{26d0756c-986a-48a7-af35-bf18ab85ff4a}Boolean
Copy Source_CopySource{6b4e226d-3d88-4a36-808d-a129bf52bccf}Text
owshiddenversionowshiddenversion{d4e44a66-ee3a-4d02-88c9-4ec5ff3f4cd5}Integer
Workflow VersionWorkflowVersion{f1e020bc-ba26-443f-bf2f-b68715017bbc}Integer
UI Version_UIVersion{7841bf41-43d0-4434-9f50-a673baef7631}Integer
Version_UIVersionString{dce8262a-3ae9-45aa-aab4-83bd75fb738a}Text
AttachmentsAttachments{67df98f4-9dec-48ff-a553-29bece9c5bf4}Attachments
Approval Status_ModerationStatus{fdc3b2ed-5bf2-4835-a4bc-b885f3396a61}ModStat
Approver Comments_ModerationComments{34ad21eb-75bd-4544-8c73-0e08330291fe}Note
EditEdit{503f1caa-358e-4918-9094-4a2cdc4bc034}Computed
TitleLinkTitleNoMenu{bc91a437-52e7-49e1-8c4e-4698904b2b6d}Computed
LinkFilenameNoMenu
TitleLinkTitle{82642ec8-ef9b-478f-acf9-31f7d45fbc31}Computed
SelectSelectTitle{b1f7969b-ea65-42e1-8b54-b588292635f2}Computed
Instance IDInstanceID{50a54da4-1528-4e67-954a-e2d24f1e9efb}Integer
OrderOrder{ca4addac-796f-4b23-b093-d2a3f65c0774}Number
GUIDGUID{ae069f25-3ac2-4256-b9c3-15dbc15da0e0}Guid
Workflow Instance IDWorkflowInstanceID{de8beacf-5505-47cd-80a6-aa44e7ffe2f4}Guid
URL PathFileRef{94f89715-e097-4e8b-ba79-ea02aa8b7adb}Lookup
PathFileDirRef{56605df6-8fa1-47e4-a04c-5b384d59609f}Lookup
ModifiedLast_x0020_Modified{173f76c8-aebd-446a-9bc9-769a2bd2c18f}Lookup
CreatedCreated_x0020_Date{998b5cff-4a35-47a7-92f3-3914aa6aa4a2}Lookup
Item TypeFSObjType{30bb605f-5bae-48fe-b4e3-1f81d9772af9}Lookup
Effective Permissions MaskPermMask{ba3c27ee-4791-4867-8821-ff99000bac98}Computed
NameFileLeafRef{8553196d-ec8d-4564-9861-3dbe931050c8}File
Unique IdUniqueId{4b7403de-8d94-43e8-9f0f-137a3e298126}Lookup
ProgIdProgId{c5c4b81c-f1d9-4b43-a6a2-090df32ebb68}Lookup
ScopeIdScopeId{dddd2420-b270-4735-93b5-92b713d0944d}Lookup
File TypeFile_x0020_Type{39360f11-34cf-4356-9945-25c44e68dade}Text
HTML File TypeHTML_x0020_File_x0020_Type{4ef1b78f-fdba-48dc-b8ab-3fa06a0c9804}Computed
Edit Menu Table Start_EditMenuTableStart{3c6303be-e21f-4366-80d7-d6d0a3b22c7a}Computed
Edit Menu Table End_EditMenuTableEnd{2ea78cef-1bf9-4019-960a-02c41636cb47}Computed
NameLinkFilenameNoMenu{9d30f126-ba48-446b-b8f9-83745f322ebe}Computed
NameLinkFilename{5cc6dc79-3710-4374-b433-61cb4a686c12}Computed
TypeDocIcon{081c6e4c-5c14-4f20-b23e-1a71ceb6a67c}Computed
Server Relative URLServerUrl{105f76ce-724a-4bba-aece-f81f2fce58f5}Computed
Encoded Absolute URLEncodedAbsUrl{7177cfc7-f399-4d4d-905d-37dd51bc90bf}Computed
File NameBaseName{7615464b-559e-4302-b8e2-8f440b913101}Computed
Property BagMetaInfo{687c7f94-686a-42d3-9b67-2782eac4b4f8}Lookup
Level_Level{43bdd51b-3c5b-4e78-90a8-fb2087f71e70}Integer
Is Current Version_IsCurrentVersion{c101c3e7-122d-4d4d-bc34-58e94a38c816}Boolean

Friday, November 9, 2012

HOW TO ADD A CALENDAR LIST VIEW WEB PART TO ONET.XML

Hi All,

My requirement was to add a calendar in a provisioned page so I found there is a way to set web part properties inside a CDATA section of the view. The Views are generated from the Microsoft.SharePoint.WebPartPages.ListViewWebPart.

I hope this code will help your requirements as well.


<View List="Lists/PluginCalendar" BaseViewID="2" Type="CALENDAR"
       Scope="Recursive" RecurrenceRowset="TRUE" WebPartZoneID="TopWebZone"
       WebPartOrder="0">
       <![CDATA[
         <WebPart xmlns="http://schemas.microsoft.com/WebPart/v2">
             <Assembly>Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral,
                       PublicKeyToken=71e9bce111e9429c</Assembly>
             <TypeName>Microsoft.SharePoint.WebPartPages.ListViewWebPart
                       </TypeName>
             <Title>Calendar of Events</Title>
             <FrameType>None</FrameType>
         </WebPart>
       ]]>
 </View>

Wednesday, October 17, 2012

Set the Custom 404 Error Page


Hi,
Have you ever tried setting up the Custom Error Page in SharePoint 2010. For long time I was aware of only below such ways of setting up the Custom Error Page.
1.) Modify the web.cofig file and set the <customErrors> = "ON".
2.) Either you can set it from IIS.
3.) Programmatically set the custom 404 page.
But a another way is a much smarter way i.e. To configure SharePoint Foundation server or SharePoint Server 2010 to point to a custom 404 error Web page via File System.
  1. Log on to the computer that is running SharePoint Server 2010 by using an account that has administrative permissions.
  2. In Windows Explorer, locate the following folder:
    c:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\LangID
  3. Create the custom HTML file:
    1. On the computer that is running SharePoint Server 2010, copy the Sps404.html file to a temporary folder.
    2. Rename the Sps404.html file. For example, give the file the following name:
      Custom404.html
    3. Modify the Custom404.html file to suit your needs for a custom 404 error message using an HTML editor.
    Note : In sps404.html you will notice STSNavigate("/_layouts/spsredirect.aspx?oldUrl=" + requestedUrl). You need to modify the line as per you requirement , either create another .aspx page and save it in _layouts folder or can directly point to any .aspx file located on the sharepoint library. i.e. STSNavigate("http://www.mytestsite.com/about/pages/404notfound.aspx");
    4. Copy the Custom404.html file to the %systemdrive% \Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\LangID folder.
    Run the following PowerShell commands from the SharePoint 2010 Management Shell:
    $webapp =Get-SPWebApplication http://<serverUrl>:<port>
    $webapp.FileNotFoundPage = "Custom404.html"
    $webapp.update()

How to get Public key token in Visual Studio 2010


I was developing a custom application for SharePoint and needed to assign it with strong name I assigned a strong name to my project. Now was the time to see the token generated for it. I went ahead and tried to drag that assembly to GAC but I got access denied.

Development machine is Windows Server 2008. Now I tried installing it using GACUTIL but I got the same result even being the administrator of the machine.

Challenge comes in when you want to know the public key token that has been generated for the project so that you can make modification in web.config file.

So here is a solution. We will create an external command that will get us the public key token of the project. So that when that command is clicked we get to see result in command window.

Follow these simple steps. Make sure about spacing and parameters shown here.

Go to Tools menu and then external tools.
Click Add button on which the dialog opens.

Set textbox values like this

Command text box value is

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\sn.exe

Click on OK.

Now when you again click on Tools menu, you get to see our command.

Click on it and we will get the result in output window and from there you get to know the public key token.

I hope this will help while you are developing any custom component in SharePoint.