PDA

View Full Version : کامبوباکس :Unable to cast object of type 'System.Data.DataRowView' to type 'System.String'



resident
یک شنبه 05 اسفند 1386, 07:54 صبح
سلام
من بارها با این کد مقدار آیتم انتخاب شده کامبوباکس توسط کاربر رو خوندم اما نمیدونم چرا الان که از اون استفاده می کنم exceptioncزیر رخ میده

Unable to cast object of type 'System.Data.DataRowView' to type 'System.String'
اینم بگم کهData source کامبوباکس ،ِData Table است
اینم کدی که استفاده کردم:



code_nemuneye_azmayeshgahi = (string)cmb_codenemune.SelectedItem;

از اینم استفاده کردم مشکل حل نشد


code_nemuneye_azmayeshgahi = (string)cmb_codenemune.SelectedItem.ToString();

متشکرم

Masoud_TB
یک شنبه 05 اسفند 1386, 08:23 صبح
دلیلش اینه که شما وقتی داری توی Combox ت اضافه می کنی به جای متن یک شیء از جنس DataRowView اضافه کردی. احتمالا یه کدی مثل این کد:


DataSet ds = new DataSet();
da.Fill(ds);
foreach(DataRow row in ds.Tables[0].Rows)
cmb_codeNameune.Items.Add(row);

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


DataSet ds = new DataSet();
da.Fill(ds);
foreach(DataRow row in ds.Tables[0].Rows)
cmb_codeNameune.Items.Add(row["Name"].ToString());

resident
یک شنبه 05 اسفند 1386, 08:50 صبح
دلیلش اینه که شما وقتی داری توی Combox ت اضافه می کنی به جای متن یک شیء از جنس DataRowView اضافه کردی.
[/code]
نه مسعود جان. کامبوباکس رو اینجوری پر کردم:


string str = "select code_nemuneye_azmayeshgahi from nemuneye_azmayeshgahi where vaziat=1 and (code_forme_ersale_nemune is null or code_forme_ersale_nemune='')";
cmb_codenemune.DataSource= db.dt_dtagridview(str);
cmb_codenemune.DisplayMember = "code_nemuneye_azmayeshgahi";

که متد dt_dtagridview دستور select رو اجرا می کنه و نتیجه اونو در یک دیتاتیبل میریزه و دیتاتیبل رو برمی گردونه.

Masoud_TB
یک شنبه 05 اسفند 1386, 15:23 عصر
پس اینجوری باید جواب رو بگیری:


string test = comboBox1.SelectedItem.ToString();

علیرضا مداح
یک شنبه 05 اسفند 1386, 16:39 عصر
سلام.
هنگامیکه شی ء کامبوباکس به شی ء DataTable بایند میشود ، تمام آبجکت های آن از نوع DataRowView خواهند بود و برای دسترسی به سطر جاری ، باید مقدار پروپرتی SelectedItem را به نوع ذکر شده تبدیل کنید :


object selectedValue = (comboBox.SelectedItem as DataRowView)["columnName"];

zahracomputer
جمعه 21 تیر 1387, 22:55 عصر
سلام و خسته نباشيد
ممنون از جوابتون
من كد فوق را نوشتم در اولين بار يعنی page-loade برنامه مقدار مورد نظر را درست نشان مي دهند ولي هنگامي كه مقدار جديدي انتخاب مي كنم و button را كليك مي كنم و به اين مقدار جديد نياز دارم همان عبارن system.data.datarow را نشان مي دهند. علت اين مشكل؟
ژبا تشكر