PDA

View Full Version : سوال: افزودن آیتم به کومبو باکس در c#



ostadi
یک شنبه 25 بهمن 1388, 13:24 عصر
با سلام و خسته نباشید
می خواستم بدونم برای اضافه کردن آیتم به کومبو باکسی که با دیتا ست پر شده چه کار باید بکنم. مشکل من اینجاست که :من یک کومبو دارم که مقادیر اونو ازیکی از جداول بانکم که sql server 2000 هستش پر کردم حالا می خوام یک داده خالی اول کومبو م داشته باشم که در صورتی که کاربر نخواست موردی رو انتخاب کنه یا از انتخاب منصرف شد اون داده ه ی اول کومبو رو که null هستش رو انتخاب کنه حالا نمی دونم اون داده ی اولی رو چه جوری به اول کومبو اضافه کنم. ممنون میشم اگه راهنماییم کنین.:متفکر:
البته خودم چند تایی کد رو امتحان کردم ولی هیچ کدومشون جواب ندادن




1)comboBox_ostan.ValueMember.Insert(0, "انتخاب");
2)comboBox_ostan.AutoCompleteCustomSource.Add("انتخاب");
3)comboBox_ostan.ValueMember.StartsWith("انتخاب");
میبخشید اگه کدام یک خورده بهم ریختست

slashslash2009
یک شنبه 25 بهمن 1388, 13:43 عصر
comboBox1.Text = "";:لبخند:

ostadi
یک شنبه 25 بهمن 1388, 14:52 عصر
این کد تا زمانی که کاربر هیچ موردی را انتخاب نکند صحیح است ولی اگر موردی را انتخاب کند و سپس بخواهد مقدار null را انتخاب کند مقدار null (یا مثلا مقدار انتخاب شود )وجود ندارد من مقدار null را در دیتابیس ذخیره نمیکنم و میخواهم علاوه بر اینکه کومبو از دیتابیس به صورت داینامیک پر میشود به صورت دستی نیز مقدار null را در آن درج نمایم ولی متاسفانه نتوانستم کومبو را هم با بایند کردن و هم به صورت دستی (از طریق کد نویسی) مقدار وارد نمایم آیا شما برای این راه حلی دارید(افزودن آیتم به کومبو باکسی که به صورت داینامیک پر شده )

Sharif Lotfi
یک شنبه 25 بهمن 1388, 17:26 عصر
بهتر است ابتدا آيتم اولي Add شود و سپس رنجي كه از بانك مي خوانيد مشابه اين نمونه :

ostadi
یک شنبه 25 بهمن 1388, 21:06 عصر
دوست عزیز ممنونم از اینکه وقت گذاشتید و پاسخ دادید ولی من این کار رو کرده بودم حتی با برنامه شما هم اونو تست کردم بازم جواب نداد کدمو براتون میزارم اگه لطف کنید و بگین مشکل از کجاست ممنون میشم.


try
{
SqlConnection connectionstring = new SqlConnection("server=.;database=amlak;integrated security=true");
DataSet objdataset = new DataSet();
connectionstring.Open();
SqlDataAdapter objdataadapter = new SqlDataAdapter("SELECT txt_country FROM t_country ", connectionstring);
objdataadapter.Fill(objdataset, "t_country");
connectionstring.Close();
comboBox1.Items.Add("Nothing");
comboBox1.DataSource = objdataset.Tables["t_country"];
comboBox1.ValueMember = "txt_country";
}
catch(Exception ERR)
{
MessageBox.Show(ERR.Message);
}

slashslash2009
یک شنبه 25 بهمن 1388, 21:25 عصر
دوست من اگر کاربر بخواد که هیچی وارد نکنه خوب باید خودش کامبو باکسو خالی کنه در ضمن شما میتونید بعد از پر کردن کامبو اونو مساوی خالی قرار بدین من امتحان کردم تا حدودی جواب داد ولی زیاد باهاش ور نرفتم

