PDA

View Full Version : چگونه با entity همه اطلاعات مربوط به تمام آیتمهای کمبوباکس مشاهده کنیم



bitcob589
شنبه 02 فروردین 1393, 17:16 عصر
با سلام
در فرم خود یک کمبوباکس دارم که اطلاعات کمبوباکس از دیتابیس خوانده و در کمبوباکس نمایش داده می شود کمبوباکس به صورت زیر است
117209
در نظر دارم در کمبوباکس آیتمهای نمایش دهم که با انتخاب بعضی از آیتمها اطلاعات مربوط به تمام آیتمهای کمبوباکس در گرید ویو نمایش دهم شبیه عکس بالا اولین آیتم کمبوباکس آیتمی با نام(همه موارد) می باشد با انتخاب آیتم اول اطلاعات مربوط به تمام آیتمهای کمبوباکس مشاهده می شود

در عکس زیر :جدول subject اطلاعات مربوط به کمبوباکس می باشد که در کمبوباکس نمایش داده می شود و جدول descrption که اطلاعات مربوط به هر آیتم در آن ذخیره می شود

117210
چگونه می توان در کمبوباکس آیتمهای مشخص کنیم که با انتخاب آنها اطلاعات مربوط به تمام آیتمهای کمبوباکس مشاهده کنیم مثل عکس اول آیتم همه موارد

Mahmoud.Afrad
شنبه 02 فروردین 1393, 17:30 عصر
آیتم "همه موارد" را چجوری به کمبوباکس اضافه کردی؟

کد پر کردن کمبو رو بزار.

bitcob589
شنبه 02 فروردین 1393, 17:45 عصر
آیتم "همه موارد" یکی از رکودهای دیتابیس می باشد

public Form1() {
InitializeComponent();
showcombobox();
}


private void showcombobox()
{
Model1Container show = new Model1Container();
var f = show.subject;
comboBox1.DataSource = f;
comboBox1.DisplayMember = "name";
comboBox1.ValueMember = "Id";
}

آیا ساختار دیتابیس نیاز به تغییرات دارد تا بتوان توضیحات پست 1 پیاده سازی دارد

Mahmoud.Afrad
شنبه 02 فروردین 1393, 19:09 عصر
چون یکی از رکوردهاست پس از روی آی دی میشه فهمید. کافیه selectedValue کمبوباکس رو چک کنی.



ولی اگر من بودم آیتم "همه موارد" رو توی دیتابیس ذخیره نمی کردم بلکه در زمان اجرا یک لیست می ساختم و آیتم ها رو بهش اضافه می کردم.

List<subject> data = new List<subject>();
data.Add(new subject() { id = -1, name = "همه موارد" });
data.AddRange(db.subject);
comboBox1.DataSource = data;
comboBox1.DisplayMember = "name";
comboBox1.ValueMember = "id";

bitcob589
شنبه 02 فروردین 1393, 19:38 عصر
چون یکی از رکوردهاست پس از روی آی دی میشه فهمید. کافیه selectedValue کمبوباکس رو چک کنی.

یعنی در رویداد SelectedIndexChanged مقدار
selectedValue با دیتابیس مقایسه کنیم اگر -1 تمام اطلاعات نمایش دهیم

در نظر دارم این اختیار به مدیریت نرم افزار بدهم تا هر یک از آیتمهای کمبوباکس انتخاب کرد بتواند شبیه
"همه موارد" بکند مدیریت نرم افزار این امکان داشته باشد که بتواندبه جای نمایش اطلاعات چهارمینآیتم کمبوباکس تمام اطلاعات آیتمها نمایش دهد یعنی اگر کاربر نرم افزار بر روی چهارمین آیتم کمبوباکس( پوشاک زنانه )انتخاب کرد تمام اطلاعات مربوط به تمام آیتمها مشاهده نمایید

Mahmoud.Afrad
شنبه 02 فروردین 1393, 20:05 عصر
منظور از -1 آیدی "همه موارد" در دیتابیس هست. مطابق آیدی تغییرش بده.

اگر آیدی انتخابی برابر آیدی "همه موارد" بود همه موارد رو نشون بده و اگر نه ، اطلاعاتی رو نشون بده که subjectId مطابق آیدی انخابی باشه:

private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)
{
int sid = (int)comboBox1.SelectedValue;

if (sid == -1)
{
dataGridView1.DataSource = db.description;
}
else
{
dataGridView1.DataSource = db.description.Where(i => i.subjectId == sid);
}
}