PDA

View Full Version : مبتدی: انتخاب در کمبوباکس



mahsa.admin
یک شنبه 10 خرداد 1394, 10:21 صبح
سلام
یک جدول دارم که بایند میکنم به کمبوباکس
cbo.DataSource = Linq;
cbo.DisplayMember = DisName;
cbo.ValueMember = ValName;
در این کمبوباکس برای اینکه به فیلد هایی غیر از DisName و ValName دسترسی پیدا کنیم (مثلا جدول ما سه فیلد نام و کد و قیمت ) چه کدی باید بنویسم که به قیمت در انتخاب هر ایتم دسترسی داشته باشم در vb من این کدو مینوشتم
cbo.selectitem("price ").tostring()

Mahmoud.Afrad
یک شنبه 10 خرداد 1394, 19:08 عصر
آیتم انتخاب شده رو به شئ ای از نوع موجودیت تبدیل و بعد از پراپرتی های اون استفاده کن.

tbl h = comboBox1.SelectedItem as tbl;
if (h != null)
{
MessageBox.Show(Convert.ToString(h.baseprice));
}

akbarkian
شنبه 16 خرداد 1394, 09:31 صبح
با سلام
من هم دقیقا همین مشکل و دارم ولی متاسفانه راه حلی پیدا نکردم
یعنی میخام به ایتمی غیر از دوتا موردی که توسط کمبو باکس برگردانده میشود(DisplayMember وValueMember ) دسترسی داشته باشم دوستان لطفا راهنمایی کنن

winner1
شنبه 16 خرداد 1394, 09:54 صبح
ببینی خیلی سادس اگه از دیتاتیبل واسه سورس کمبو باکستون استفاده کردین


(this.combobox.DataSource as DataTable).Rows[this.combobox.selectedIndex]["ID"].ToString();


این راحل کلی بود با لینکم اگه دادین بازم خیلی ساده به جدول نوع لینک تبدیل کنین

mahsa.admin
شنبه 16 خرداد 1394, 13:14 عصر
با تشکر از جناب winner1 (http://barnamenevis.org/member.php?296962-winner1)
امکانش هست معادل linq را هم بگید

winner1
شنبه 16 خرداد 1394, 13:48 عصر
شما قبل اینکه به کمبوباکستون دیتا سورس بدین


var result=from u in this.DataContext.Users select u;
DataTable dtUser=new DataTable();
dtUser.Columns.Add("ID",typeof(int));
dtUser.Columns.Add("UserID",typeof(int));
dtUser.Columns.Add("Name",typeof(int));
foreach(var item in result)
{
DataRow drNew=dtUser.NewRow();
drNew["ID"]=item.ID;
drNew["UserID"]=item.ID;
drNew["Name"]=item.ID;
dtUser.Rows.Add(drNew);
}
this.comboBox.DataSource=dtUser;

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

winner1
شنبه 16 خرداد 1394, 13:52 عصر
ولی من اگه خودم این مسئله رو به این شکل حل کردم که تو همچین مواقعی از Ado برای پر کردن کمبو باکس استفاده کردم تا سرعتم افت نکنه