Friday, March 2, 2012

Lesson 06: Validation in webpart and toolpart


Exercise : Cơ bản về validation và javascript cho webpart
·        Tiếp tục với WebPartSoln
v    Exercise 01: Chuẩn bị tài nguyên cho webpart
Ø     Thêm mi Class Library Project  tên là ValidationForWebpart
Ø     Click vào References | R-Right | Add Reference
Ø     Chọn Microsoft.Sharepoint.Dll vào  thư mục của  WebPartSoln
Ø     Tiếp tục chọn Tab .NET | System.Web
§        Khai báo Using
·        using System.Web;
·        using System.Web.UI;
·        using Microsoft.SharePoint;
·        using Microsoft.SharePoint.WebPartPages;
·        using System.Web.UI.WebControls;
§        Khai báo kế thừa từ WebPart Class cho Class1
Ø      Chọn Microsoft.Sharepoint.Dll vào  thư mục của  WebPartSoln
Ø     Vào thư mục Properties m file AssemblyInfo.cs
§        Di chuyển xuống phần cuối cùng của File AssemblyInfo.cs, thêm vào : (tùy với vị trí đặt Hkgsolution.snk).
·        [assemblyAssemblyKeyFile("..\\hkgsolution.snk")]
Ø     Build project ở chế độ Release và succsessfull

v    Exercise 02: Cơ bản validation cho webpart sử dụng javascript
Ø     Tiếp tục với ValidationForWebpart project
Ø     Đổi Class1 thành BasicOfJavascriptValidation.cs
Ø     Khai báo code trong phương thức CreateChildControls
§        Khai báo và khởi tạo Literal literalForKeyword
·        Gán “Keyword: ” cho thuộc tính Text của literalForKeyword
·        Thêm vào literalForKeyword webpart
§        Khai báo và khởi tạo TextBox tên txtKeyword
·        Thêm vào txtKeyword webpart
§        Khai báo và khởi tạo Button tên btnOK
§        Gán “Search: ” cho thuộc tính Text của btnOK
§        Khai báo code javascript để kiểm tra giá trị của txtKeyword
§        Nếu người dùng không nhập keyword vào txtKeyword và nhấn nút search và hiển thị thông điệp là “vui lòng nhập từ khóa và click nút search”
§        Thêm btnSearch vào webpart
using System;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;
using Microsoft.SharePoint.WebControls;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Xml.Serialization;

namespace ValidotorForWebpart
{
    public class BasicOfJavaScriptValidator:WebPart
    {
        protected override void CreateChildControls()
        {
            Literal literalForKeyWord = new Literal();
            literalForKeyWord.Text = "KeyWord: ";           
            this.Controls.Add(literalForKeyWord);
            TextBox txtKeyWord = new TextBox();
            this.Controls.Add(txtKeyWord);
            string javaScript = "function ShowMessage(msg){alert(msg);}";
            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "ABC", javaScript, true);
            Button btnOK = new Button();
            btnOK.Text = "Search";
            this.Controls.Add(btnOK);
            if (txtKeyWord.Text=="")
            {
                btnOK.OnClientClick = "ShowMessage('vui long nhap tu khoa va nhan enter')";
            }
        }
    }
}

