+3 امتیاز
سلام

متاسفانه ی مشکلی ک هست کمبوباکس و لیست باکس در کامپوننت DotNetBar راست چین میشن !

(البته اگه مقدار کمبوباکس رو بخوای دستی بدی میشه راست چینش کرد، ولی من میخوام مقدارش رو از دیتابیس بهش بدم ک اینطوری راست چین نمیشه!)

تو گوگل سرچ کردم ولی ب نتیجه ای نرسیدم بعضیا میگفتن کلا این امکان نیست !

گفتم از اساتید اینجا برای راست چین کردنشون کسی راهی سراغ نداره ؟

خیلی ممنونم
بسته شده

2 پاسخ

+2 امتیاز
 
بهترین پاسخ
سلام شما برای اینکه کمبو باکستون راست چین بشه باید فرمتون رو نیز راست چین بکنید کارتون راه میافته توی این وب اساتید شایسته ای وجود دارن نگران سوالتون نباشید که بی پاسخ بمونه مرسی

ممنونم از شما عزیز، ولی متاسفانه اینطور جواب نمیده!

البته همونطوری هم ک بالا گفتم روش راست چین کردن کمبوباکس دو روش پیدا کردم ولی اگه بخوای از دیتابیس اطلاعات بریزی توش عمل نمیکنه:

1- اگه روی خاصیت items کلیک کنی و بعد طبق عکس تنظیم کنی مشکل حل میشه:

2- اگه خاصیت DrawMod رو Normal بذاری درست میشه و حتی اگه از دیتابیس هم اطلاعات بریزی توش راست چین هست، ولی وقتی این خاصیت رو تنظیم کنی ظاهرش تقریبا مثه همون کمبوباکس ویژوال میشه و شاید هنوزم زشت تر، ک در نتیجه بدرد نمیخوره!

اگه کسی روشی ب غیر از این دو روش سراغ داره ممنون میشم بگه، ولی برای راست چین کردن لیست باکس هیچ روشی پیدا نکردم!

باتشکر از دوستانی ک راهنمایی میکنن.

توسط (174 امتیاز) 3 9 23
آیتم های کمبوباکس محدوده؟ و اگر محدود نیست چند آیتم میتونه داشته باشه؟

یا اصلا تشخیص تعدادش ممکن نیست؟
توسط (2,595 امتیاز) 5 15 90

اگر مقادیر کم باشه میتونید آیتم جدیدی برای کمبوباکس ایجاد کنید ولی اگر زیاد باشه برنامه کند میشه.

using

using DevComponents.Editors;

 

مثال

            string[] newItems = { "a", "b", "c", "d", "e", "f", "g" };
            for (int i = 0; i < newItems.Length; i++)
            {
                ComboItem Item = new ComboItem { Text = newItems[i], TextAlignment = StringAlignment.Far };
                comboBoxEx1.Items.Add(Item);
            }

 

توسط (2,595 امتیاز) 5 15 90
ممنون بابت روش جدید.

ولی من مقادیر کمبوباکسم رو از دیتابیس میگیرم، آیا این روش پاسخگو هست ؟
توسط (174 امتیاز) 3 9 23
بله امکانش هست، اما گر تعداد رکوردها زیاد باشه پیشنهاد نمیدم.

تکنولوژی که به وسیله اون با پایگاه داده کار میکنید رو بگید تا اگر در تواناییم بود کد قرار بدم.
توسط (2,595 امتیاز) 5 15 90

با LINQ نوشتم، اینم دستوری ک باهاش کموباکس ها رو پر میکنم:

 using (EmployeeDataContext dc = new EmployeeDataContext ())
            {               
                cboCertificate.DataSource = dc.UsersCertificats;
                cboJob.DataSource = dc.UsersJobs;
            }

مقادیر کمبوباکس ها شغل و مدرک تحصیلی هستن ک زیاد نمیشن.

ممنونم از شما

توسط (174 امتیاز) 3 9 23

برای شغلها نوشتم، (نام ستون شغل رو job در نظر گرفتم) مدرک تحصیلی هم شبیه  همینه.

            using (EmployeeDataContext dc = new EmployeeDataContext())
            {
                cboJob.DataSource = dc.UsersJobs.Select(j => new ComboItem { Text = j.job, TextAlignment = StringAlignment.Far }).ToArray();
            }

 

 

 

توسط (2,595 امتیاز) 5 15 90
احسنت بر شما
جواب داد و درست شد.

البته همونطوری هم ک در پست قبلش گفتید باید فضای نام using DevComponents.Editors; رو ب فرم اضافه کرد.

و اینکه من کندی تو برنامه ندیدم، و همونطوری اجرا شد !

