PDA

View Full Version : سوال: مقدار دادن به comboBox1.SelectedValue



abbaseftekhari
یک شنبه 14 تیر 1388, 11:25 صبح
من می خوام به comboBox1.SelectedValue مقدار بدم اما مقدار نمی گیره ، جستجو هم کردم اما این مورد را پیدا نکردم لطفا کمک کنید


اگه تایپیک مشابهی وجود دارد لطفا آدرس آن را قرار دهید

naeeme
یک شنبه 14 تیر 1388, 11:47 صبح
اگر دقت کنین SelectedValue یک readonly property هست و نمیشه بهش مقدار داد. اگر می خواید که آیتمی با مقدار مورد نظر شما انتخاب بشه، باید index اون آیتم رو پیدا کنین و از selectedindex استفاده نمایید.

__H2__
یک شنبه 14 تیر 1388, 19:09 عصر
سلام
مقدار SelectedValue قابل ست است و readonly نیست!
احتمالاً جناب naeeme سریع جواب داده بودند و دقت کافی نداشتند ...

=====

اگر کامبو شما DataSource مناسبی داشته باشد و ValueMember را با نام مناسب فیلد تغذیه Value ست کرده باشید، مقدار دهی SelectedValue مشکلی نباید ایجاد کند.

Ali_Mor
دوشنبه 15 تیر 1388, 01:49 صبح
دقت کن مقداری رو که به SelectedValue میدی از همون نوعی باشه که به Value کامبو بایند شده. مثلا اگر نوع فیلدی که به ValueMember کامبو بایند شده از نوع Int64 باشه و شما به SelectedValue مقداری از نوع integer نسبت بدی، تغییری رو مشاهده نمی کنی

abbaseftekhari
دوشنبه 15 تیر 1388, 09:40 صبح
سلام
از جوابتون ممنون اما من می خوام به comboBox1.SelectedValue از طریق یک حلقه for مقدار بدم که مقدار نمی گیره ، خواهش می کنم راهمایی کنید .


for (int i = 0; i < tb.Rows.Count; i++)
{
comboBox1.Items.Add(tb.Rows[i]["namegorup"].ToString());

this.comboBox1.SelectedValue = Convert.ToInt32(tb.Rows[i]["id"]);
}

k_m
دوشنبه 15 تیر 1388, 12:58 عصر
خوب چرا می خوای این جوری مقدار بدی؟
این کد رو بذار:

ComboBox1.dataSource=tb;
ComboBox1.DataValueField="id";
ComboBox1.DataTextField="namegorup";

__H2__
دوشنبه 15 تیر 1388, 13:24 عصر
سلام

از طریق یک حلقه for مقدار بدم که مقدار نمی گیره
مشخص است که در این روش راهی برای مقدار دهی value ندارید.
اگر به کدهای خودتان هم دقت کنید خواهید دید که شما فقط و فقط یک مقدار namegorup را به صورت string اضافه کرده اید و به کامبو منتقل کرده اید، چظور انتظار دارید کامبو از مقدار id مطلع باشد؟! و بر اساس ان فرمان شما را اجرا کنید؟!
یعنی میخواهم دلیل عدم کارکرد کدتان را هم متوجه شوید.

برای add دستی یا باید از یک class یا struct کمکی دو عنصری استفاده کنید و یا روشی که k_m گفتند استفاده کنید که گمانم همین آخری مشکلتان را حل میکند.

__H2__
دوشنبه 15 تیر 1388, 22:41 عصر
سلام
نمیدانم چطور این را میگویید؟؟؟!!!
دستور add شما بخه وضوح تمام فقط namegorup را اضافه میکند


comboBox1.Items.Add(tb.Rows[i]["namegorup"].ToString());


=====


.. خوب id هم در حلقه است ...
یعنی مثلاً به نظر شما تمام سه دستورات زیر برابر هستند؟


for ...
y = x;

یا


for ...
if (y == x) ...

یا

for ...
list.Add(x);

در هر سه شبه دستور فوق x وجود دارد، پس یعنی سر سه شبه دستور برابر هستند؟

=====

از روشی که k_m گفتند استفاده کنید.
موفق باشید.