Friday, July 04, 2008

How to convert string into currency format in C#

string strAmount = 100000;
double dblAmount = Convert.ToDouble(strAmount );

string strAmountInCurrency = string.Format("{0:$#,#.00}", dblAmount ); //returns $1,00,000.00 as result

Customize Sharepoint Search results to open in a browser

Hi,

When u search in share point, results are displayed and if you try to open any xml file (info path file) in the search results, it will ask to open or save. If we try to open it, it will throw some error. To open that in browser follow the steps mentioned below:

Deployment Steps:

I. Create Search Center Site for NDA(parent site) as sub site:

1) Create a sub site named “NDASearch” under NDA site using Search Center Template

a) Go to NDA site. Select Site Actions => Create => “Sites and Workspaces” under Web Pages.

b) Give Title = “NDA Search” and Url Name as http://NDASitePath/NDASearch (ex. http://mchpweb/legal/nda/NDA/NDASearch ).

c) Select the template “Search Center” in “Enterprise” templates.

d) Leave other sections with default values and Click the button “Create”.

II. Binding Search Center Site to the NDA Site Search:

1. Go to the NDA site and select Site Actions

2. Select Site Settings => Select “Search Settings” under “Site Collection Administration”.

3. For “Search Center and Custom Scopes”, select the radio button, “Use custom scopes. Display richer results using the following Search Center:”