Ø     Thêm BasicOfJavascriptValidation.dwp
Ø     Build project chế độ Release và Deploy WebPart
§        Copy ValidationForWebpart.dll đến thư mục bin
§        Copy BasicOfJavascriptValidation.dwp đến thư mục wpcatalog
§        Thêm thẻ <SafeControl>
<SafeControl Assembly="ValidotorForWebpart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ec47e7d9465cc36e"Namespace="ValidotorForWebpart" TypeName="*" Safe="True" />
Ø     Quay lại sharepoint site
§        Thêm WebPart này đến WebPart page
§        Không nhập bất cứ cái gì vào textbox và click nút search
§        Sẽ xuất hiện thông điệp lên màn hình
v    Exercise 03: Cơ bản validation cho webpart sử dụng server control
Ø     Tiếp tục với ValidationForWebpart project
Ø     Tạo mới 1 Class tên BasicOfValidation.cs
Ø     Khai báo code trong phương thức CreateChildControls
§        Chú ý sử dụng đối tượng Table, TableRow, TableCell để sắp xếp các control trên webpart
§        Khai báo và khởi tạo Literal literalForWellcomeMessage
·        Gán “ Vui lòng nhập UserName và Password để thay đổi: ” cho thuộc tính Text của literalForWellcomeMessage
·        Thêm vào literalForWellcomeMessage webpart
§        Khai báo và khởi tạo Literal literalForUserName
·        Gán “ User Name: ” cho thuộc tính Text của literalForUserName
·        Thêm vào literalForUserName webpart
§        Khai báo và khởi tạo TextBox tên txtUserName
·        Thêm vào txtUserName vào webpart
§        Khai báo và khởi tạo RequiredFieldValidator
·        Khai báo thuộc tính ControlToValidate cho txtUserName
·        Khai báo thông điệp “Vui lòng nhập UserName” cho thuộc tính Text
·        Thêm RequiredFieldValidator vào webpart
§        Khai báo và khởi tạo Button tên btnChange
·        Gán “Change Password” cho thuộc tính Text của btnChange
·        Thêm btnChange vào webpart
                   Table table = new Table();
            table.GridLines = GridLines.Both;
            //row1
            TableRow tableRow = new TableRow();
            TableCell tableCell = new TableCell();           
            Literal literalForWellComeMessage = new Literal();
            literalForWellComeMessage.Text = "vui long nhap username va password cua ban de thay doi";
            tableCell.Controls.Add(literalForWellComeMessage);
            tableRow.Cells.Add(tableCell);
            tableCell = new TableCell();
            tableRow.Cells.Add(tableCell);
            table.Rows.Add(tableRow);

            //row2
            tableRow = new TableRow();
            tableCell = new TableCell();
            Literal literalForUserName = new Literal();
            literalForUserName.Text = "UserName: ";
            tableCell.Controls.Add(literalForUserName);
            tableRow.Cells.Add(tableCell);

            tableCell = new TableCell();
            TextBox txtUserName = new TextBox();
            txtUserName.ID = "textBox1";
            tableCell.Controls.Add(txtUserName);
            tableRow.Cells.Add(tableCell);
            table.Rows.Add(tableRow);

            //row3
            tableRow = new TableRow();
            tableCell = new TableCell();
            RequiredFieldValidator requiredFieldValidator = new RequiredFieldValidator();
            requiredFieldValidator.ControlToValidate = txtUserName.ID;
            requiredFieldValidator.SetFocusOnError = true;
            requiredFieldValidator.Text = "*";
            requiredFieldValidator.ErrorMessage = "Vui long nhap Username !!!!";
            tableCell.Controls.Add(requiredFieldValidator);
            tableRow.Cells.Add(tableCell);

            tableCell = new TableCell();
            Button btnChange = new Button();
            btnChange.Text = " Change Password ";
            tableCell.Controls.Add(btnChange);
            tableRow.Cells.Add(tableCell);
            table.Rows.Add(tableRow);
            this.Controls.Add(table);
Ø     Thêm BasicOfValidation.dwp
Ø     Build project chế độ Release và Deploy WebPart
§        Copy ValidationForWebpart.dll đến thư mục bin
§        Copy BasicOfValidation.dwp đến thư mục wpcatalog
Ø     Quay lại sharepoint site
§        Thêm WebPart này đến WebPart page
§        Không nhập bất cứ cái gì vào textbox và click nút Change Password
§        Sẽ xuất hiện thông điệp lên webpart
v    Exercise 04: Cơ bản validation cho webpart sử dụng server control
Ø     Tiếp tục với ValidationForWebpart project
Ø     Tiếp tục với Class BasicOfValidation.cs
Ø     Khai báo thêm code trong phương thức CreateChildControls
§        Chú ý sử dụng đối tượng Table, TableRow, TableCell để sắp xếp các control trên webpart
§        Khai báo và khởi tạo Literal literalForPassword
·        Gán “ Password: ” cho thuộc tính Text của literalForPassword
·        Thêm vào literalForPassword webpart
§        Khai báo và khởi tạo TextBox tên txtPassword
·        Thêm vào txtPassword vào webpart
§        Khai báo và khởi tạo RequiredFieldValidator
·        Khai báo thuộc tính ControlToValidate cho txtPassword
·        Khai báo thông điệp “Vui lòng nhập Password của bạn” cho thuộc tính Text
·        Thêm RequiredFieldValidator vào webpart
§        Khai báo và khởi tạo TextBox tên txtNewPassword
·        Thêm vào txtNewPassword vào webpart
§        Khai báo và khởi tạo CompareValidator
·        Khai báo thuộc tính ControlToValidator cho txtNewPassword
·        Khai báo thuộc tính ControlToCompare cho txtPassword
·        Khai báo thông điệp “Vui lòng nhập lại password” cho thuộc tính Text
·        Thêm CompareValidator vào webpart
            //row4
            tableRow = new TableRow();
            tableCell = new TableCell();
            Literal literalForPassword = new Literal();
            literalForPassword.Text = "Password: ";
            tableCell.Controls.Add(literalForPassword);
            tableRow.Cells.Add(tableCell);

            tableCell = new TableCell();
            TextBox txtPassword = new TextBox();
            txtPassword.ID = "textBox2";
            tableCell.Controls.Add(txtPassword);
            tableRow.Cells.Add(tableCell);
            table.Rows.Add(tableRow);
           
            //row5
            tableRow = new TableRow();
            tableCell = new TableCell();
            RequiredFieldValidator requiredFieldValidatorForPassword = new RequiredFieldValidator();
            requiredFieldValidatorForPassword.ControlToValidate = txtPassword.ID;
            requiredFieldValidatorForPassword.SetFocusOnError = true;
            requiredFieldValidatorForPassword.Text = "*";
            requiredFieldValidatorForPassword.ErrorMessage = "Vui long nhap Password !!!";
            tableCell.Controls.Add(requiredFieldValidatorForPassword);
            tableRow.Cells.Add(tableCell);

            tableCell = new TableCell();
            TextBox txtNewPassword = new TextBox();
            txtNewPassword.ID = "textBox3";
            tableCell.Controls.Add(txtNewPassword);
            tableRow.Cells.Add(tableCell);
            table.Rows.Add(tableRow);

            //row5
            tableRow = new TableRow();
            tableCell = new TableCell();
            CompareValidator compareValidator = new CompareValidator();
            compareValidator.ControlToValidate = txtNewPassword.ID;
            compareValidator.ControlToCompare = txtPassword.ID;
            compareValidator.ErrorMessage = "vui long nhap lai password cho dung !";
            tableCell.Controls.Add(compareValidator);
            tableRow.Cells.Add(tableCell);

            tableCell = new TableCell();
            tableRow.Cells.Add(tableCell);
            table.Rows.Add(tableRow);
Ø     Build project chế độ Release và Deploy WebPart
§        Copy ValidationForWebpart.dll đến thư mục bin
Ø     Quay lại sharepoint site
§        Thêm WebPart này đến WebPart page
§        Không nhập bất cứ cái gì vào textbox và click nút Change Password
§        Sẽ xuất hiện thông điệp lên webpart
v    Exercise 05: Cơ bản validation trong toolpart
Ø     Tiếp tục với ValidationForWebpart project
Ø     Tạo mới 1 Class tên ToolpartForWebpart.cs
§        Using SharePoint dll
§        Khai báo kế thừa từ Class ToolPart
Ø     Tạo mới Class ValidationForWebpart và khai báo phương thức GetToolParts
using System;
using System.Text;
using System.Web.UI;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;
using System.ComponentModel;
using System.Xml.Serialization;
using System.Web.UI.WebControls;
namespace ValidotorForWebpart
{
    [DefaultProperty("Text"),
      ToolboxData("<{0}:ValidationForWebpart runat=server></{0}:ValidationForWebpart>"),
      XmlRoot(Namespace = "ValidotorForWebpart")]
    public class ValidationForWebpart:WebPart
    {
        private string showMessage = "WellCome Message";
        [Browsable(false), Category("ValidationForWebpart Properties"),
        DefaultValue("Hello ValidationForWebpart"),
        WebPartStorage(Storage.Personal)]
        public string ShowMessage
        {
            get { return showMessage; }
            set { showMessage = value; }
        }

        private string userName = "Xin Chao Hung";
        [Browsable(false), Category("ValidationForWebpart Properties"),
        DefaultValue("Hello ValidationForWebpart"),
        WebPartStorage(Storage.Personal)]
        public string UserName
        {
            get { return userName; }
            set { userName = value; }
        }

        protected override void CreateChildControls()
        {
            Literal literalForValidationWebpart = new Literal();
            literalForValidationWebpart.Text = showMessage;
            this.Controls.Add(literalForValidationWebpart);

            TextBox txtUserName = new TextBox();
            txtUserName.ID = "textBox2";
            txtUserName.Text = userName;
            this.Controls.Add(txtUserName);
            RequiredFieldValidator requiredFieldValidator = new RequiredFieldValidator();
            requiredFieldValidator.ValidationGroup = "Change";
            requiredFieldValidator.ControlToValidate = txtUserName.ID;
            requiredFieldValidator.SetFocusOnError = true;
            requiredFieldValidator.Text = "Vui lòng nhập tên của bạn !!!!";
            this.Controls.Add(requiredFieldValidator);           
        }

        public override ToolPart[] GetToolParts()
        {
            ToolPart[] toolpart = new ToolPart[3];
            WebPartToolPart wptp = new WebPartToolPart();
            CustomPropertyToolPart custom = new CustomPropertyToolPart();
            ToolpartForWebpart toolpartForWebpart = new ToolpartForWebpart();
            toolpart[0] = wptp;
            toolpart[1] = custom;
            toolpart[2] = toolpartForWebpart;
            return toolpart;
        }
    }
}

