In this article, we will learn how to create a Custom Web Part in SharePoint using Visual Studio.
After reading this article, you will learn the following:
Ø Creating custom web part using visual studio
Ø How to use Labels, Rich text box and Buttons (with events) and validation
controls in the custom web part?
Ø How to validate the fields in custom web part in SharePoint?
Ø How to deploy the web part in SharePoint site?
Scenario:
Suppose that in a SharePoint page, you want the users to comment about the page or send
some feedback, and then you can use this web part.
some feedback, and then you can use this web part.
Solution:
It is created the following solution using Visual Studio 2005.
Steps:
1. Open the Visual Studio -> Click File -> New project ->
Select Visual C# from Project types -> SharePoint -> web Part (Use this link for downloading the
Visual Studio Extensions for SharePoint for creating SharePoint solutions in the Visual Studio 2005)
2. Once created, delete the web part present in the solution named webpart1. Now click on the
Select Visual C# from Project types -> SharePoint -> web Part (Use this link for downloading the
Visual Studio Extensions for SharePoint for creating SharePoint solutions in the Visual Studio 2005)
2. Once created, delete the web part present in the solution named webpart1. Now click on the
Project Solution -> Add -> New Item -> SharePoint -> Web Part -> Give the name as
CommentWebPart -> Click Add to create a web part file in the project solution
3. Now, we will create controls and add in the web part. See the following code which is
3. Now, we will create controls and add in the web part. See the following code which is
used for creating this web part.
Program.cs:
using System; using System.Runtime.InteropServices; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Serialization; using Microsoft.SharePoint; using Microsoft.SharePoint.WebControls; using Microsoft.SharePoint.WebPartPages; namespace CommentWebPart { [Guid("745a216c-1126-4000-a189-02ebc60d7e67")] public class CommentWebPart : System.Web.UI.WebControls.WebParts.WebPart { TextBox txtContactName; TextBox txtEmailAddress; InputFormTextBox txtBox; Button btnSubmit; Button btnCancel; Label lblSpace; public CommentWebPart() { } protected override void CreateChildControls() { try { base.CreateChildControls(); Table t; TableRow tr; TableCell tc; // Creating a table to add the controls in it t = new Table(); // Label for contact name tr = new TableRow(); tc = new TableCell(); tc.Style["padding-top"] = "5px"; tc.VerticalAlign = VerticalAlign.Top; Label lblConatctName = new Label(); lblConatctName.Text = "Conact Name"; tc.Controls.Add(lblConatctName); tr.Controls.Add(tc); // Text box for contact name tc = new TableCell(); tc.VerticalAlign = VerticalAlign.Top; txtContactName = new TextBox(); txtContactName.ID = "txtContactName"; txtContactName.Width = Unit.Pixel(250); tc.Controls.Add(txtContactName); /* Creating required field validator for Contact Name. * If the value is empty, then should throw error on clicking button Submit*/ RequiredFieldValidator objName = new RequiredFieldValidator(); objName.ControlToValidate = "txtContactName"; objName.ErrorMessage = "Conatct Name cannot be empty"; tc.Controls.Add(objName); tr.Controls.Add(tc); t.Controls.Add(tr); // Label for email id tr = new TableRow(); tc = new TableCell(); tc.VerticalAlign = VerticalAlign.Top; Label lblEmailId = new Label(); lblEmailId.Text = "Email ID"; tc.Controls.Add(lblEmailId); tr.Controls.Add(tc); // Text box for email id tc = new TableCell(); tc.VerticalAlign = VerticalAlign.Top; txtEmailAddress = new TextBox(); txtEmailAddress.ID = "txtEmailAddress"; txtEmailAddress.Width = Unit.Pixel(250); tc.Controls.Add(txtEmailAddress); /* Creating required field validator for Email ID. * If the value is empty, then should throw error on clicking button Submit*/ RequiredFieldValidator objEmailID = new RequiredFieldValidator(); objEmailID.ControlToValidate = "txtEmailAddress"; objEmailID.ErrorMessage = "Email Id cannot be left empty"; tc.Controls.Add(objEmailID); tr.Controls.Add(tc); /* Creating Regular Expression validator for Email ID. * If the value is empty or not in a regular Email ID format, * then should throw error on clicking button Submit*/ RegularExpressionValidator objEmail = new RegularExpressionValidator(); objEmail.ControlToValidate = "txtEmailAddress"; objEmail.ErrorMessage = "Email Id is not in the correct format"; objEmail.Display = ValidatorDisplay.Dynamic; objEmail.ValidationExpression = @"^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA- Z]\.)+[a-zA-Z]{2,9})$"; tc.Controls.Add(objEmail); tr.Controls.Add(tc); t.Controls.Add(tr); // Label for text box tr = new TableRow(); tc = new TableCell(); tc.VerticalAlign = VerticalAlign.Top; Label lblComments = new Label(); lblComments.Text = "Comments"; tc.Controls.Add(lblComments); tr.Controls.Add(tc); // Creating a rich text box for comments tc=new TableCell(); tc.VerticalAlign=VerticalAlign.Top; txtBox=new InputFormTextBox(); txtBox.ID="txtBox"; txtBox.RichText = true; txtBox.RichTextMode=SPRichTextMode.FullHtml; txtBox.TextMode=TextBoxMode.MultiLine; txtBox.Rows=10; txtBox.Width=Unit.Percentage(100); txtBox.Height = Unit.Percentage(30); tc.Controls.Add(txtBox); tr.Controls.Add(tc); t.Controls.Add(tr); // Creating empty cell for spacing tr = new TableRow(); tc = new TableCell(); lblSpace = new Label(); lblSpace.Text = " "; tc.Controls.Add(lblSpace); tr.Controls.Add(tc); tc = new TableCell(); // Creating button submit event btnSubmit = new Button(); btnSubmit.ID = "btnSubmit"; btnSubmit.Text = "Submit"; btnSubmit.Click +=new EventHandler(btnSubmit_Click); tc.Controls.Add(btnSubmit); // Creating button cancel event btnCancel = new Button(); btnCancel.ID = "btnCancel"; btnCancel.Text = "Cancel"; btnCancel.Click +=new EventHandler(btnCancel_Click); lblSpace = new Label(); lblSpace.Text = " "; tc.Controls.Add(lblSpace); tr.Controls.Add(tc); tc.Controls.Add(btnCancel); tr.Controls.Add(tc); t.Controls.Add(tr); this.Controls.Add(t); } catch (Exception ex) { string err = "Error Occured while loading the web part" + ex.Message; } } protected void btnSubmit_Click(object sender, EventArgs e) { try { // Creating the EMail message System.Text.StringBuilder txtMessage = new System.Text.StringBuilder(); txtMessage.Append("Contact Name: "); txtMessage.AppendLine(txtContactName.Text); txtMessage.Append("Email Address: "); txtMessage.AppendLine(txtEmailAddress.Text); txtMessage.AppendLine(); txtMessage.AppendLine("Comment:"); txtMessage.AppendLine(txtBox.Text); // Creating the Email subject message System.Text.StringBuilder txtsubject = new System.Text.StringBuilder(); txtsubject.Append("Comment from"); txtsubject.Append(txtContactName.Text); // Cerating the message header System.Collections.Specialized.StringDictionary txtmessageHeader = new System.Collections.Specialized.StringDictionary(); // To whom the mail should be sent txtmessageHeader.Add("to", "MAIL ID OF THE USER TO WHOM THE COMMENT HAS TO BE SENT"); // From whom the comment is being sent txtmessageHeader.Add("from", txtEmailAddress.Text); txtmessageHeader.Add("subject", txtsubject.ToString()); txtmessageHeader.Add("content-type", "text/RichText"); // Send the email with the comment from the user Microsoft.SharePoint.Utilities.SPUtility.SendEmail(SPContext.Current.Web, txtmessageHeader, txtMessage.ToString()); // Clear the fields after sending the mail txtContactName.Text = ""; txtEmailAddress.Text = ""; txtBox.Text = ""; } catch (Exception ex) { string str= "Unable to send mail:" + ex.Message; } } protected void btnCancel_Click(object sender, EventArgs e) { // Clear the fields on clicking cancel txtContactName.Text = ""; txtEmailAddress.Text = ""; txtBox.Text = ""; } } }
4. Build the web part and check for errors.
5. Now, to deploy the solution Right Click on the project solution -> Select Deploy to add
6. Now the solution will be present in the Solution Gallery
(Central Administration-> Operations -> Solution Management) in the SharePoint
site and we have to add it to our site.
8. Now, Click on New -> You will see the list of deployed web parts and click on Comment Web part and thenClick Populate Gallery
9. Now the web part is available in the SharePoint site but we have to add Safe control entry in theweb.config of the site. Add the following in the web.config in the SAFE CONTROLS tag section
10. Now you can add the created custom web part in your SharePoint site. This will look as follows:
According to the required field validation, if the name and email id is field is left empty
According to the required field validation, if the name and email id is field is left empty
then the following screen should be seen:
If the Email ID is given in the wrong format then according to the regular expression validation,
If the Email ID is given in the wrong format then according to the regular expression validation,
No comments:
Post a Comment