PDA

View Full Version : ComboBox که آیتم های آن ComboBox باشند



mehsad
یک شنبه 24 مرداد 1395, 08:08 صبح
سلام

من در برنامه ام باید برای یه مدیر چند تا کارمند تعریف کنم و با توجه کاربرد برنامه باید این کارمندها از یک تا چند نفر انتخاب بشوند و در دیتابیس ذخیره بشوند. من 3تا مشکل دارم:

1.چگونه این کمبوباکس را بسازم یا از چه کامپوننتی استفاده کنم؟
2. چگونه اطلاعات این کمبوباکس را در دیتابیس ذخیره کنم به طوریکه بعد از انتخاب مثلا 10کارمند بعد از باتن ثبت، به ازای هر کارمند و بقیه اطلاعات یک رکورد در دیتابیس بسازد
3. آیا روش خوبیه برای این کار یا روش دیگه ای بهتره؟

ممنون از وقتی که گذاشتید

juza66
یک شنبه 24 مرداد 1395, 09:47 صبح
سلام

نمیدونم درست متوجه شدم یا نه...

شما چند مدیر رو تعریف میکنید
شما چند کارمند تعریف میکنید

خب حالا شما میخواهید برای هر یک از مدیران چند کارمند تعریف کنید


-------------------------------------------------------------------------------------

ایده من :

1. شما وقتی مدیری تعریف میکنید یک کد تعریف کنید براش (همان شماره پرسنلی مدیر مثلا)
2. شما وقتی کارمندی تعریف میکنید یک کد تعریف کنید براش (همان شماره پرسنلی کارمند مثلا)

خب الان یک کمبو باکس بذار

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

و تویی حلقه قبلش چک کن ببین این کارمندی که تیک خورده زیرمجموعه مدیری هست یا نه اگر بود پیغام بده اگر نه آپدیت کن..


موفق و پیروز

شهابسلطانی
یک شنبه 24 مرداد 1395, 15:00 عصر
سلام

من در برنامه ام باید برای یه مدیر چند تا کارمند تعریف کنم و با توجه کاربرد برنامه باید این کارمندها از یک تا چند نفر انتخاب بشوند و در دیتابیس ذخیره بشوند. من 3تا مشکل دارم:

1.چگونه این کمبوباکس را بسازم یا از چه کامپوننتی استفاده کنم؟
2. چگونه اطلاعات این کمبوباکس را در دیتابیس ذخیره کنم به طوریکه بعد از انتخاب مثلا 10کارمند بعد از باتن ثبت، به ازای هر کارمند و بقیه اطلاعات یک رکورد در دیتابیس بسازد
3. آیا روش خوبیه برای این کار یا روش دیگه ای بهتره؟

ممنون از وقتی که گذاشتیدسلام
1- جدولی در دیتابیس بساز
-شامل:
کد مدیر
کد کارمند
نام مدیر
نام کارمند
سمت
و غیره
2-مدیر هات رو ثبت کن
3-کرمندان رو هم ثبت کن ولی قبل از ثبت شخص کد هرکارمند مربوط به کدوم مدیره
4-حالا یه کمبو باکس بذار و با اطلاعات جدول اون رو پر کن
5-خاصیت valueMember اون رو بذار کد مدیر
6-خاصیت DisplayMember رو بذار نام مدیر
7-یه کمبو باکس دیگه بذار
8-تو خاصیت Change کمبوی اول کدهای پرکردن کمبوی دوم رو بنویس
9-ولی با این شرط که هرجایی که valueMember کدهای کارمندان اون رو برگردون
10-حالا می بینید با انتخاب هر مدیر در کمبوی اول فقط کارمندان مربوطه اون در کمبوی دوم نشون داده میشن

mehsad
دوشنبه 25 مرداد 1395, 19:20 عصر
واقعا ممنون از جواب دو دوست عزیزم juza66 و شهاب سلطانی

