PDA

View Full Version : اضافه کردن ایتم به combobox



jafari_m246
پنج شنبه 11 مرداد 1386, 23:57 عصر
سلام
من این کد را نوشتم تا اگر text ای که کاربر توی combobox وارد می کنه اگر توی ایتم هاش نبود آن را به ایتم ها اضافه کنه

حالا مشکل ام اینه که بدونه تست شرط همه را به ایتم ها اضافه میکنه با تکرار


مشکل دوم اینکه وقتی از برنامه خارج می شویم آنها از ایتم های کامبوباکس حذف شدند



for (int i = 0; i < bs_postcb.Items.Count; i++)
{
if (bs_postcb.Items[i] != bs_postcb.Text)
continue;
else
return;
}
bs_postcb.Items.Add(bs_postcb.Text);


مشکل کدم کجاست...؟:افسرده:

hdv212
جمعه 12 مرداد 1386, 01:06 صبح
از این کد استفاده کن :
if (this.comboBox1.Items.Contains(this.comboBox1.Text ))
return;
else
this.comboBox1.Items.Add(this.comboBox1.Text);

دیگه نیازی به استفاده از حلقه نداری، چون خود تابع contains در داخل آیتمها جستجو میکنه.

برای سوال دومت هم باید بگم که خب معلومه که آیتم ها حذف میشن، چون جایی ذخیره نشدن، یا باید در یه فایل یا در دیتابیس ذخیره شون کنی.

jafari_m246
جمعه 12 مرداد 1386, 06:48 صبح
پس چرا ایتم هائی که در زمان طراحی می نویسیم پاک نمی شوند؟:متفکر:

PC2st
جمعه 12 مرداد 1386, 10:04 صبح
آیتمهائی که در زمان طراحی به ComboBox اضافه میشه، بصورت کد در یک فایل ذخیره شده که در زمان اجرا، اون کدها کامپایل خواهند شد. مثلا اگر نام فرم بصورت Form1 باشه، تمام موارد اعمال شده در زمان طراحی، در فایل Form1.Designer قرار داره.

مهدی رحیم زاده
جمعه 12 مرداد 1386, 10:15 صبح
منم یه مشکل تقریبا همین جوری دارم !!!
من یک سری داده از نوع text رو با دستور select انتخاب می کنم و داخل یک دیتا تیبل نگه داری می کنم ...
بعد می خوام که Combobox رو با داده های دیتا تیبل پر کنم اما به جاری رشته های مورد نظر combobox رو با System.Data.DataRowView پر می کنه :
اینم کدی که نوشتم :

dt = getdata("select distinct vahed from noskhe");
comboBox1.DataSource = dt;
باید چکار کنم که رشته های منو درست نشنون بده ...

PC2st
جمعه 12 مرداد 1386, 11:01 صبح
combo box فقط باید به فیلدهای جدول متصل بشه و اگر dt رو بعنوان data source مشخص کردید، بعدش یک فیلد رو بعنوان منبع باید براش مشخص کنید.
مثلا:


comboBox1.DisplayMember="vahed";

jafari_m246
سه شنبه 16 مرداد 1386, 08:26 صبح
if (this.comboBox1.Items.Contains(this.comboBox1.Text ))
{
return;
}
else
{
SqlCommand cm3 = newSqlCommand("insert into post(pname)values('" + comboBox1.Text + "')", my_cn);
cm3.ExecuteNonQuery();
}


آقا hamed من این کد را به جای کد شما استفاده کردم تا اگر توی لیست نبود به بانکی که کامبوباکس به اون متصله اضافه کنه ولی باز هم جواب نمی دهد و اسم تکراری هم اضافه می کنه

sm_ezadpanah
سه شنبه 16 مرداد 1386, 10:06 صبح
با سلام دوست عزیز
میتونی اون اسمها رو که می خوای داخل کمبو بزاری داخل یک جدول از بانکت بزاری بعد هنگام لود شدن فرمت کمبو رو از اطلاعات داخل اون جدوله پر کنی ار هم ایتمی رو بخوای اضافه کنی به جدولت insert کن اینجوری دیگه نیازی به اد کردن به کمبو هم نداری . اگه راه حل برات مناسبه بگو تا کدش رو بزارم

jafari_m246
چهارشنبه 17 مرداد 1386, 08:28 صبح
دوست گلم من هم همین کاری که شمامی گوئید را انجام دادم
با این تفاوت که هنگامی که کاربر دکمه save را می زند علاوه بر insert کردن اطلاعات فرم ام
میخواهم چک کنه که اگر کاربر اسم جدیدی را در کامبوباکس نوشته بود اون را هم به جدول مربوطه اضافه کنه

امیدوارم توانسته باشم منظورم را برسونم

PC2st
چهارشنبه 17 مرداد 1386, 16:42 عصر
برای اینکه ببینید یک متن در لیست item های ComboBox هست یا خیر، از متد Items.FindString استفاده کنید.