4. Add your search center URL (i.e. complete URL without default.aspx like “ http://mchpweb/legal/nda/NDA/NDASearch” or URL without parent site name like “/legal/NDA/NDASearch.”).

5. Click on “Ok” Button.

III. Modify Search Core Results Web Part

1. Go to the results page of the search center created i.e. http://mchpweb/legal/nda/NDA/NDASearch/Results.aspx. ( Click on search center site created and in the Url replace “default.aspx” with “Results.aspx” and press enter to open the search center results page)

2. Click Site Actions => Edit Page. This opens the page in edit mode.

3. Go to “Search Core Results” web part and click on edit button.

4. In the dropdown shown, click on “Modify Shared Web Part”.

5. It will display “Search Core Results” properties panel in right side of the page.

6. Click on “XSL Editor” button under “Data View Properties” tab. It will open Text Entry – Web Page Dialog with default code.

7. Replace the code there with the code from the Section VIII and click “Save” button.

8. Click on “Ok” button in “Data View Properties” tab. (Make sure that you click “Ok” button after clicking the “Save” button. Otherwise changes won’t affect.)

IV. Adding and managing Search Scopes

1. Go to the NDA Site.

2. Select Site Actions => Site Settings => Click on “Search Scopes” under Site Collection Administration.

3. Click on “New Scope” and create a site level scope with the following details.

a. For “Title”, enter meaningful name for the Search scope, like “Search NDA Site” (as it is a scope for Searching NDA site).

b. For “Target Results Page”, select the radio button “Use the default Search Results Page”.

c. Click on “Ok” button. This will create a scope and display it in “Unused Scopes”.

4. Click on the scope you just created. This will open a new page with two sections “Scope Settings” and “Rules”.

5. Click on “New Rule” under “Rules” section. This will open “Add Scope Rule” page.

6. In “Add Scope Rule” page,

a. For “Scope Rule Type”, select the radio button “Web Address (http://server/site)”.

b. For “Web Address”, select “Folder” radio button and enter the folder URL where search needs to be done like your NDA site address (http://mchpweb/legal/nda).

c. For “Behavior”, select the default behavior radio button i.e. “Include - Any item that matches this rule will be included, unless the item is excluded by another rule.”

d. Click on “Ok” button.

7. Similarly add 4 more search scopes for each document library, by following the above mentioned steps from 3 to 6.

a. “Search NDA” - For searching only in the NDA document library (Give NDA Document Library URL as web address.)

b. “Search Amendment” - For searching only in the Amendment document library (Give Amendment Document Library URL as web address.)

c. “Search COI” - For searching in the COI document library (Give COI Document Library URL as web address.)

d. “Search UBA” - For searching in the UBA document library (Give UBA Document Library URL as web address.)

8. After creating the scopes, scopes will not appear in Search Box dropdown immediately (You can check the scope status – “New scope - Ready after next update (starts in X minutes)”). To make the search scope to be immediately available,

a. Go to Central Administration.

b. Click on the Shared Service Provider which is providing search functionality.

c. Click on “Search Settings” under “Search” section.

d. In “Scopes” section, click on “Start Update Now”. You can see the status changing to “Updating”

e. If you refresh the page, it will again show “Start Update Now”. This means scopes are updated and available for use now.

V. Creating New Display Group for Search scopes

1. Go to NDA Site. Select Site Actions => Site Settings => Click on “Search Scopes” under Site Collection Administration.

2. Click on the button “New Display Group”.

3. Give a name to it in “Title” like “NDASearchDisplayGroup”.

4. In the scopes, select the scopes you want to be displayed and what order they need to be displayed by checking the check boxes against each “Scope Name” and by selecting the number in “Position from Top”. (Default scope is populated automatically by the scope whose “Position from Top” is 1).

5. Click on ok.

(NOTE: To manage the search scopes appearing in the NDA site at top right “Search Box” dropdown, go to Site Actions => Site Settings => Click on “Search Scopes” under Site Collection Administration. Click on the Display Group: “Search Dropdown”).

VI. Modifying Search Box Web Part

1. Go to the results page of search center site created i.e. http://mchpweb/legal/nda/NDA/NDASearch/Results.aspx. ( Click on your search center site and in the Url replace “default.aspx” with “Results.aspx” and press enter to open the results page)

2. Click on Site Actions => Edit Page

3. Go to “Search Box” web part and click on edit button.

4. In the drop down displayed, click on “Modify Shared Web Part”. It will open the “Search Box” properties in the right panel.

5. Expand “Scopes Dropdown” tab and for “Dropdown mode”, select “Show, do not include contextual scopes, and default to‘s’ Url”.

6. Expand “Miscellaneous” tab.

a. Replace URL in “Target search results page URL” with search center results page i. e. http://mchpweb/legal/nda/NDA/NDASearch/Results.aspx.

b. For “Scope display group”, enter display group name created in step V (i.e. NDASearchDisplayGroup).

7. Click on “Ok” button.

8. Click on your search center site, which will open default page i.e. http://mchpweb/legal/nda/NDA/NDASearch/default.aspx. Apply the above mentioned steps from 2 to 7.

VII. Modify the “osssearchresults.aspx” page

1. In production machine where SharePoint is installed, open the folder, “C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS”

2. Make a backup of “osssearchresults.aspx” page. (Make sure to take back up of this file to revert back in future if required).

3. Edit “osssearchresults.aspx” page in Notepad or Visual Studio and add the JavaScript function from Section IX inside “<script language="javascript">” tag at the end.

a. In the JavaScript code added, make sure that your search center url is given correctly in the beginning of urlstring.

4. Save the modifed “osssearchresults.aspx” page.

VIII. Code to be replaced in XSLT Editor of Search Core Results Web Part.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >

<xsl:param name="ResultsBy" />

<xsl:param name="ViewByUrl" />

<xsl:param name="ViewByValue" />

<xsl:param name="IsNoKeyword" />

<xsl:param name="IsFixedQuery" />

<xsl:param name="ShowActionLinks" />

<xsl:param name="MoreResultsText" />

<xsl:param name="MoreResultsLink" />

<xsl:param name="CollapsingStatusLink" />

<xsl:param name="CollapseDuplicatesText" />

<xsl:param name="AlertMeLink" />

<xsl:param name="AlertMeText" />

<xsl:param name="SrchRSSText" />

<xsl:param name="SrchRSSLink" />

<xsl:param name="ShowMessage" />

<xsl:param name="IsThisListScope" />

<xsl:param name="DisplayDiscoveredDefinition" select="True" />

<xsl:template name="dvt_1.noKeyword">

<span class="srch-description">

<xsl:choose>

<xsl:when test="$IsFixedQuery">

Please set the 'Fixed Query' property for the webpart.

xsl:when>

<xsl:otherwise>

Enter one or more words to search for in the search box.

xsl:otherwise>

xsl:choose>

span>

xsl:template>

<xsl:template name="dvt_1.empty">

<div class="srch-sort">

<xsl:if test="$AlertMeLink and $ShowActionLinks">

<span class="srch-alertme" >

<a href ="{$AlertMeLink}" id="CSR_AM1" title="{$AlertMeText}">

<img style="vertical-align: middle;" src="/_layouts/images/bell.gif" alt="" border="0"/>

<xsl:text disable-output-escaping="yes">&nbsp;xsl:text>

<xsl:value-of select="$AlertMeText" />

a>

span>

xsl:if>

<xsl:if test="string-length($SrchRSSLink) > 0 and $ShowActionLinks">

<xsl:if test="$AlertMeLink">

|

xsl:if>

<a type="application/rss+xml" href ="{$SrchRSSLink}" title="{$SrchRSSText}" id="SRCHRSSL">

<img style="vertical-align: middle;" border="0" src="/_layouts/images/rss.gif" alt=""/>

<xsl:text disable-output-escaping="yes">&nbsp;xsl:text>

<xsl:value-of select="$SrchRSSText"/>

a>

xsl:if>

div>

<br/>

<br/>

<span class="srch-description" id="CSR_NO_RESULTS">

No results matching your search were found.

<ol>

<li>Check your spelling. Are the words in your query spelled correctly?li>

<li>Try using synonyms. Maybe what you're looking for uses slightly different words.li>

<li>Make your search more general. Try more general terms in place of specific ones.li>

<li>Try your search in a different scope. Different scopes can have different results.li>

ol>

span>

xsl:template>

<xsl:template name="dvt_1.body">

<div class="srch-results">

<xsl:if test="$ShowActionLinks">

<div class="srch-sort">

<xsl:value-of select="$ResultsBy" />

<xsl:if test="$ViewByUrl">

|

<a href ="{$ViewByUrl}" id="CSR_RV" title="{$ViewByValue}">

<xsl:value-of select="$ViewByValue" />

a>

xsl:if>

<xsl:if test="$AlertMeLink">

|

<span class="srch-alertme" >

<a href ="{$AlertMeLink}" id="CSR_AM2" title="{$AlertMeText}">

<img style="vertical-align: middle;" src="/_layouts/images/bell.gif" alt="" border="0"/>

<xsl:text disable-output-escaping="yes">&nbsp;xsl:text>

<xsl:value-of select="$AlertMeText" />

a>

span>

xsl:if>

<xsl:if test="string-length($SrchRSSLink) > 0">

|

<a type="application/rss+xml" href ="{$SrchRSSLink}" title="{$SrchRSSText}" id="SRCHRSSL">

<img style="vertical-align: middle;" border="0" src="/_layouts/images/rss.gif" alt=""/>

<xsl:text disable-output-escaping="yes">&nbsp;xsl:text>

<xsl:value-of select="$SrchRSSText"/>

a>

xsl:if>

div>

<br />

<br />

xsl:if>

<xsl:apply-templates />

div>

<xsl:call-template name="DisplayMoreResultsAnchor" />

xsl:template>

<xsl:template name="SetURLBasedOnDocType">

<xsl:param name="url" />

<xsl:choose>

<xsl:when test="contains($url, '.xml')">

<xsl:value-of select="concat($url,'?OpenIn=Browser')" />

xsl:when>

<xsl:otherwise>

<xsl:value-of select="$url" />

xsl:otherwise>

xsl:choose>

xsl:template>

<xsl:template match="Result">

<xsl:variable name="id" select="id"/>

<xsl:variable name="url" select="url"/>

<xsl:variable name="finalurl" >

<xsl:call-template name="SetURLBasedOnDocType" >

<xsl:with-param name="url" select="url" />

xsl:call-template>

xsl:variable>

<span class="srch-Icon">

<a href="{$finalurl}" id="{concat('CSR_IMG_',$id)}" title="{$url}">

<img align="absmiddle" src="{imageurl}" border="0" alt="{imageurl/@imageurldescription}" />

a>

span>

<span class="srch-Title">

<a href="{$finalurl}" id="{concat('CSR_',$id)}" title="{$url}">

<xsl:choose>

<xsl:when test="hithighlightedproperties/HHTitle[. != '']">

<xsl:call-template name="HitHighlighting">

<xsl:with-param name="hh" select="hithighlightedproperties/HHTitle" />

xsl:call-template>

xsl:when>

<xsl:otherwise>

<xsl:value-of select="title"/>

xsl:otherwise>

xsl:choose>

a>

<br/>

span>

<xsl:choose>

<xsl:when test="$IsThisListScope = 'True' and contentclass[. = 'STS_ListItem_PictureLibrary'] and picturethumbnailurl[. != '']">

<div style="padding-top: 2px; padding-bottom: 2px;">

<a href="{$finalurl}" id="{concat('CSR_P',$id)}" title="{title}">

<img src="{picturethumbnailurl}" alt="" />

a>

div>

xsl:when>

xsl:choose>

<div class="srch-Description">

<xsl:choose>

<xsl:when test="hithighlightedsummary[. != '']">

<xsl:call-template name="HitHighlighting">

<xsl:with-param name="hh" select="hithighlightedsummary" />

xsl:call-template>

xsl:when>

<xsl:when test="description[. != '']">

<xsl:value-of select="description"/>

xsl:when>

xsl:choose>

div >

<p class="srch-Metadata">

<span class="srch-URL">

<a href="{$finalurl}" id="{concat('CSR_U_',$id)}" title="{$url}" dir="ltr">

<xsl:choose>

<xsl:when test="hithighlightedproperties/HHUrl[. != '']">

<xsl:call-template name="HitHighlighting">

<xsl:with-param name="hh" select="hithighlightedproperties/HHUrl" />

xsl:call-template>

xsl:when>

<xsl:otherwise>

<xsl:value-of select="url"/>

xsl:otherwise>

xsl:choose>

a>

span>

<xsl:call-template name="DisplaySize">

<xsl:with-param name="size" select="size" />

xsl:call-template>

<xsl:call-template name="DisplayString">

<xsl:with-param name="str" select="author" />

xsl:call-template>

<xsl:call-template name="DisplayString">

<xsl:with-param name="str" select="write" />

xsl:call-template>

<xsl:call-template name="DisplayCollapsingStatusLink">

<xsl:with-param name="status" select="collapsingstatus"/>

<xsl:with-param name="urlEncoded" select="urlEncoded"/>

<xsl:with-param name="id" select="concat('CSR_CS_',$id)"/>

xsl:call-template>

p>

xsl:template>

<xsl:template name="HitHighlighting">

<xsl:param name="hh" />

<xsl:apply-templates select="$hh"/>

xsl:template>

<xsl:template match="ddd">

xsl:template>

<xsl:template match="c0">

<b>

<xsl:value-of select="."/>

b>

xsl:template>

<xsl:template match="c1">

<b>

<xsl:value-of select="."/>

b>

xsl:template>

<xsl:template match="c2">

<b>

<xsl:value-of select="."/>

b>

xsl:template>

<xsl:template match="c3">

<b>

<xsl:value-of select="."/>

b>

xsl:template>

<xsl:template match="c4">

<b>

<xsl:value-of select="."/>

b>

xsl:template>

<xsl:template match="c5">

<b>

<xsl:value-of select="."/>

b>

xsl:template>

<xsl:template match="c6">

<b>

<xsl:value-of select="."/>

b>

xsl:template>

<xsl:template match="c7">

<b>

<xsl:value-of select="."/>

b>

xsl:template>

<xsl:template match="c8">

<b>

<xsl:value-of select="."/>

b>

xsl:template>

<xsl:template match="c9">

<b>

<xsl:value-of select="."/>

b>

xsl:template>

<xsl:template name="DisplaySize">

<xsl:param name="size" />

<xsl:if test='string-length($size) > 0'>

<xsl:if test="number($size) > 0">

-

<xsl:choose>

<xsl:when test="round($size div 1024) < 1">

<xsl:value-of select="$size" /> Bytes

xsl:when>

<xsl:when test="round($size div (1024 *1024)) < 1">

<xsl:value-of select="round($size div 1024)" />KB

xsl:when>

<xsl:otherwise>

<xsl:value-of select="round($size div (1024 * 1024))"/>MB

xsl:otherwise>

xsl:choose>

xsl:if>

xsl:if>

xsl:template>

<xsl:template name="DisplayString">

<xsl:param name="str" />

<xsl:if test='string-length($str) > 0'>

-

<xsl:value-of select="$str" />

xsl:if>

xsl:template>

<xsl:template name="DisplayCollapsingStatusLink">

<xsl:param name="status"/>

<xsl:param name="urlEncoded"/>

<xsl:param name="id"/>

<xsl:if test="$CollapsingStatusLink">

<xsl:choose>

<xsl:when test="$status=1">

<br/>

<xsl:variable name="CollapsingStatusHref" select="concat(substring-before($CollapsingStatusLink, '$$COLLAPSE_PARAM$$'), 'duplicates:"', $urlEncoded, '"', substring-after($CollapsingStatusLink, '$$COLLAPSE_PARAM$$'))"/>

<span class="srch-dup">

[<a href="{$CollapsingStatusHref}" id="$id" title="{$CollapseDuplicatesText}">

<xsl:value-of select="$CollapseDuplicatesText"/>

a>]

span>

xsl:when>

xsl:choose>

xsl:if>

xsl:template>

<xsl:template name="DisplayMoreResultsAnchor">

<xsl:if test="$MoreResultsLink">

<a href="{$MoreResultsLink}" id="CSR_MRL">

<xsl:value-of select="$MoreResultsText"/>

a>

xsl:if>

xsl:template>

<xsl:template match="All_Results/DiscoveredDefinitions">

<xsl:variable name="FoundIn" select="DDFoundIn" />

<xsl:variable name="DDSearchTerm" select="DDSearchTerm" />

<xsl:if test="$DisplayDiscoveredDefinition = 'True' and string-length($DDSearchTerm) > 0">

<script language="javascript">

function ToggleDefinitionSelection()

{

var selection = document.getElementById("definitionSelection");

if (selection.style.display == "none")

{

selection.style.display = "inline";

}

else

{

selection.style.display = "none";

}

}

script>

<div>

<a href="#" onclick="ToggleDefinitionSelection(); return false;">

What people are saying about <b>

<xsl:value-of select="$DDSearchTerm"/>

b>

a>

<div id="definitionSelection" class="srch-Description" style="display:none;">

<xsl:for-each select="DDefinitions/DDefinition">

<br/>

<xsl:variable name="DDUrl" select="DDUrl" />

<xsl:value-of select="DDStart"/>

<b>

<xsl:value-of select="DDBold"/>

b>

<xsl:value-of select="DDEnd"/>

<br/>

<xsl:value-of select="$FoundIn"/>

<a href="{$DDUrl}">

<xsl:value-of select="DDTitle"/>

a>

xsl:for-each>

div>

div>

xsl:if>

xsl:template>

<xsl:template match="/">

<xsl:if test="$AlertMeLink">

<input type="hidden" name="P_Query" />

<input type="hidden" name="P_LastNotificationTime" />

xsl:if>

<xsl:choose>

<xsl:when test="$IsNoKeyword = 'True'" >

<xsl:call-template name="dvt_1.noKeyword" />

xsl:when>

<xsl:when test="$ShowMessage = 'True'">

<xsl:call-template name="dvt_1.empty" />

xsl:when>

<xsl:otherwise>

<xsl:call-template name="dvt_1.body"/>

xsl:otherwise>

xsl:choose>

xsl:template>

xsl:stylesheet>


IX. Java Script Code to be added in osssearchresults.aspx page

function getURLParam(strParamName)

{

var strReturn = "";

var strHref = window.location.href;

if ( strHref.indexOf("?") > -1 )

{

var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();

var aQueryString = strQueryString.split("&");

for ( var iParam = 0; iParam <>

{

if (aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 )

{

var aParam = aQueryString[iParam].split("=");

strReturn = aParam[1];

break;

}

}

}

return unescape(strReturn);

}

var urlstring = 'http://mchpweb/legal/NDA/NDASearch' + '/Results.aspx?k=' + getURLParam('k') + '&cs=' + getURLParam('cs') + '&u=' + getURLParam('u');

/* replace url only for NDA */

if(window.location.href.indexOf("NDA") > -1)

{

location.replace(urlstring);

}

/* In the above urlstring, replace beginning URL ('http://mchpweb/legal/NDA/NDASearch') with your search center url */