PDA

View Full Version : سوال: انتخاب آیتم خاصی در ComboBox



سونیان
دوشنبه 16 فروردین 1389, 11:49 صبح
سلام. من یه فرمی دارم به نام رسید بار که داخل آن datagridview گذاشتم که با وصل شدن به database مثلا نام راننده و کد و... ظاهر میشه.میخوام ویرایش کنم.وقتی دکمه ویرایش را میزنم وارد یک صفحه دیگه میشم که من داخل فرم ویرایشم برای نام راننده از combobox استفاده کردم که با دستوراتی که در لود فرم نوشتم اسامی تمامی رانندگان در ان ظاهر میشه. مشکل من اینه که مثلا من در فرم رسید بار 10 تا کد دارم که یعنی 10 تا نام دارم من نفر 8 را انتخاب میکنم وقتی دکمه ویرایش را میزنم میخوام نفری که در فرم اول انتخاب کردم با همان نام در combbox ظاهر بشه اما هر دفعه همان نفر اول که در فرم رانندگان است وارد میشود و مجبورم لیست combobox را باز کرده و دوباره انتخاب کنم
ممنون میشم زود جوابمو بدید

sara.f
دوشنبه 16 فروردین 1389, 11:57 صبح
سلام. من یه فرمی دارم به نام رسید بار که داخل آن datagridview گذاشتم که با وصل شدن به database مثلا نام راننده و کد و... ظاهر میشه.میخوام ویرایش کنم.وقتی دکمه ویرایش را میزنم وارد یک صفحه دیگه میشم که من داخل فرم ویرایشم برای نام راننده از combobox استفاده کردم که با دستوراتی که در لود فرم نوشتم اسامی تمامی رانندگان در ان ظاهر میشه. مشکل من اینه که مثلا من در فرم رسید بار 10 تا کد دارم که یعنی 10 تا نام دارم من نفر 8 را انتخاب میکنم وقتی دکمه ویرایش را میزنم میخوام نفری که در فرم اول انتخاب کردم با همان نام در combbox ظاهر بشه اما هر دفعه همان نفر اول که در فرم رانندگان است وارد میشود و مجبورم لیست combobox را باز کرده و دوباره انتخاب کنم
ممنون میشم زود جوابمو بدید

سلام
یعنی شما میخواید مثلا در فرم یک، کد راننده را انتخاب کنید و زمانی که باتن وبرایش را زدید وارد فرم جدیدی شده و در کمبوباکسی که در اون فرم قرار داره، تنها نام همون راننده مورد نظر نمایش داده بشه. درست متوجه شدم؟

در حال حاضر هم مشکلتون اینه که همیشه نام همه راننده ها را نشون میده، درسته؟

group45
دوشنبه 16 فروردین 1389, 12:01 عصر
سلام
متوجه نشدم اون نفری که میخوای اطلاعاتش بیاد از گریدویو انتخابش میکنی یا از یه کمبو دیگه؟
اگه از گریدویو باشه مقدار کمبوتو برابر کن با اونت select cell گریدت با اون فیلدی که میخوای

Himalaya
دوشنبه 16 فروردین 1389, 13:19 عصر
فرض کنیم اسمی که به فرم 2 پاس دادی تو یه متغیر به اسم name قرار گرفته (تو فرم دوم منظورمه)
بعد از اینکه تو فرم 2 کمبو رو پر کردی


comboBox1.SelectedIndex = comboBox1.FindString(name);

سونیان
دوشنبه 16 فروردین 1389, 23:35 عصر
سلام



من در فرم 1 (رسید بار) که اطلاعات من داخل دیتاگریدویو است (نه کمبوباکس ) اطلاعات من که مثلا کد و نام راننده( حسن و علی ومحسن )و... است. کد مربوط به علی را انتخاب و دکمه ویرایش را میزنم فرم 2 باز شد ( اسامی تمام رانندگان به ترتیب(حسن و علی ومحسن )که این اسامی به همان ترتیبی است که در فرم مربوط به اطلاعات رانندگان بوده در داخل کمبوباکسی که در فرم 2 است وجود دارد)وقتی فرم 2 باز میشود کمبوباکس نفر اول یعنی حسن را نمایش میدهد اما من میخواهم علی را که از فرم 1 برای ویرایش انتخاب کردم را اول از همه نمایش دهد. (مثل textbox که وقتی دکمه ویرایش را از فرم 1 زدم اسم علی در textbox فرم 2 نمایش میابد)
( از selectedindex باید برویم ودر combobox برای هر نام عدد بگذاریم نمیشه استفاده کرد چون ممکنه به اسامی رانندگان در فرم مخصوصش اضافه شود)


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

