SharePoint Object Model provides the functionality where web parts can communicate with each others by sending and getting parameters and this mechanism is called Connected Web Parts. You can create connections between web parts and send/receive information between them.
In this post i am going to explain how you can make connection between web parts pro-grammatically.
The connected web parts is based on the concept of interface.
First of all creates a interface and a property whose value can be send to other web parts. In my case i have created a property to send client info to other web part
public interface ClientInterface
{
string clientinfo { get; }
}
Now create a web part from say "SenderSenderWebPart " where you want to send the value to other web part and inherit above interface like
public class SenderWebPart : WebPart,ClientInterface
Now create a property to send the value in this web part
public string clientinfo
{
get
{
return "Your Test Value";
}
}
and create a connection attribute like below:
[ConnectionProvider("clientinfoprovider")]
public ClientInterface getclientname()
{
return this;
}
Now create another web part say "Receiver" that will receive this clientinfo from above web part
Create a object of interface in this new web part like ClientInterface clientinfostring;
Create a connection consumer attribute like
[ConnectionConsumer("clientinforRightNavigationWebpart", "GetClientInfo")]
public void ReceiveClientInfo(ClientInterface c)
{
clientinfostring = c;
}
Now you can get the clientinfo in this web part.
For example
protected override void RenderContents(HtmlTextWriter writer)
{
if (clientinfostring != null)
{
string clientname= clientinfostring.clientinfo;
writer.Write(clientname);
}
Now build and deploy the web parts. When you place these web parts on page, select edit page, edit sender web part, select connection and make connection to the receiver web part as shown below
Once you create a connection it ask for the confirmation. Now your web parts are connected and can communicate with each other.