با سلام خدمت اساتید .
من یه ComboBox دارم و یه دکمه ی Add .
با زدن Add مقادیرم به یه بانک SQL اضافه میشه . و از اونجا به لیست ComboBox اضافه میشه.
حالا من میخوام مقادیر تکراری در لیست ComboBox نشون داده نشه .
ممنون.
با سلام خدمت اساتید .
من یه ComboBox دارم و یه دکمه ی Add .
با زدن Add مقادیرم به یه بانک SQL اضافه میشه . و از اونجا به لیست ComboBox اضافه میشه.
حالا من میخوام مقادیر تکراری در لیست ComboBox نشون داده نشه .
ممنون.
قبل از اضافه کردن به comboBox با تابع Contain چک کنيد.اگه قبلا اضافه شده اضافه نکنيد.
کد نویسیشو بلد نیستم . اگه امکانش هست یکم واضح تر بگید ممنون میشم .
خواهش میکنم یکی کمکم کنه !!!!!
دوست عزیز ممنون از کدتون....
اما منظورم این نبود که مقادیر تکراری به بانک اضافه نشه ، منظورم این بود که مقادیر تکراری به ComboBox اضافه نشه.... یعنی بیاد ComboBox رو چک کنه !
چنین چیزی امکان داره ؟
سلام
این
using System.Windows.Forms;
رو اول فورمت یا در بخش using اضافه کن
اینم خود کد
int r = comboBox.Items.Count;
ArrayList newList = newArrayList();
//Load all Items into temp array
string[] temp = newstring[r];
for (int i = 0; i < r; i++)
{
temp[i] = comboBox.Items[i].ToString();
}
//Add unique items to new ArrayList
foreach (string ts in temp)
{
if (!newList.Contains(ts))
{
newList.Add(ts);
}
}
comboBox.Items.Clear();
foreach (string ns in newList)
{
comboBox.Items.Add(ns.ToString());
}
اگر کمبوباکس رو از ذیتابیس پر میکنید میتونید از سلکت زیر برای پر کردن کمبو استفاده کنید و نتیجه رو به کمبو بایند کنید اما یادتون باشه که مقادیری که در کمبو قرار میگیرند اولین مقادیری هستند که در دیتابیس ثبت شدند، یعنی اگر چند رکورد به نام a داشته باشیم با این کار اولین a سلکت میشه و به طبع id اولین a. پس valuemember آیتم a در کمبوباکس میشه همین id و عملا بقیه رکورد ها استفاده نمیشند.
select id,name
from (
select *,row_number() over (partition by name order by name) as row_number
from tbl
) as rows
where row_number = 1
id , name رو متناسب با جدول خودتون تنظیم کنید.
if (!comboBox1.Items.Contains(textBox1.Text))
{
comboBox1.Items.Add(textBox1.Text);
}
با تشكر از دوست عزيز mafaman2003
اول يه كلاس درست كن به اين صورت
class cls_connection
{
static public SqlConnection objconnection = new SqlConnection();
static public SqlCommand objcommand = new SqlCommand();
static public SqlDataReader objreader;
static public void CreatConnection()
{
objconnection.Close();
objconnection.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DataBaseName.mdf;Integrated Security=True;User Instance=True";
objconnection.Open();
objcommand.Connection = objconnection;
}
}
بعدش تو فرمت اين كد رو بنويس
cls_connection.CreatConnection();
cls_connection.objcommand.CommandText = "select myItem from myTable";
cls_connection.objreader = cls_connection.objcommand.ExecuteReader();
while (cls_connection.objreader.Read())
{
if (!comboBox1.Items.Contains(cls_connection.objreade r["myItem"].ToString()))
{
comboBox1.Items.Add(cls_connection.objreader["myItem"].ToString());
}
}
cls_connection.objconnection.Close();
Ghaem66 عزیز
اینی هم که شما گفتید میشه منتها باید آقای arash ghafori مشخص کنند که میخواهند از valuemember کمبوباکس استفاده کنند یا نه؟
اگر فقط میخواهند یک ستون از جدول رو به کمبو بایند کنند که همون اول جواب میدادم که با اضافه کردن distinct به دستور سلکت همه مشکلات حل میشه:
select distinct name from table
اما اگر قرار باشه ستونی مثل id رو به valuemember اختصاص بدهند روش شما و همین روش distinct جواب نخواهد داد.
اساتید محترم ، متشکر از راهنمایی ها و وقتی که گذاشتید .
ممنون که کمکم کردید.
نه . یه راه حل دیگه به جای این کار توی برنامه جایگزین کردم . اونم اینکه وقتی توی Combo حرف M رو زد هر چی با M شروع میشه بیاره. دیگه نیاد همه چیه اون ستون رو نمایش بده . این بهتره از اون راه . اون موضوع یه جورایی افزونگی داده میاره !!!!
البته تونستم با راهنمایی شما ها و چنتا پروژه ، یه دکمه ی Add to List بزارم که کاربر با سلکت نام مورد نظر در Data grid اون رو به Combo اضافه کنه .
بازم ممنون از راهنماییای با ارزشتون .