Himalaya
سه شنبه 17 فروردین 1389, 00:44 صبح
چند تا کار میتونی انجام بدی
1. اگه ترتیب اسامی همونه ، میتونی شماره سطری رو که روش کلیک کردی (تو گرید) رو بفرستی به فرم دوم و با کد comboBox1.SelectedIndex = id همون اسمو تو کمبو انتخاب کنی (id شماره سطر انتخاب شده هستش)
2. اسم طرف رو بفرست به فرم 2 بعد با کدی که تو پست 4 گفتم اونو تو کومبو پیدا کن
از این واضح تر نمیتونم بگم...


از selectedindex باید برویم ودر combobox برای هر نام عدد بگذاریم نمیشه استفاده کرد چون ممکنه به اسامی رانندگان در فرم مخصوصش اضافه شود
اگه از اولی استفاده کنی خوب آره ... اضافه شدن گزینه ها به کمبو ممکنه مشکل ساز بشه. چون داری با ایندکس ایتم مورد نظر رو پیدا میکنی... ولی روش دوم اصلا این مشکل رو نداره چون آیتمی انتخاب میشه که برابر نام مورد نظر هستش ... پس نگران اضافه یا کم شدن گزینه های کمبو هم نباشید

Sajjad.Aghapour
سه شنبه 17 فروردین 1389, 20:49 عصر
از SelectedIndex استفاده نکنید.....
شما باید این کار رو بکنی:
وقتی کمبو رو بانک bind میکنید همراه با خاصیت DisplayMember که با فیلد نام ست میکنید، خاصیت ValueMember رو با فیلد ID ست کنید.
در این صورت وقتی آیتمی از ComboBox انتخاب کنید خاصیت SelectedValue آی دی اون شخص رو به شما خواهد داد.

همون طور هم که میدونید این خاصیت هم خواندنی و هم نوشتنی هست.یعنی شما خواهید توانست وقتی فرم دوم بالا می آید برای مثال به این صورت بنویسید:


combo.SelectedValue = 1;


موفق باشید/

سونیان
سه شنبه 17 فروردین 1389, 22:56 عصر
سلام
در فرم 2 در لود فرمم مینویسم
combobox1.displaymember="dname" ;
combobox1.valuemember="dcode";
combobox1.datasorce=driver.select();
که این باعث میشه در کمبوباکسم اسامی رانندگان بیاد. فکر کنم منظورتون این کدی که در بالا نوشتم بود
حتی selected indexcenge هم نوشتم. نمیشه:لبخند:

hakelberfin
چهارشنبه 18 فروردین 1389, 00:57 صبح
کلاسی از نوع Static تعریف کن . در این کلاس میتونی متغییر ها و توابع Static پروژه ت رو قرار بدی.
متغییری از نوع استاتیک در این کلاس تعریف کن که نوعش با نوع dcode یکی باشه .
در رویداد SelectionChange دیتاگرید کد راننده ی سطر انتخابی رو بخون و در متغییر تعریف شده قرار بده .
و در زمانی که به فرم دوم میری این مقدار رو در خاصیت SelectedValue کومبوباکست قرار بده .
میتونی این کار رو برعکس هم انجام بدی ، یعنی هر اسمی که در ComboBox انتخاب کنی در دیتاگرید سطر متناظرش انتخاب بشه.
البته باید یه سری کارهایی برای جلوگیری از باگ های احتمالی نیز انجام بدی. مثلا یه مقدار پیش فرض برای متغییر استاتیکت بده و هنگامی که میخوای اون متغییر رو به خاصیت ComboBox.SelectedValue انتساب بدی چک کنی که مقداری غیر مقدار پیش فرض داشته باشه