Tuesday 14 December 2010

How To: Customizing alert emails using IAlertNotifyHandler

Nice post about How To: Customizing alert emails using IAlertNotifyHandler.
http://blogs.msdn.com/b/sharepointdeveloperdocs/archive/2007/12/14/how-to-customizing-alert-emails-using-ialertnotificationhandler.aspx

Customizing Alert Notifications and Alert Templates in Windows SharePoint Services 3.0

Nice post about how to customize alert notifications and alert templates in Windows SharePoint Services 3.0.

http://blogs.msdn.com/b/sharepointdeveloperdocs/archive/2007/12/07/customizing-alert-notifications-and-alert-templates-in-windows-sharepoint-services-3-0.aspx

Wednesday 10 November 2010

SharePoint Outlook Connector Advanced Alert System Integration

SharePoint Outlook Connector Advanced Alert System Integration
http://www.sobiens.com/default/sharepoint-advanced-alerts-spoc-demo.aspx

Tuesday 16 March 2010

Digital Signature Support in InfoPath 2010

Here is the improvement in InfoPath on Digital Signature from Gergely Kota.

http://blogs.msdn.com/infopath/archive/2010/02/18/digital-signature-support-in-infopath-2010.aspx

Building a SharePoint 2010 tag cloud search refiner

Nice blog from El Otro

http://httpcode.com/blogs/PermaLink,guid,8b267ee2-e214-4187-8e8d-e3c4f092fc66.aspx

myspace for outlook

What is MySpace for Outlook?
It's a newly available add-in that puts MySpace inside of Outlook:

Uses Microsoft's Social Connector to add the "People Pane," which shows a profile picture and other MySpace info for each contact who's also a friend
Creates a special MySpace Contact List
Shows your friends' status updates and other Stream activities
Provides one-click access to your friends' profiles
Enables you to easily email your friends

http://www.myspace.com/msoutlook

TWITTER ADD-IN FOR MICROSOFT OUTLOOK

TwInbox seamlessly integrates Twitter into Outlook. It is a perfect Twitter client for any Outlook user, from a Twitter newbie to a business professional.

http://www.techhit.com/TwInbox/twitter_plugin_outlook.html

New Ajax Control SeaDragon

The Seadragon control can be used for interactively viewing images. Use your mouse to pan and zoom around the image.

http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/Seadragon/Seadragon.aspx

ASP.NET ComboBox - Master / Detail with Unlimited Detail Levels

The ComboBox provides a built-in master / detail feature, which allows you to organize data from multiple data sources in the same ComboBox. To set up a detail ComboBox, add a new ComboBox control inside the Details section of the master ComboBox.

http://www.obout.com/combobox/aspnet_master_detail_unlimited.aspx

Wednesday 10 March 2010

Powershell articles from Ted

http://blog.tedpattison.net/Lists/Posts/Post.aspx?ID=3

Monday 8 March 2010

SQL Reporting Services data from SharePoint lists

Nice post to create reports with SharePoint data in SharePoint 2007
http://www.codeproject.com/KB/reporting-services/ReportFromSharePoint.aspx

Thursday 4 March 2010

Using the SharePoint Business Data Connectivity Designer in VS 2010

Nice web cast. Thanks to Boris and Beth.

Boris shows off the new Business Data Connectivity designer in Visual Studio 2010 and how it allows you to describe data coming from multiple data sources and how to work with them in SharePoint. He builds a master/detail association across entities coming from separate data sources (a database and a service) and demonstrates how the entities can be displayed and edited.

http://channel9.msdn.com/posts/funkyonex/Using-the-SharePoint-Business-Data-Connectivity-Designer-in-VS-2010/

Visual Web Part in SharePoint 2010

Visual Web Part in SharePoint 2010

Before I explain what it is, I will remind what we were doing to have visual control in SharePoint 2007. We were creating our ascx controls in TEMPLATE\CONTROLTEMPLATES folder. To be able to use the control in our webpart, we were loading it in CreateChildControls method with this.Page.LoadControl(_ascxPath); . _ascxPath is path for our control. You can see the following complete syntax.

protected override void CreateChildControls()
{
Control control = this.Page.LoadControl(_ascxPath);
Controls.Add(control);
base.CreateChildControls();
}