seven7777777
یک شنبه 25 بهمن 1388, 22:59 عصر
شما چند راه داری :
1. کمبو رو نه با dataset که با datareader و افزودن دستی پر کنی ، اون چیزیهم که می خوای اضافه کنی .
2. کمبوهایی که کاربر می تونه انتخاب کنه یا نکنه کنارش یه چک باکس بزاری ، اگه نخواست تیکش رو بر میداره و اون کمبو disable میشه ( که مساوی ب انتخاب null هست )
3. کمبوت قابل ویرایش باشه یعنی کاربر بتونه توش بنویسه ( که اغلب اینجوری هست ) . اگه خواست خالی باشه ، محتوای در حال نمایش کمبو رو ( همون combo.text ) با delete پاک کنه .
4. تو بانکت یه جدول مربوط به این کمبو یه کد در نظر بگیری مثلا صفر که موقع پر کردن اون خالیم نشون بده ولی تو ثبت اطلاعات دیگه هر جور خواستی باهاش رفتار کن .
5. روش های پیشنهادی دوستان دیگر .

Sharif Lotfi
دوشنبه 26 بهمن 1388, 09:46 صبح
دوست عزیز ممنونم از اینکه وقت گذاشتید و پاسخ دادید ولی من این کار رو کرده بودم حتی با برنامه شما هم اونو تست کردم بازم جواب نداد کدمو براتون میزارم اگه لطف کنید و بگین مشکل از کجاست ممنون میشم.


try
{
SqlConnection connectionstring = new SqlConnection("server=.;database=amlak;integrated security=true");
DataSet objdataset = new DataSet();
connectionstring.Open();
SqlDataAdapter objdataadapter = new SqlDataAdapter("SELECT txt_country FROM t_country ", connectionstring);
objdataadapter.Fill(objdataset, "t_country");
connectionstring.Close();
comboBox1.Items.Add("Nothing");
comboBox1.DataSource = objdataset.Tables["t_country"];
comboBox1.ValueMember = "txt_country";
}
catch(Exception ERR)
{
MessageBox.Show(ERR.Message);
}


دوست عزيز نكته اي كه بايد توجه كنيد اينه كه
comboBox1.Items.Add("Nothing"); يه آيتم رو به آيتمهاي موجود Add مي كنه بهمين خاطر شما بعد از اين تعريف بايد آيتمهاي خوانده شده از بانك رو Add كنيد
شما تو كدتون نوشتين

comboBox1.DataSource = objdataset.Tables["t_country"];
اين به معني اينه كه آيتمهاي قبلي رو بيخيال بشه و ديتاسورس جديد بگيره بهتره ابتدا يك آرايه تعريف كنيد و داده هاي بانكتون رو داخل آرايه بريزيد و بعد اون آرايه رو به comboBox خودتون Add كنيد با كد زير

comboBox1.Items.AddRange(myArray);
موفق باشيد

mahmoodramzani
دوشنبه 26 بهمن 1388, 10:08 صبح
فکر میکنم بهتر باشه از DataTable و DataRow استفاده کنی.
مثلا ی DataTable ایجاد کنی که Row اولش همون چیزی باشه که میخوای و بقیه Row ها رو از DataBase بخونی و بهش اضافه کنی.بعد اون DataTable رو Bind کنی به ComboBox

slashslash2009
دوشنبه 26 بهمن 1388, 11:20 صبح
با کمک دوستمون mahmoodramzani (http://barnamenevis.org/forum/member.php?u=47117)
خاصیت sort مربوط به کامبو باکست رو true کن بعدش این کدو واسه پر کردن کامبوت بزار بعدشم برو حالشو ببر
خودت تغییرات اسم جدول وفیلدتو عوض کن :

private void comb1()
{
DataRow row;
SqlCommand cmd = new SqlCommand("select name from table", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
row = dt.NewRow();
row["name"] = "";
dt.Rows.Add(row);
comboBox1.DataSource = dt;
comboBox1.DisplayMember = "name";
}
کاملا تست شده جواب میده . واسه این گفتم اون خاصیت رو true کنی که جای خالی در کامبوت اگر false باشه میشه آخریش

ostadi
سه شنبه 27 بهمن 1388, 10:00 صبح
واقعا از همتون به خاطر جوابهایی که دادین ممنونم.
با پست آخر جواب سوالم رو گرفتم و کارم راه افتاد مرسی:تشویق:
البته روش آقای لطفی رو هم تست کردم اونم جواب داد:تشویق: