مقدمه :

از کنترل CompareValidator برای مقایسه مقدار وارد شده در یک کادر متن ( کنترل TextBox ) با یک کنترل کادر متن دیگر و یا یک مقدار از پیش تعیین شده ، استفاده می شود .
اگر نتیجه مقایسه یکسان و صحیح باشد ، کنترل مقدار True را به فرم برگردانده و فرم با موفقیت Submit می شود . در غیر اینصورت با اعلام یک پیام خطا آن را به کاربر اطلاع می دهد تا مقدار وارد شده را تصحیح کند .
یکی از کاربردهای مهم این کنترل را قبلا در فرم های ثبت نام در سایت های مختلف ، مشاهده کرده اید . در فرم های ثبت نام سایت ها از شما خواسته می شود تا رمز عبور خود را در یک کادر متن وارد کرده و برای حصول اطمینان مجددا همان مقدار را در یک کادر متن دوم نیز وارد نمایید . فرم مقدار ۲ کنترل رابا هم مقایسه کرده و چنانچه با هم یکسان باشند ، عملیات ثبت نام انجام می شود ، در غیر اینصورت به شما پیام هشدار می دهد . انجام چنین عملیاتی در فرم های ASP.Net بر عهده کنترل CompareValidator می باشد .

نحوه کار با کنترل CompareValidator :

برای استفاده از کنترل CompareValidator ، ابتدا باید این کنترل را به کنترل کادر متن ( TextBox ) که می خواهید عملیات اعتبار سنجی را بر روی آن انجام دهید ، متصل نمایید . برای این منظور یاید مقدار خاصیت ControlToValidate کنترل را برابر با شناسه ( Id ) کنترل کادر متن مورد نظر خود قرار دهید .
سپس دو حالت پیش می آید :

مقایسه مقدار کنترل کادر متن TextBox با یک کنترل کادر متن دوم :
در این حالت شما می خواهید مقدار کنترل کادر متن مورد نظر خود را با یک کنترل کادر متن دوم مقایسه نمایید . برای این منظور باید مقدار خاصیت ControlToCompare کنترل CompareValidator را برابر با Id کنترل کادر متن دوم قرار دهید .
مقایسه مقدار کنترل کادر متن با یک مقدار از پیش تعیین شده :
در این حالت شما می خواهید مقدار کنترل کادر متن مورد نظر خود را با یک مقدار از پیش تعیین شده ، مقایسه نمایید . برای این منظور باید مقدار خاصیت ValueToCompare کنترل CompareValidator را برابر با مقدار از پیش تعیین شده خود قرار دهید . برای مثال می خواهید مقدار کنترل کادر متن برابر با Tehran باشد .

سپس باید نوع داده ای که کنترل باید مقایسه نماید را تعیین کنید . برای مثال در مورد اسامی نوع داده ای متن ( String ) و برای رمز عبور معمولا نوع داده ای عددی ( Integer ) است . نوع داده ای در کنترل CompareValidator توسط خاصیت Type تعیین می شود و می تواند یکی از انواع String , Integer , Date , Boolen و یا Double باشد .
در نهایت نیز باید یک پیام اخطار جهت نمایش به کاربر تعیین کنید تا در صورت عدم یکسان بودن مقادیر ورودی ، به وی اخطار دهد . این پیام را توسط خاصیت ErrorMassage کنترل CompareValidator تعیین می کنید .
در جدول زیر موارد فوق و نحوه کلی کار با کنترل CompareValidator را به شما نمایش داده ایم :

حالت اول

 < asp:CompareValidator   ID=”CV_1″   runat=”server”

ErrorMessage = “متن پیام هشدار که در صورت یکسان نبودن مقادیر وارده به کاربر نمایش داده می شود “
ControlToValidate = ” کنترل کادر متنی که می خواهیم مقدار آن را کنترل نماییم شناسه ( ID ) شناسه”
ControlToCompare = “کنترل کادر متن دوم که می خواهیم مقدار آن با کنترل اول یکسان باشد ( ID ) “
Type = ” نوع داده ای عملیات اعتبار سنجی “
Text = “یک نشانه مثل * که توسط برنامه نویس تعیین می شود تا در صورت بروز خطا در کنار کادر متن نمایش داده شود”   >
< /asp:CompareValidator >

 

حالت دوم

 < asp:CompareValidator   ID=”CV_1″   runat=”server”
ErrorMessage = “متن پیام هشدار که در صورت یکسان نبودن مقادیر وارده به کاربر نمایش داده می شود “
ControlToValidate = ” کنترل کادر متنی که می خواهیم مقدار آن را کنترل نماییم شناسه ( ID ) شناسه”
ValueToCompare = ” مقدار پیش فرضی که می خواهیم مقدار کنترل کادر متن با آن یکسان باشد “
Type = ” نوع داده ای عملیات اعتبار سنجی “
Text = “یک نشانه مثل * که توسط برنامه نویس تعیین می شود تا در صورت بروز خطا در کنار کادر متن نمایش داده شود”   >
< /asp:CompareValidator >

 

مثال های عملی کنترل CompareValidator :

در مثال های عملی زیر ، نحوه استفاده از کنترل CompareValidator را در ۲ حالت مختلف به شما نشان داده ایم :

مثال شماره ۱ : مقایسه مقدار کنترل کادر متن با یک مقدار پیش فرض :
در این مثال کاربر باید در کادر متن مقدار ASP.Net را وارد نماید . در صورت وارد کردن مقدار صحیح کنترل بدون ایراد فرم را Submit می کند . اما در صورت وارد کردن مقدار به غیر از مقدار تعیین شده ، کنترل پیام هشدار به کاربر نشان می دهد . دقت کنید نوع داده ای را متن ( String ) تعیین کرده ایم .

Enter Your Plateform :   < asp:TextBox   ID = “TXT_1″   runat = ” server ”   Width = ” 100px ” >   < /asp:TextBox >
< asp:CompareValidator   ID = “CV_1″   runat = ” server “
ErrorMessage = ” مقدار متن را صحیح وارد نمایید “
ValueToCompare = “ASP.Net”
Type=”String”
ControlToValidate = “TXT_1 ” >
</asp:CompareValidator>

 

 

مثال شماره ۲ : مقایسه مقدار کنترل کادر متن با یک کنترل کادر متن دیگر :
در این مثال کاربر باید مقدار رمز عبور خود را در ۲ کادر متن به ترتیب وارد نماید . وارد نمودن رمز در کادر متن دوم برای حصول اطمینان از درست وارد شدن رمز توسط کاربر است و باید مقدار وارد شده در هر ۲ کادر ، دقیقا یکسان باشد . این کار توسط کنترل ۷ انجام می شود . برای بررسی خروجی مثال ، مقادیر را در کادر های متن خروجی مثال وارد نمایید :

Enter Your Pass :   < asp:TextBox   ID = “Pass_1″   runat = ” server ”   Width = ” 100px ”   MaxLength=”5″ >   < /asp:TextBox >
Confirm Your Pass :   < asp:TextBox   ID = “Pass_2″   runat = ” server ”   Width = ” 100px ”   MaxLength=”5″ >   < /asp:TextBox >
< asp:CompareValidator   ID = “CV_2″   runat = ” server “
ErrorMessage = ” مقدار متن در ۲ کنترل متفاوت است “
ControlToValidate = “Pass_1 ” >
ControlToCompare = “Pass_2 ” >
Type=”Integer”
</asp:CompareValidator>