So what is new now. To be honest nothing has changed in strategy. But Visual studio made a great job including this future into Visual Studio. We do not need to think about deployment hassle and all other painfull operations. Now we can just simply add and change this future quickly.

Here is the sample about How to create Visual Web Part in Visual Studio 2010.
http://www.helloitsliam.com/archive/2009/10/20/sharepoint-2010-%E2%80%93-create-a-visual-web-part.aspx

Tuesday 2 March 2010

Asp.Net 4.0 - Session State Compression

Using sessions sometimes may cause performance problems. To prevent these we usually split the IIS and State machine server. Additionally we would store session in SQL server. One of the new future in ASP.net 4 will definetly be our pain killer on this subject. It is very simple configuraation. When we configure the sessionstate in web.config, we will simply set compressionEnabled as true. Then ASP.NET will compress (and decompress) serialized session state by using the .NET Framework System.IO.Compression.GZipStream class. You can simply give it a go and see the difference via configuring SQL DB as a sessionstate server and checking the size of SessionItemLong field in ASPStatesTempSessions table. On text values we can see incredible difference, but if it is an image file the difference will not be that incredible.

mode="SqlServer"
sqlConnectionString="data source=dbserver;Initial Catalog=aspnetstate"
allowCustomSqlDatabase="true"
compressionEnabled="true"
/>

Getting started with LINQ to SharePoint in SharePoint 2010

Nice blog from Tobias Zimmergren, it clearly explains how to use LINQ to SharePoint in SharePoint 2010. I am now planing to integrate this into SharePoint Explorer in VS 2010.
http://www.zimmergren.net/archive/2010/02/19/sp-2010-getting-started-with-linq-to-sharepoint-in-sharepoint-2010.aspx

Nice posts from MS CS Forum

Post1: Displaying advertisement depending on basket content

Requirement:
1. User has 1 of product 12345 in their basket
2. They navigate to the cart page
3. See advertisement which says to "buy 1 more to get free shipping" or "buy 1 more to get 10% off" (just examples). There would be discounts defined for these.

Elegant solution of Ravi
1. Create a user profile to store basket line items information.
2. Whenever an item is added to the basket, we will update this user object.
3. whenever a basket is converted into purhase order we will remove items from this profile,.
4. Using marketing manager, set basketitems as target profile. Check my blog which explains how to set target profile.
http://microsoftblog.co.in/commerceserver/targeting-on-other-profile-objects/
5. Create advertisements or discounts based on that target expression.

Sunday 28 February 2010

Windows Mobile reloaded!

http://www.engadget.com/2010/02/15/windows-phone-7-series-hands-on-and-impressions/
http://www.engadget.com/2010/02/15/windows-phone-7-series-is-official-and-microsoft-is-playing-to/
http://www.escapistmagazine.com/articles/view/columns/pocket-gamer/7196-The-Pocket-Gamer-Report-Android-and-Windows-Mobile-7

Thursday 25 February 2010

SharePoint Outlook Connector now works with SharePoint 2010

Finally I was able to make it working on SharePoint 2010. To be honest I did not have to do much things as most of the functionality worked pretty straightforward.

It also supports saving email meta data to SharePoint lists and attaching documents from SharePoint explorer panel.

Here is the link where you can download it.
http://spoutlookconnector.codeplex.com/

How to Add Current Item Field Values to DataFormWebPart as a parameter

How to Add Current Item Field Values to DataFormWebPart as a parameter

One of my colleague had to implement a page which should give master detail functionality. So the requirement was displaying related items in the display form page. So she placed two webparts one for current list item (master) and one for related items (details). As it was display form (DispForm.aspx) the only she had was ItemID which is in the querystring. But it was not enough, she wanted it to pass One of the current item field value to filter related Items List. There is no option in the DataFormWebPart to get that. Therefore she asked me if there is any workaround for this.

I did couple of investigation but could not find anything. Then I produced the following solution.

Basicly you place the following class into your project. That is a replacement for DataFormWebPart which allows you to set current Item Field Values as parameters.

* Deploy this class with your DLL into GAC
* Add this as a safe control into web.config
* Open your page do the following modifications

Place this to your page and change assembly, namespace with yours.

<%@ Register Tagprefix="ExWebPart" Namespace="Sobiens.SharePoint.WebParts" Assembly="Sobiens.SharePoint, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e76709a445fee1d6" %>