بازم ممنونم و موفق باشید
ویرایش شده توسط
توسط (174 امتیاز) 3 9 23
خیلی ممنون شما هم موفق باشید.
توسط (2,595 امتیاز) 5 15 90

سلام مجدد

ببخشید با این کدی ک گفتید ی مشکل جدید پیدا کردم:

من ID شغل ها رو میگیرم و میبرم تو جدول کارمندان ذخیره میکنم، یعنی در اینجا selectedvalue کمبوباکس رو باید تو دیتابیس ذخیره کنم ک متاسفانه اررور میده، ولی کدای قبلی رو ک مینویسم درست میشه.

(خصوصیت ValueMember رو هم گذاشتم JobID )

اررور کمبوباکس دات نت بار

ممنونم میشم راهنمایی کنید.

باتشکر فراوان

ویرایش شده توسط
توسط (174 امتیاز) 3 9 23

این کد رو امتحان کنید ببینید جواب میده

User.Certificate = (int)((DataRowView)cboCertificate.SelectedItem)["JobID"].ToString();

 

توسط (2,595 امتیاز) 5 15 90

ممنونم از توجهتون.

ن متاسفانه درست نشد، ولی همون Cast قبلی خودم رو تغییر دادم و فک کنم اررورش واضح تر شد:

 

توسط (174 امتیاز) 3 9 23

یه .ToString() بعد از SelectedValue اضافه کنید ببینید درست میشه؟

cboJob.SelectedValue.ToString()

 

ویرایش شده توسط
توسط (2,595 امتیاز) 5 15 90
بابت دیر پاسخ دادنم عذر خواهی میکنم
توسط (2,595 امتیاز) 5 15 90
اختیار دارین شما ببخشید بابت دیر جواب دادن و مزاحم شدن.

چرا تبدیل ب string کنم ؟

باید int باشه ؟!

اررور میگیره، اصن کامپایل نمیشه، میگه ک ی مقدار string رو نمیشه تو ی متغیر int ریخت .
توسط (174 امتیاز) 3 9 23

تبدیل به int کنید

منظورم این بود

Convert.ToInt32(cboJob.SelectedValue.ToString())

این کد رو به برنامتون اضافه کنید ببینید چه مقداری نشون میده

            MessageBox.Show(cboJob.SelectedValue.ToString());

valuemember رو نشون میده؟

ویرایش شده توسط
توسط (2,595 امتیاز) 5 15 90
احسنت بر شما، مشکل پیدا شد از کجاست:

وقتی داخل مسیج باکس چاپش میکنم ب جای کد شغل، نام شغل رو نشون میده، و ب همین دلیل هست ک نمیتونه بریزه تو دیتابیس!
(من شغل ها و مدارک تحصیلی رو جدا تو دو تا تیبل دیگه ساختم و کدشون رو داخل تیبل کارمندان میزارم)

در صورتی ک خصوصیت valuwMwmber باید کد شغل رو برگردونه !
توسط (174 امتیاز) 3 9 23

سلام

میتونید از خاصیت Tag آیتم کمبوباکس استفاده کنید و Tag رو برابر با کد شغل قرار بدید.

            using (EmployeeDataContext dc = new EmployeeDataContext())
            {
                var comboItems = dc.UsersJobs.Select(user => new ComboItem { Tag = user.Id, Text = user.madrakeTahsili, TextAlignment = StringAlignment.Far }).ToArray();
                comboBoxEx1.DataSource = comboItems;
            }

 

و به اینصورت مقدار Tag رو از آیتم بگیرید:

int userID = (int)((ComboItem)comboBoxEx1.SelectedItem).Tag;

 

موفق باشید.

توسط (2,595 امتیاز) 5 15 90
احسنتم بر شما استاد عزیز.

مشکل حل شد، واقعا استاد برازنده شماس.

خیلی ممنونم از شما بزرگوار.

موفق باشید

یاعلی
توسط (174 امتیاز) 3 9 23
شما لطف دارید آقا علیرضا

خدارو شکر که مشکلتون حل شد.
توسط (2,595 امتیاز) 5 15 90
+2 امتیاز
سلام،

از پنجره Properties خاصیت RightToLeft رو برابر با Yes قرار بدید.

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

این کد رو تو رویداد لود فرم بنویسید 

            comboBoxEx2.RightToLeft = RightToLeft.Yes;

به جای  comboBoxEx2 نام کمبوباکس رو قرار بدید.

 

توسط (2,595 امتیاز) 5 15 90
با این کد ظاهرش درست میشه ولی مقادیر داخل کمبوباکس بازم همون چپ چین هستن.
توسط (174 امتیاز) 3 9 23
سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,919 کاربر

دسته بندی ها

...