اگه من بخوام به جای کمبوباکس از گرید ویو استفاده کنم: من در دیتابیس یک bit گذاشتم و ÷یش فرض همه اون هارو گذاشتم FALSE و از کد زیر برای رنگی کردن انتخاب هام (اون هایی که کنارشون تیک خورده/ البته اگر کد بهتری هست ممنون میشم بهم بگید) ولی نمیدونم چگونه به برنامه اضافه کنم. چیزی که فکر کردم مطلوب باشه انجوری مثلا: علی , حسن, حسین (البته اگر گزینه مطلوب تری هست برای استفاده ممنون میشم بگید) فقط نمیدونم چگونه اینطوری در تکست باکس نمایش بدم. ممنون میشم مثل همیشه راهنمایی بفرمایید( دربرنامه جلو لیبل نام کارمندان یه تکست باکس هست که غیر فعاله و یه باتن که وقتی روش کلیک میشه یه فرم باز میشه و گرید ویو هست بعد از انتخاب سطرها و با زدن باتن ثبت به تکست باکس فرم اصلی اضافه میشه):

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) {
dataGridView1.CommitEdit(DataGridViewDataErrorCont exts.Commit);
}

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex != -1 && e.RowIndex != -1)
{
DataGridViewCell current_cell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex]; //Get Current Cell
if (current_cell.GetType() == typeof(DataGridViewCheckBoxCell)) //Check If Cell Type Is Checkbox
{
bool state = Convert.ToBoolean(current_cell.Value); //Check Checkbox state
if (state)
{
dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Gold;

}
else
{
dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Empty;
}
}
}
}

شهابسلطانی
سه شنبه 26 مرداد 1395, 11:14 صبح
واقعا ممنون از جواب دو دوست عزیزم juza66 و شهاب سلطانی

اگه من بخوام به جای کمبوباکس از گرید ویو استفاده کنم:من در دیتابیس یک bit گذاشتم و ÷یش فرض همه اون هارو گذاشتم FALSE و از کد زیر برای رنگی کردن انتخاب هام (اون هایی که کنارشون تیک خورده/ البته اگر کد بهتری هست ممنون میشم بهم بگید) ولی نمیدونم چگونه به برنامه اضافه کنم. چیزی که فکر کردم مطلوب باشه انجوری مثلا: علی , حسن, حسین (البته اگر گزینه مطلوب تری هست برای استفاده ممنون میشم بگید) فقط نمیدونم چگونه اینطوری در تکست باکس نمایش بدم. ممنون میشم مثل همیشه راهنمایی بفرمایید( دربرنامه جلو لیبل نام کارمندان یه تکست باکس هست که غیر فعاله و یه باتن که وقتی روش کلیک میشه یه فرم باز میشه و گرید ویو هست بعد از انتخاب سطرها و با زدن باتن ثبت به تکست باکس فرم اصلی اضافه میشه):

privatevoiddataGridView1_CellContentClick(objectse nder, DataGridViewCellEventArgs e) {
dataGridView1.CommitEdit(DataGridViewDataErrorCont exts.Commit);
}

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex != -1 && e.RowIndex != -1)
{
DataGridViewCell current_cell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex]; //Get Current Cell
if (current_cell.GetType() == typeof(DataGridViewCheckBoxCell)) //Check If Cell Type Is Checkbox
{
bool state = Convert.ToBoolean(current_cell.Value); //Check Checkbox state
if (state)
{
dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Gold;

}
else
{
dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Empty;
}
}
}
}
دوست من درست متوجه نشدم
واضح تر میشه توضیح بدید
یعنی میخوای با انتخاب سطرهات رنگ بشن؟

mehsad
شنبه 30 مرداد 1395, 19:37 عصر
ممنون از پاسختون
میخوام وقتی روی باتن اضافه کردن کلیک شد یه فرم باز بشه و تو اون فرم یه دیتا گرید ویو باشه که اطلاعات کارمندان در اون باشه و کنار هر سطر اون جای تیک داشته باشه و وقتی تعدادی رو تیک زدیم روی باتن ثبت کلیک کنیم و اون اطلاعات به یه تکست باکس در فرم اصلی (اولیه) منتقل و نمایش داده بشه