برگزیده های پرشین تولز

اعمال چند Min و Max با Custome Validation ا

fivestar

Registered User
تاریخ عضویت
14 نوامبر 2006
نوشته‌ها
73
لایک‌ها
0
چه جوری میشه با Custome Validation برای یه Text BOX چند تا رنج عددی مثلا 0-5 و 10-15 و 20 -25 رو تعیین کرد که کاربر فقط تو این رنجها بتونه عدد وارد کنه اگه غیر این وارد کرد پیغام خطا بده!!!!!!!!!
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
چه جوری میشه با Custome Validation برای یه Text BOX چند تا رنج عددی مثلا 0-5 و 10-15 و 20 -25 رو تعیین کرد که کاربر فقط تو این رنجها بتونه عدد وارد کنه اگه غیر این وارد کرد پیغام خطا بده!!!!!!!!!
جند بار میپرسی ؟! :دی

شما میتونی از regular expression ها استفاده کنی.
تو MSDN میتونی پیدا کنی
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
خوب اگه سرور ساید بخواد که مشکلی نیست :دی
 

fivestar

Registered User
تاریخ عضویت
14 نوامبر 2006
نوشته‌ها
73
لایک‌ها
0
والا من همین قد بلدم که تو Experssion با استفاده از

کد:
\d{min,max}

میشه تعداد کاراکتر های ورودی رو تعیین کرد.
 

alireza sh

مدیر بازنشسته
تاریخ عضویت
2 ژانویه 2006
نوشته‌ها
2,775
لایک‌ها
70
سن
40
محل سکونت
نصف جهان
البته ایشان میتوانند از چند کنترل validation برای کنترل کردن مقدار یک تکست باکس استفاده کنند .

فکر کنم جای دیگری هم قبلا جواب داده ام !
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
البته ایشان میتوانند از چند کنترل validation برای کنترل کردن مقدار یک تکست باکس استفاده کنند .

فکر کنم جای دیگری هم قبلا جواب داده ام !
اونجوری بین کنترل ها منطق AND اجرا میشه، اما ایشون OR میخواد ;]
 

fivestar

Registered User
تاریخ عضویت
14 نوامبر 2006
نوشته‌ها
73
لایک‌ها
0
دوستان مثل اینکه دقت نکردن !

من نمی خوام تعداد کاراکتر های ورودی رو تعیین کنم که بحث رفته سر OR یا AND کردن !!!!

من میخوام مقدار ورودی رو فیلتر گذاری کنم تا یه سری رنج خاص قابل قبول باشه !!!


اصلا باید تو خاصیت Experssion از d\ استفاده کنم ؟؟؟؟
 

alireza sh

مدیر بازنشسته
تاریخ عضویت
2 ژانویه 2006
نوشته‌ها
2,775
لایک‌ها
70
سن
40
محل سکونت
نصف جهان
دوست گرامی ، سخن ما برمبنای استفاده از چند Range validator بود ! که با هم AND میشدند .

بله از /d میتوانید استفده کنید
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
چه جوری میشه با Custome Validation برای یه Text BOX چند تا رنج عددی مثلا 0-5 و 10-15 و 20 -25 رو تعیین کرد که کاربر فقط تو این رنجها بتونه عدد وارد کنه اگه غیر این وارد کرد پیغام خطا بده!!!!!!!!!

من هنوز موندم چجوری با regexp میشه خواسته بالا رو برآورده کرد - اگر دوستان لطف کنن یک نمونه کد بگذارن ممنون میشم.
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
دوستان مثل اینکه دقت نکردن !

من نمی خوام تعداد کاراکتر های ورودی رو تعیین کنم که بحث رفته سر OR یا AND کردن !!!!

من میخوام مقدار وروی رو فیلتر گذاری کنم که تو یه سری رنج خاص قابل قبول باشه !!!


اصلا باید از d\ استفاده کنم ؟؟؟؟
خوب ما هم فهمیدیم همینو دیگه ، نزن ما رو :دی
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
من هنوز موندم چجوری با regexp میشه خواسته بالا رو برآورده کرد - اگر دوستان لطف کنن یک نمونه کد بگذارن ممنون میشم.
میشه چند شرط رو به مدل regularexpression نوشت و با عملگر OR مربوطه، جدا کرد.
من خودم آشنایی کامل ندارم با فرمت و نحوه نوشتنشون ..
 

fivestar

Registered User
تاریخ عضویت
14 نوامبر 2006
نوشته‌ها
73
لایک‌ها
0
دوست گرامی ، سخن ما برمبنای استفاده از چند Range validator بود ! که با هم AND میشدند .

1- مسلما اولین چیزی که برای جواب این مسئله به ذهن میرسه استفاده از چند تا RangeValidator هست ولی مشکلی که بوجود میاد اینه که چطور این چند تا RangeValidator رو با هم OR کنیم .
اگه راه حلی باشه که ....


2- فکر کنم این ایده که فقط یه RegularExpressionValidator باشه و تو خاصیت Validation Experssion از فرمول خاصی استفاده بشه عملی باشه . اگه یه چنین فرمولی بشه نوشت تمومه !

بله از /d میتوانید استفده کنید

دوست عزیز قبلا هم گفتم با d\ میشه "تعداد کاراکتر "های ورودی رو کنترل کرد
در صورتی که من میخوام "مقدار " ورودی رو کنترل کنم و تعداد کاراکتر ها تو این مرحله مهم نیست.