Goto DataFormWebPart tag and change it to <ExWebPart:EnhancedDataFormWebPart
Finally change your parameterbinding

<ParameterBinding Name="Country" Location="None" DefaultValue="currentitemvalue(Country)" />

This will set Parameter named Country to current item Country field's value.

Hope this helps.



public class EnhancedDataFormWebPart : DataFormWebPart
{
XmlDocument _ParameterBindingsXmlDocument = null;
XmlDocument ParameterBindingsXmlDocument
{
get
{
if (_ParameterBindingsXmlDocument == null)
{
_ParameterBindingsXmlDocument = new XmlDocument();
_ParameterBindingsXmlDocument.LoadXml("" + this.ParameterBindings + "");
}
return _ParameterBindingsXmlDocument;
}
}

XmlNode _ParameterBindingsXmlNode = null;
XmlNode ParameterBindingsXmlNode
{
get
{
if (_ParameterBindingsXmlNode == null)
{
_ParameterBindingsXmlNode = ParameterBindingsXmlDocument.SelectSingleNode("/ParameterBindings");
}
return _ParameterBindingsXmlNode;
}
}


private void SetParameterBinding(string key, string value)
{
XmlNode node = ParameterBindingsXmlNode.SelectSingleNode("/ParameterBindings/ParameterBinding[@Name = '" + key + "']");
if (node == null)
{
XmlNode parameterBindingNode = ParameterBindingsXmlDocument.CreateElement("ParameterBinding");

XmlAttribute nameAtrribute = ParameterBindingsXmlDocument.CreateAttribute("Name");
nameAtrribute.Value = key;
XmlAttribute locationAttribute = ParameterBindingsXmlDocument.CreateAttribute("Location");
locationAttribute.Value = "None";
XmlAttribute defaultValueAttribute = ParameterBindingsXmlDocument.CreateAttribute("DefaultValue");
defaultValueAttribute.Value = value;

parameterBindingNode.Attributes.Append(nameAtrribute);
parameterBindingNode.Attributes.Append(locationAttribute);
parameterBindingNode.Attributes.Append(defaultValueAttribute);

ParameterBindingsXmlNode.AppendChild(parameterBindingNode);
}
else
{
node.Attributes["DefaultValue"].Value = value;
}
}

private void ReplaceFormParameterBindings()
{
foreach (XmlNode node in ParameterBindingsXmlNode.ChildNodes)
{
string defaultValue=node.Attributes["DefaultValue"].Value;
if (defaultValue.ToLower().StartsWith("currentitemvalue(") == true)
{
int startIndex = defaultValue.IndexOf("(");
int lastIndex = defaultValue.IndexOf(")");
string fieldName = node.Attributes["DefaultValue"].Value.Substring(startIndex+1, lastIndex - startIndex-1);
if (SPContext.Current.Item[fieldName] != null)
{
node.Attributes["DefaultValue"].Value = SPContext.Current.Item[fieldName].ToString();
}
}
}
}

private void SetPropertiesAsParameterBindings()
{
ReplaceFormParameterBindings();
this.ParameterBindings = ParameterBindingsXmlNode.InnerXml;
}

protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
SetPropertiesAsParameterBindings();
}
}

Tuesday 16 February 2010

FireFox's FireBug sometimes cause double postbacks

FireBug's double postback bug

"Thanks for the great responses here. In my case it turn out to be FireBug (version 1.05) with FireFox 2.0.0.20. Once I switched off the FireBug Add-in, the double posts stopped."

Monday 15 February 2010

SharePointOutlookConnector

SharePointOutlookConnector makes it easier for outlook users to upload emails to SP and attach SP documents to an email message . You'll no longer have to save your email to desktop and upload from SP UI or download SP documents to your drive and attach them to your email.

http://spoutlookconnector.codeplex.com/

Monday 1 February 2010

A GridView CommandField of type Image causes a double submit.

When clicking on a CommandField of type Image in a GridView, there are two submits. One is the onclick eventhandler and the other is the default submit of an input element of type image. In Beta2 and before there was no onclick event handler and so there was only one submit, this is only a problem since RTM.

http://connect.microsoft.com/VisualStudio/feedback/details/105123/a-gridview-commandfield-of-type-image-causes-a-double-submit