|
گروه اعتبار سنجی - ValidationGroup:
یکی از مشکلات استفاده از کنترلهای سنجش اعتبار یا Validation Controls اینه که اگر در یک صفحه چند گروه مختلف کنترل داشته باشیم و بخواهیم هر دسته از کنترلها رو با در شرایط خاصی چک کنیم به مشکل برخواهیم خورد. 1- بطور مثال اگر در یک صفحه دو دسته اطلاعات مختلف به همراه دو دکمه برای ثبت هر کدام از گروه های اطلاعاتی داشته باشیم نمی توان از کنترلهای اعتبار سنجی به روش پیش فرض استفاده کرد. 2- شاید صفحاتی رو که دارای دکمه ثبت و دکمه پاک کردن اطلاعات هستند رو دید، در این صفحات نیز مشکل اعتبار سنجی وجود داره! چرا؟ چون اگر کاربر بخواهد اطلاعات صفحه رو پاک کنه به مشکل اعتبار برخواهد خورد و کد مربوط به پاک کردن محتویات کنترلها اجرا نخواهد شد. 3- مثال آخر اینکه در صفحه ای که کنترلهای اعتبار سنجی وجود دارند و شما بخواهید از یک دکمه دیگر مثل نمایش اطلاعات اضافی استفاده کنید در کل در تمام صفحاتی که به غیر از دکمه اصلی که معمولا ثبت هست یک کنترل دارای خاصیت PostBack استفاده کنید، کنترلهای اعتبار سنجی شما به خطا خواهند رفت، زیرا جلوی هر PostBack صفحه را خواهند گرفت. پیشنهاد می کنم اگر با این مشکل قبلا روبرو نشدید حتما یک پروژه تمرینی بسازید تا بهتر مطالب رو درک کنید. برای این منظور یک پروژه وب جدید ایجاد کرده و دو textbox و دو button به اون اضافه کنید. می تونید از کنترلهای اعتبار سنجی Requierd Field Validator استفاده کنید و تنظیمات اون رو انجام بدید. یک کد برای دکمه ثبت و کدی جهت پاک کردن خصوصیات Text دو textbox بنویسید. اگر همه چی رو درست تنظیم کرده باشید، خواهید دید که تا زمانی که هر دو جعبه متن پر نشده باشند نمی توان از دکمه پاک کردن استفاده کرد. خوب حالا می ریم سراغ تمرین خودمون یعنی بکارگیری Validation Group: برای این منظور یک پروژه وب ایجاد کنید. دو asp:textbox به عنوان گروه اول اضافه کنید و برای این دو کنترل، دو کنترل asp:RequiredFieldValidator اضافه کنید و خصوصیت ControlToValidate آن دو را به دو کنترل TextBox مرحله قبل تنظیم کنید. دو کنترل asp:button به صفحه اضافه کنید، یکی با عنوان Submit و دیگری با عنوان Reset برای دکمه Reset کدی جهت پاک کردن دو کنترل جعبه متن مرحله قبل بنویسید. دو یا سه asp:textbox دیگر به صفحه اضافه کنید و مانند مراحل قبل برای آنها از asp:RequiredFieldValidator استفاده کنید. دو کنترل asp:button مانند مراحل قبلی اضافه کنید با همان نام. پروژه را اجرا نموده و از دکمه های Submit و Reset استفاده کنید. نتیجه را مشاهده کنید. این همان مشکل استفاده پیش فرض از کنترلهای اعتبارسنجی است. کد زیر لیست کنترلها و تنظیم خصوصیات اصلی آنها رو مشخص می کنه: 1. asp:TextBox ID="txtName" 2. asp:RequiredFieldValidator ID="rfvName" ControlToValidate="txtName" ErrorMessage="*" 3. asp:TextBox ID="txtFamily" 4. asp:RequiredFieldValidator ID="rfvFamily" ControlToValidate="txtFamily" ErrorMessage="*" 5. asp:Button ID="btnSubmit" Text="Submit" 6. asp:Button ID="btnReset" Text="Reset" 7. asp:TextBox ID="txtIDNo" 8. asp:RequiredFieldValidator ID="rfvIDNo" ControlToValidate="txtIDNo" ErrorMessage="*" 9. asp:TextBox ID="txtUserName" 10. asp:RequiredFieldValidator ID="rfvUserName" ControlToValidate="txtUserName" ErrorMessage="*" 11. asp:TextBox ID="txtPassword" 12. asp:RequiredFieldValidator ID="rfvPassword" ControlToValidate="txtPassword" ErrorMessage="*" 13. asp:Button ID="lblSubmitExtraInfo" Text="Submit Extra Info" 14. asp:Button ID="lblResetExtraInfo" Text="Reset Extra Info" کدهای مربوط به دو دکمه Reset: protected void btnReset_Click(object sender, EventArgs e) خوب حالا که مشکل کنترلهای اعتبارسنجی رو به روش پیش فرض استفاده شون دیدیم، میخواهیم اون مشکل رو با استفاده از خصوصیت ValidationGroup حل کنیم. بسیار روش ساده ای رو در پیش رو داریم. برای این منظور باید خصوصیت ValidationGroup هر گروه از کنترلها رو با یک مقدار مشخص مقداردهی کنیم. دو کنترل اعتبارسنجی گروه اول رو با دکمه Submit در یک گروه قرار میدیم (کنترلهای 2،4 و 5). سه کنترل اعتبارسنجی و دکمه Submit دوم را نیز در یک گروه دیگر قرار می دیم. (8،10،12 و 13){ txtName.Text = ""; txtFamily.Text = ""; } protected void btnResetExtraInfo_Click(object sender, EventArgs e) { txtIDNo.Text = ""; txtUserName.Text = ""; txtPassword.Text = ""; } پروژه رو اجرا کنید و نتیجه رو ببینید. کنترلهایی که باید تغییر پیدا کنند در زیر لیست شده اند: (به خاصیت ValidationGroup دقت کنید) 1. asp:RequiredFieldValidator ID="rfvName" ControlToValidate="txtName" ErrorMessage="*" ValidationGroup="groupName" برای راحتی و حصول نتیجه کامل یک برنامه نمونه آماده شده که می تونید اون رو از اینجا دانلود کنید.2. asp:RequiredFieldValidator ID="rfvFamily" ControlToValidate="txtFamily" ErrorMessage="*" ValidationGroup="groupName" 3. asp:Button ID="btnSubmit" Text="Submit" ValidationGroup="groupName" 4. asp:RequiredFieldValidator ID="rfvIDNo" ControlToValidate="txtIDNo" ErrorMessage="*" ValidationGroup="groupExtraInfo" 5. asp:RequiredFieldValidator ID="rfvUserName" ControlToValidate="txtUserName" ErrorMessage="*" ValidationGroup="groupExtraInfo" 6. asp:RequiredFieldValidator ID="rfvPassword" ControlToValidate="txtPassword" ErrorMessage="*" ValidationGroup="groupExtraInfo" 7. asp:Button ID="lblSubmitExtraInfo" Text="Submit Extra Info" ValidationGroup="groupExtraInfo" تگهای فارسی: مهدی ریزوندی، سی شارپ، سي شارپ، ای اس پی دات نت، وب، اعتبارسنجی، جعبه متن، دکمه، پروژه، کد نمونه
English Tags: Mehdi Rizvandi, Csharp, C sharp, C#, ASP.Net, Web, Web Development, Solution, Validation Group, Textbox, Button, Project, Sample Code
+
نوشته شده در شنبه چهاردهم اردیبهشت 1387ساعت 15:1 توسط کنستانتین
|
|