Ø     Khai báo thêm code trong phương thức CreateChildControls của ToolpartForWebpart
§        Khai báo và khởi tạo Literal literalForWellcome
·        Gán “Wellcome Message: ” cho thuộc tính Text của literalForWellcome
·        Thêm vào literalForWellcome webpart
§        Khai báo và khởi tạo TextBox tên txtWellcomeMessage
·        Thêm vào txtWellcomeMessage vào webpart
§        Khai báo và khởi tạo RequiredFieldValidator
·        Khai báo thuộc tính ControlToValidate cho txtWellcomeMessage
·        Khai báo thông điệp “Vui lòng nhập tên của bạn” cho thuộc tính Text
·        Thêm RequiredFieldValidator vào webpart
using System.Web.UI;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;
using System.ComponentModel;
using System.Xml.Serialization;
using System.Web.UI.WebControls;

namespace ValidotorForWebpart
{
    public class ToolpartForWebpart : ToolPart
    {
        public ToolpartForWebpart()
        {
            this.Title = "This is validation for toolpart";
        }
        TextBox txtWellcomeMessage = null;
        protected override void CreateChildControls()
        {
            //dien du lieu tu webpart vao toolpart
            ValidationForWebpart webpart = (ValidationForWebpart)this.ParentToolPane.SelectedWebPart;
            Literal literalForWellcome = new Literal();           
            literalForWellcome.Text = webpart.ShowMessage+ "<br>";
            this.Controls.Add(literalForWellcome);
            txtWellcomeMessage = new TextBox();
            txtWellcomeMessage.ID = "textBox1";           
            txtWellcomeMessage.Text = webpart.UserName;
            this.Controls.Add(txtWellcomeMessage);

            RequiredFieldValidator requiredFieldValidator = new RequiredFieldValidator();
            //requiredFieldValidator.ValidationGroup = "Show";
            requiredFieldValidator.ControlToValidate = txtWellcomeMessage.ID;
            requiredFieldValidator.SetFocusOnError = true;
            requiredFieldValidator.Text = "*";
            requiredFieldValidator.ErrorMessage = "Vui lòng nhập tên của bạn !!!!";
            this.Controls.Add(requiredFieldValidator);
        }
        public override void ApplyChanges()
        {
            ValidationForWebpart webpart = (ValidationForWebpart)this.ParentToolPane.SelectedWebPart;
            webpart.UserName = txtWellcomeMessage.Text;

        }
    }
}

Ø     Thêm ValidationForWebpart.dwp
Ø     Build project chế độ Release và Deploy WebPart
§        Copy ValidationForWebpart.dll đến thư mục bin
Ø     Quay lại sharepoint site
§        Thêm WebPart này đến WebPart page
§        Không nhập bất cứ cái gì vào textbox và click nút OK
§        Sẽ xuất hiện thông điệp lên webpart ?
v    Exercise 06: Cơ bản validation trong webpart và toolpart và ảnh hưởng của nút OK và Apply trong toolpart
Ø     Chú ý: bạn sẽ không thấy thông điệp lỗi màu đỏ khi bạn click ok trong toolpart với textbox không có giá trị
Ø     Tiếp tục với ValidationForWebpart project
Ø     Sửa Class ValidationForWebpart.cs
§        Khai báo thuộc tính ValidationGroup của validation controls là “Change”
§        requiredFieldValidator.ValidationGroup = "Change";

Ø     Sửa Class ToolpartForWebpart.cs
§        Khai báo thuộc tính ValidationGroup của validation controls là “Show”
§        requiredFieldValidator.ValidationGroup = "Show";
Ø     Build project chế độ Release và Deploy WebPart
Ø     Quay lại sharepoint site
§        Refesh WebPart này trong WebPart page
§        Không nhập bất cứ cái gì vào textbox và click nút OK
§        Xuất hiện thông điệp lên webpart ?
§        Xuất hiện thông điệp lên toolpart ?
v    Exercise 07: Cơ bản validation trong webpart và toolpart
Ø     Tiếp tục với ValidationForWebpart project
Ø     Sửa Class ToolpartForWebpart.cs
§        Bỏ thuộc tính ValidationGroup của validation controls là “Show”
Ø     Build project chế độ Release và Deploy WebPart
Ø     Quay lại sharepoint site
§        Refesh WebPart này trong WebPart page
§        Không nhập bất cứ cái gì vào textbox và click nút OK
§        Xuất hiện thông điệp lên webpart ?
§         Xuất hiện thông điệp lên toolpart ? (Xuất hiện)

0 comments:

Post a Comment