Reference webpart in SharePoint 2010



In this article I am just going to explain how to create a reference webpart programmatically.

Requirement:

Need a webpart that display all pages title with link. Only related page should display in the link. Webpart should be added in all pages. Same page should not have hyperlink. In other words the query will return the page where the webpart is present. But it should have Hyperlink only with other pages.

Namespaces :

using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using System.Text.RegularExpressions;
using System.Text;

Logic:

using (SPSite site = SPContext.Current.Site)
            {             
                using (SPWeb web = site.OpenWeb())
                {
                    SPList list = web.Lists["Pages"];
                    SPQuery fieldQuery = new SPQuery();
                    fieldQuery.Query = @"<Where>
                                      <Eq>
                                         <FieldRef Name='P_Article_References' />
                                         <Value Type='Text'>" + value + @"</Value>
                                      </Eq>
                                   </Where>";
                    StringBuilder strHeader =new StringBuilder();
                    strHeader.Append("<DIV id=articleContent>Conference Report References WebPart</DIV><DIV class=paging-holder><UL class=paging id=pagerUL>");
                    foreach(SPListItem item in list.GetItems(fieldQuery))
                    {
                        if (count != Int32.Parse(_Assignedvalue))
                        {
                            value = item["FileLeafRef"].ToString();
 
                            if (words[0].Substring(i + 6).ToLower() != item["FileLeafRef"].ToString().ToLower())
                            {
                                strHeader.Append(string.Format("<LI>" +
                                            "<h2><A class=top-page href=\"{1}\"><SPAN>{0}</SPAN></A></h2>" +
                                             "</LI>", item["Title"].ToString(), item["FileLeafRef"].ToString()));
                            }
                            else
                            {
                                strHeader.Append(string.Format("<LI>" +
                                            "<h2><SPAN>{0}</SPAN></h2>" +
                                             "</LI>", item["Title"].ToString()));
                            }
                        }
                        count++;
                    }
                    strHeader.Append("</UL></DIV></DIV>");
                    lc.Text = strHeader.ToString();
                }
            }


Screenshot :

Page library :

Share1.gif

Form the above screenshot, it should display the page name with link where the P_Article_refernce value is the same.

Add the web part in all pages.

Default.aspx will look like below:

Share2.gif

Please find the code for the webpart. Hope this will help you.