PDA

View Full Version : نحوه چک کردن چندین checkbox



سمیرا55
جمعه 08 مرداد 1395, 17:50 عصر
با سلام
من چند تا checkbox دارم و می خام هرکدوم تیک خورد همون در دیتا بیس ذخیره بشه. و فیلد نو ع چک باکس ها در دیتابیس را از نوع int انتخاب کردم به این صورت که اگر کاربر گزینه رو تیک زد مقدار 1 در دیتابیس ذخیره بشه. از دستور if هم استفاده کردم به عنوان مثال
if(checkbox1.checked==true)
{
SqlParameter p13 = new SqlParameter("@buy", 1);
com.Parameters.Add(p13);
}
به عنومان مثال برای یک item اومدم این شرط رو گذاشتم به دستور که شرط گذاشتم ایراد میگیره
Procedure or function 'insert_allow' expects parameter '@buy', which was not supplied.
در صورتی که @buy در store procedure اعمال کردم

amir_T_2008
شنبه 09 مرداد 1395, 01:56 صبح
<asp:CheckBox ID="CheckBox1" runat="server" />







SqlConnection con = new SqlConnection("Data Source=(LOCAL);Initial Catalog=DBIranholding;Integrated Security=SSPI;");


string F_Nezarat = CheckBox1.Checked ? "1" : "0";

SqlCommand cmd = new SqlCommand("insert into Tbl_CV( F_Nezarat) values(,@F_Nezarat)", con);

cmd.Parameters.AddWithValue("@F_Nezarat", F_Nezarat);

سمیرا55
شنبه 09 مرداد 1395, 07:48 صبح
دسستتون درد نکنه درست شد. این کد برا موقعی که از بین چند تا checkbox یک دونه انتخاب بکنی کار میکنه. حالا اگه کاربر چند تا گزینه رو تیک بزنه چی شرطا زیاد نمیشه؟ این شرطش چطور باید باشه؟؟؟ مثلا 4 تا checkboxدارم حالا بعدش میخام اگر کاربر گزینه 1 و 2 3 رو تیک زد کدش چطور میشه . کد زیر متل حالتی که هر کدوم جدا تیک بزنه
SqlParameter p16 = new SqlParameter("@userid", Session["mys"]);
com.Parameters.Add(p16);
string buy = CheckBox3.Checked ? "1" : "0";
SqlParameter p13 = new SqlParameter("@buy", buy);
com.Parameters.Add(p13);



string conf = CheckBox4.Checked ? "1" : "0";
SqlParameter p14 = new SqlParameter("@confirm", conf);
com.Parameters.Add(p14);



string sig = CheckBox2.Checked ? "1" : "0";
SqlParameter p12 = new SqlParameter("@signature", sig);
com.Parameters.Add(p12);
string st = CheckBox1.Checked ? "1" : "0";
SqlParameter p11 = new SqlParameter("@store", st);
com.Parameters.Add(p11);
string term = CheckBox5.Checked ? "1" : "0";
SqlParameter p15 = new SqlParameter("@term ", term);
com.Parameters.Add(p15);

kamranetemadi
شنبه 09 مرداد 1395, 15:43 عصر
الان شما دقیقا چطور کار میکنید؟
این کدی که گذاشتید چک باکس ها رو اگر تیک خورده باشن 1 و اگر نخورده باشن با مقدار 0 به عنوان پارامتر میفرسته
یعنی اگر همه هم تیک خورده باشن همه رو با مقدار 1 به عنوان پارامتر میفرسته
اگر میخوای خط کدهاتون کمتر بشه بجای هرکدوم از:

string sig = CheckBox2.Checked ? "1" : "0";
SqlParameter p12 = new SqlParameter("@signature", sig);
com.Parameters.Add(p12);



اینطوری بنویسید:

com.Parameters.Add( new SqlParameter("@store",(CheckBox1.Checked ? "1" : "0"));

amir_T_2008
شنبه 09 مرداد 1395, 15:44 عصر
<asp:CheckBox ID="CheckBox1" runat="server" />
<asp:CheckBox ID="CheckBox2" runat="server" />
<asp:CheckBox ID="CheckBox3" runat="server" />







SqlConnection con = new SqlConnection("Data Source=(LOCAL);Initial Catalog=DBIranholding;Integrated Security=SSPI;");


string F_1 = CheckBox1.Checked ? "1" : "0";
string F_2 = CheckBox2.Checked ? "1" : "0";
string F_3 = CheckBox3.Checked ? "1" : "0";

SqlCommand cmd = new SqlCommand("insert into Tbl_CV(F_1,F_2,F_3) values(,@F_1,@F_2,@F_3)", con);

cmd.Parameters.AddWithValue("@F_1", F_1)
cmd.Parameters.AddWithValue("@F_2", F_2)
cmd.Parameters.AddWithValue("@F_3", F_3)





نه ربطی به یکی یا چند تا نداره این کد چه برای یکی و چه چندتا جواب میده درضمن این کد برای اینه که شما مثلا 3 تا چک باکس دارید و 3تا فیلد در جدول میخواید هر کدوم تیک زده شد محتوای اون چک باکس بریزه داخل فیلد مربوطش در جدول اما اگر یک چک باکس لیست داره و میخواید به طور مثال 4 تا چک باکس دارید و به فرض 3 تا تیک زده شد و محتوای اون 3 تا داخل فقط یک فیلد از جدول وارد بشه اون زمان هم باید طراحی جدول خودتونو تغییر بدید و هم این کد برای اون نیاز شما مناسب نیست. و کد بالا همین ترتیب بیشتر و کمتر میشه با توجه به نیاز شما