3- یکی از دوستان بدون اینکه جزئیات بگه گفت باید از Custome Validation استفاده کنی ! دوستان حرفه ای احتمالا می تونن با Custome Validation مشکل رو حل کنن.

اگر چیزی به ذهنتون میرسه لطفا کدش رو بذارید تا تست کنم مرسی
 

alireza sh

مدیر بازنشسته
تاریخ عضویت
2 ژانویه 2006
نوشته‌ها
2,775
لایک‌ها
70
سن
40
محل سکونت
نصف جهان
دوست گرامی

بنده هم عرض کردم . وقتی سوال شما و خواسته شما خاص میشو د ، باید از روشهای ویژه تری استفاده کنید . مثلا در این مورد چاره ای جز custome validation ندارید البته تا جایی که من میدانم .
 

fivestar

Registered User
تاریخ عضویت
14 نوامبر 2006
نوشته‌ها
73
لایک‌ها
0
با کمک یکی از دوستان مشکل با استفاده از RegularExpressionValidator حل شد . یعنی اون فرمولی که برای خاصیت ValidationExperssion نیاز بود به دست اومد .

من یه بار دیگه صورت سوال رو مطرح می کنم و جوابش رو هم میذارم . شاید به درد کسی بخوره
 

fivestar

Registered User
تاریخ عضویت
14 نوامبر 2006
نوشته‌ها
73
لایک‌ها
0
چه جوری میشه برای یه Text BOX چند تا رنج عددی مثلا 0-5 و 10-15 و 20 -25 رو تعیین کرد که کاربر فقط تو این رنجها بتونه عدد وارد کنه اگه غیر این وارد کرد پیغام خطا بده!!!!!!!!!



جواب : در خاصیت ValidationExpression یک RegularExpressionValidatorمی نویسیم :


کد:
   ^([0-5]|[1-1][0-5]|[2-2][0-5])$


اگر مثلا بازه هامون از 1000 تا 1059 و 2200 تا 2459 و 3710 تا 3980 باشن اینجوری میشه :


کد:
   ^([1-1][0-0][0-5][0-9]|[2-2][2-4][0-5][0-9|[3-3][7-9][1-8][0-0])$
 

alireza sh

مدیر بازنشسته
تاریخ عضویت
2 ژانویه 2006
نوشته‌ها
2,775
لایک‌ها
70
سن
40
محل سکونت
نصف جهان
بنده از شما تشکر میکنم . هدف فروم هم چیزی جز به اشتراک گذاشتن اطلاعات نیست .

البته این از اون مواقعی هست که آدم میگه : ای ی ی ی ی بابا !!!! این که خیلی راحت بود !!! چطور به ذهنمون نرسید !

پیروز باشید
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
اوه - چه جالب!

فقط چند تا مورد:

1- اگر در یک یا چند رنج اعداد منفی داشته باشیم چجوری باید بنویسیم؟ مثلا" از 10- تا 5- یا از 7- تا 8
2- اعداد اعشاری رو چطور مشخص کنیم؟ مثلا" از 1.5 تا 27.3
 

amin_lili

کاربر تازه وارد
تاریخ عضویت
24 آپریل 2007
نوشته‌ها
532
لایک‌ها
2
سن
43
محل سکونت
ای کاش آنجا ...
دوستمون لطف کردن و پاسخ رو برامون گذاشتن که البته جواب خوبیه ولی شاید برای شرطهای کمی پیچیده تر (مثلا همون اعداد منفی ) مشکل ساز باشه . یک راه مناسب وجود داره و اون هم استفاده از Custom Validation هست به. به این ترتیب که کد رو براتون می ذارم :


کد مربوط به Code Behind
کد:
protected void ServerValidation(object source, ServerValidateEventArgs args)
    {

        try
        {

            // Test whether the value entered into the text box is between 0,5 or 10,15.
            int i = int.Parse(args.Value);
            bool flag = false;
            if ((i > 0 & i < 5) | (i > 10 & i < 15))
                flag = true;
            else
                flag = false;
            args.IsValid = flag;

        }

        catch (Exception ex)
        {

            args.IsValid = false;

        }

    }

    protected void ValidateBtn_OnClick(object sender, EventArgs e)
    {

        // Display whether the page passed validation.
        if (Page.IsValid)
        {

            Message.Text = "Page is valid.";

        }

        else
        {

            Message.Text = "Page is not valid!";

        }

    }

کد HTML مربوط به کنترل ها :

کد:
codes in HTML View
<asp:Label id="Message"  
           Text="Enter a number between 0-5 or 10-15:" 
           Font-Name="Tahoma" 
           Font-Size="11px" 
           runat="server" Font-Names="Verdana"/>

      <asp:TextBox id="Text1" 
           runat="server" />

      <asp:CustomValidator id="CustomValidator1"
           ControlToValidate="Text1"
           Display="Static"
           ClientValidationFunction="ClientValidate"
           ErrorMessage="Range Number is invalid !"
           ForeColor="green"
           Font-Name="Tahoma" 
           Font-Size="11px"
           OnServerValidate="ServerValidation"
           runat="server"/>

      <asp:Button id="Button1"
           Text="Validate" 
           OnClick="ValidateBtn_OnClick" 
           runat="server"/>

لازمه توضیح بدم که validation در سمت client صورت می گیره و دلیلش هم وجود المنت ClientValidationFunction="ClientValidate" در کنترل CustomValidator هست . اگر این خصوصیت رو حذف کنید validation در سمت Server صورت می گیره . شاد باشید

برگرفته از MSDN




.
 
بالا