PDA

View Full Version : انتخاب اجباری یکی از گزینه ها در RadioButtonList



zshojaee
چهارشنبه 21 آذر 1386, 07:58 صبح
سلام دوستان
من یه مشکل کوچیک با RadioButtonList پیدا کردم :
من یه فرم سؤالات در یک صفحه از سایتم گذاشتم و برای گزینه های سؤالاتم از RadioButtonList استفاده کردم ، می خوام که کاربر حتما به تمام سؤالات جواب داده باشه و حتما یکی از گزینه های RadioButtonList رو انتخاب کرده باشه ولی نمی دونم چجوری باید این رو چک کنم که اگر کاربر هیچ گزینه ای رو انتخاب نکرده بود پیغام بدم؟
اگر میدونید لطف کنید و من رو راهنمایی کنید.
ممنون میشم

ClaimAlireza
چهارشنبه 21 آذر 1386, 08:12 صبح
شما کافیه یه کنترل requiredFieldValidator بزاری روی فرمت و خاصیت controlToValidate اون رو به radioButtonList تنظیم کنی.

موفق باشید...

zshojaee
چهارشنبه 21 آذر 1386, 22:59 عصر
من فرمم رو بصورت پویا ایجاد می کنم و radioButtonList ها رو هم بصورت پویا در یک حلقه ایجاد می کنم و گزینه ها رو هم با استفاده از یه stored procedure به اینها bind میکنم , در کد html هیچکدوم از کنترلهام نیستند نمی دونم میشه از validation ها داینامیک هم استفاده کرد یا نه؟
لطفا اگه کسی میدونه خط کدشو برام بنویسه.
بهر حال از همه ی دوستان متشکرم

ClaimAlireza
پنج شنبه 22 آذر 1386, 06:43 صبح
من فرمم رو بصورت پویا ایجاد می کنم و radioButtonList ها رو هم بصورت پویا در یک حلقه ایجاد می کنم و گزینه ها رو هم با استفاده از یه stored procedure به اینها bind میکنم , در کد html هیچکدوم از کنترلهام نیستند

عجب!!!!

توی پست اول سوالت رو به این پیچیدگی طرح نکرده بودی!!!


نمی دونم میشه از validation ها داینامیک هم استفاده کرد یا نه؟


اگه تونستی radioButton ها رو به صورت داینامیک ایجاد کنی پس دیگه کاری نداره کهRequaredFieldValidator هم داینامیک ایجاد کنی ....
بعد از اون هم خاصیت controlToValidate رو به radioButton نسبت بده....

zshojaee
پنج شنبه 22 آذر 1386, 22:24 عصر
فکر می کردم راه آسونتری از اضافه کردن validationها بصورت داینامیک داشته باشه چون کدشو دقیقا نمی دونستم ، فکر میکردم که تابعی برای چک کردن داشته باشه که می تونم با یک خط کد چکش کنم و اگر false برگردوند alert بدم ، برای همین دفه ی اول سؤالم رو به قول شما پیچیده مطرح نکردم:لبخندساده:.
بهر حال از شما ممنونم .

mahdi_farhani
جمعه 23 آذر 1386, 20:07 عصر
میتونی با SelectedIndex چک کنی اگر -1 بود یعنی هیچی رو انتخاب نکرده

zshojaee
شنبه 24 آذر 1386, 21:44 عصر
آقای فرهانی واقعا دستتون درد نکنه خیلی دنبالش گشته بودم همونی بود که میخواستم.
با دو خط کد بجای استفاده از validation ها بصورت دینامیک مشکل برطرف شد:
If (RBlist.SelectedIndex) = -1 Then
Response.Write("<script language=jscript>alert('" & "شما باید به تمامی سؤالات پاسخ دهید" & "')</script>")
end if

ClaimAlireza
یک شنبه 25 آذر 1386, 07:31 صبح
خوب اینجوری نیاز هستش که برای هر سوال یه همچین کدی رو تکرار کنی....
بالاخره هر سوال یه ridioButtonList داره دیگه.

در ضمن کاری که شما میکنید تقریبا پیاده سازی کار validator هاست با این تفاوت که در هر بار چک کردن نیاز به postback دارین و در مواقعی که وقت برای کاربر مهم می باشد اون هم با این سرعت های اینترنت، این مسئله کاملا مشکل ساز خواهد بود.

این در حالی است که validator ها قبل از postback این مسئله رو بررسی می کنند.

Nightbat
یک شنبه 25 آذر 1386, 12:49 عصر
اگر بخوای serverside چک کنی میتونی تو یه حلقه کنترلهای radio تو بگیری و چک کنی که انتخاب شدن یا نه. احتیاجی نیست که برای همه radio ها بنویسی

a_true_2004
دوشنبه 26 آذر 1386, 05:00 صبح
سلام
میتونی با جاوا و افزودن یک Input Hiden تحت Client چک کنی
به این صورت که برای هر سوال یک Input Hiden قرار بدی بعد این کد رو در اونجایی که Radio button ها رو داینامیک ایجاد میکنی طرف سرور وارد میکنی



R21.Attributes.Add("onclick", "H1.value='1';)


Input Hiden = H1 سوال اول
Radio Button =R21 سوال 2 گزینه 1
با این کار برای هرکدوم از radio ها در طرف کلاینت با کلیک شماره ای که برای اون Radioتعیین کردی در Input Hiden مربوط به اون سوال ذخیره میشه
در آخر هم با تنظیم تگ فرم به این صورت باعث میشی که قبل از ارسال صفحه، اول چک بشه که همه Input Hiden ها خالی نباشند و اگه اینطور بود صفحه Postback بشه.



onsubmit="return check();"


که check همون تابع چک کردن پر بودن همه Input Hiden هاست.
***زیاد جاوا بلد نیستم که بتونم این تابع چک رو هم بنویسم دوستانی که وارد ترند به ایشون کمک کنند که چه جوری میشه به Object های Input Hiden ها دسترسی داشت. که بشه از بین اونها راحت تر Input Hiden ها رو پیدا کرد (یک لیستی از Input Hiden ها)اگه دوستی این بخش رو تهیه کنه هم من اون رو متوجه میشم هم به دوستمون کمک شده.***
**البته یک راه دیگه اینه که تعداد سوالاتت رو به کلاینت بفرستی و اونجا با یک حلقه به تعداد سوالات Input Hiden ها رو چک کنی. که لازمش اینه که اسمها رو مثل من با شماره (H1 .. H20) تنظیم کنی.**


همچنین میتونی در هنگام ایجاد Input Hiden ها مقدار runat server اونها رو برابر server تنظیم کنی و از این طریق به راحتی طرف سرور بدون چک کردن های زیاد گزینه ای رو که کاربر انتخاب کرده رو پیدا کنی.
حسن این کار سریع بودن اونه و سختی کار اینه که کدهای چک کردن (که مهمترین بخش هم هست) به زبان جاوا رو باید طوری بنویسی که همه Browser ها اونو اجرا کنن که طرف سرور با مشکل مواجه نشی.
امیدوارم تونسته باشم کمکت کرده باشم و منظورم رو درست رسونده باشم.

zshojaee
شنبه 01 دی 1386, 14:39 عصر
از تمام دوستان بخاطر راهنماییهاشون ممنونم.
بله من داخل یک حلقه انتخاب گزینه ها رو چک میکنم.
بهرحال بخاطر تمام راه حلهایی که ارائه دادید متشکرم .