من یه مشکل تو ذخیره کردن radio button دارم.
3 تا radio button داریم ،کاربر فقط حق انتخاب یکی را دارد.با چه دستوری میشه اینو تو دیتابیس نوشت؟
مشکل من تو ذخیره کردن هستش.
من یه مشکل تو ذخیره کردن radio button دارم.
3 تا radio button داریم ،کاربر فقط حق انتخاب یکی را دارد.با چه دستوری میشه اینو تو دیتابیس نوشت؟
مشکل من تو ذخیره کردن هستش.
میتونی تو رویداد Click هر RadioButton بنویسی که دوتا RadioButtonدیگه چک نشده باشن
یعنی فقط یکی تیک خورده باشه و برا ارسال هم چک میکنی کدوم چک شدس اون رو میفرستی
می شه بیشتر توضیح بدن . نوع دیتابیس چیه؟ آیا می خواهین که مثلا شماره ی radio button ی که انتخاب شده تو یه فیلد از دیتابیس ذخیره بشه؟
واسه هر سه تا radiobutton تو دیتابیس فیلد بذار از نوع bit، هرکردوم که check بشه مقدارشو 1 کن و اگه Check نباشه 0 وارد دیتابیس میشه
نه دیگه این کار درستی نیست چون کاربر فقط حق انتخاب یه دونه از اونا رو داره بهتره که یه فیلد داشته باشیم و شماره ی انتخاب شده رو بفرستیم به اون فیلد اگه checkbox بود گفته ی شما بهتر بود ولی انجا فک کنم این کار اضافه باشه
این کار رو کنید که هر کدوم انتخاب شد توی دیتابیس یه عدد منحصر به فد ذخیره شه. مثلا توی دیتابیس فیلد x دارید . اگه اولی انتخال شد 1 دومی 2 و سومی هم 3
روشتون جالبه ولی معمولا سعی میشه که تو دیتابیس فیلدهای کمتری (با تکست کمتر) استفاده شه که در بلند مدت حجم فایل بک آپ بی دلیل زیاد نشه
اگه دائم از این RadioButton ها استفاده میشه این روش خوبیه و باید یه جدول تو دیتابیس درست کنی که تکست RadioButtonها توش باشه با یه شماره منحصر به فرد برای هر کدوماگه اولی انتخال شد 1 دومی 2 و سومی هم 3
زمانی که میخوای Save کنی بره تو اون جدول شماره اون تکست رو دراره و توی جدول اصلی با مقدار int ذخیره کنه (روشی که برنامه های بزرگ برا پایین اومدن حجم داده های دیتابیس استفاده میکنن همینه)
آخرین ویرایش به وسیله ehsanara : یک شنبه 07 فروردین 1390 در 21:07 عصر
string S;
if (radioButton1.Checked)
S = radioButton1.Text;
else if (radioButton2.Checked)
S = radioButton2.Text;
else
S = radioButton3.Text;
رشته S رو میفرستی به دیتابیس
ضمنا میتونی کد بالا رو اینطوری هم بنویسی که خلاصه تر و بهتره
string S = radioButton1.Checked ? radioButton1.Text : (radioButton2.Checked ? radioButton2.Text : radioButton3.Text);
چه ربطی داشت به پرسش دوستمون !
این سه تا کنترل شما هر کدوم نشون دهنده یه مقدار خاص هستن روشی که ahrimaneahurai گفت میتونه به شما کمک کنه در کل شما نیاز داری که نشون بدی فلان مقدار انتخاب شده پس توی دیتابیست اون فیلدی که مربوط به این مقدار هست رو تنظیم میکنی که هیچ زمانی اجازه خالی بودن نداشته باشه « Allow Nulls رو تیک نمیزنی » چون کنترلی که شما در نظر گرفتین منطقش این هست که همیشه باید یکی انتخاب شده باشه پس همیشه یه مقدار به دیتابیس میفرسته دیگه نوعش و مقادیر مجازش طبق نظر خودت و شروط نوشته شده در برنامت خواهد بود موفق باشید ./3 تا radio button داریم ،کاربر فقط حق انتخاب یکی را دارد.با چه دستوری میشه اینو تو دیتابیس نوشت؟
مشکل من تو ذخیره کردن هستش.
یه توضیح کلی بودچه ربطی داشت به پرسش دوستمون !
فکر نمیکنی سوال ایشون نحوه ذخیره کردن بود نه AllowNull بودن؟ (شوخی)این سه تا کنترل شما هر کدوم نشون دهنده یه مقدار خاص هستن روشی که ahrimaneahurai گفت میتونه به شما کمک کنه در کل شما نیاز داری که نشون بدی فلان مقدار انتخاب شده پس توی دیتابیست اون فیلدی که مربوط به این مقدار هست رو تنظیم میکنی که هیچ زمانی اجازه خالی بودن نداشته باشه
آخرین ویرایش به وسیله ehsanara : دوشنبه 08 فروردین 1390 در 13:34 عصر
به نظر من نه اسم و نه text یه Radiobutton نمیتونه ملاک واسه ذخیره تو دیتابیس باشه (مخصوصا اگه text اونا فارسی باشه که مشکل ی و ک هم شاید پیدا کنن) و فیلد bit هم 1 بایت بیشتر نیست و حتی اگه چندتا radiobutton هم داشته باشن حافظه زیادی نمیگیره! ضمنا اینجوری هر radiobutton به صورت کاملا مستقل از بقیه میتونه رفتار کنه و مشکلی واسه ذخیره نداشته باشه
آخه اگه متن radiobutton رو ذخیره کنی، اگه بعدا به هر دلیلی خواستی متن Radiobutton رو تغییر بدی اطلاعات ذخیره شده ات از بین میره (به دردت نمیخوره)دیتا بیس sql server 2005 هستش. میخوام متن ذخیره بشه نه عدد.
اگه روی ذخیره متن اصرار داری کدی که صفحه قبل برات گذاشتم رو میتونی استفاده کنی
سلام دوست عزیز میدونم مشکلت حل شده اما هم به شما و هم به بقیه کسایی که پست دادن میگم که بهتره از خاصیت Tag کنترل ها استفاده بشه.چون هم میتونه فارسی نباشه.هم اینکه شما فقط یک فیلد دارید.
در مورد این مشکل ی و ک باید بگم اگر شما در دستورات sql از حرف N استفاده کنید یا اینکه collection را روی Persian تنظیم کنید هیچ مشکلی پیش نمیاد.
دوست عزیز میتونی به جای متن کنترل از اسم اون استفاده کنی
موفق باشید.
بدست آوردن چک خوردن رادیو باتن در بین چند تا رادیو باتن
private RadioButton CheckedRadio(List<RadioButton>radio) {
foreach (var VARIABLE in radio)
{
if (VARIABLE.Checked)
{
return VARIABLE;
}
}
return new RadioButton() ;
}
private void button4_Click(object sender, EventArgs e)
{
MessageBox.Show(CheckedRadio(new List<RadioButton>() {radioButton1, radioButton2, radioButton3}).Text);
}