PDA

View Full Version : یک مثال ساده از ListDataBinding



A.Yousefi
دوشنبه 17 بهمن 1390, 22:58 عصر
سلام
من یه لیست باکس انداختم رو پیجم
بعدش یه کلاس تعریف کردم با دو تا پرورتی(همون Name و Age معروف)
از تو برنامه اصلیم یه لیست تعریف کردم که آیتم هاس چند تا نمونه از اوم کلاسیهکه ساختم و ممبرهاشو مقدار دهی کردم.بعدم اون کلاسو به لیستم بایند کردم،به این شکل:


List








<Person> lp = newList<Person>()

{





newPerson() { Age = 23, Name = "Mahsa" },





newPerson() { Age = 19, Name = "Sara" }

};

ListBox1.DataSource = lp;

ListBox1.DataTextField =



"Name";

ListBox1.DataValueField =



"Age";

ListBox1.DataBind();



خب تا اینجا مشکلی نیست و آیتمها رو تو لیستم نمایش میده اما مسئله اینه من میخوام بفهمم کاربر کدوم آیتم این لیستو انتخاب میکنه پس تو یه باتن گفتم:


string








i = ListBox1.SelectedItem.Value;

ولی وقتی به اینجا میرسه ارور میده:
Object reference not set to an instance of an object.
چرا؟
مگه آیتم نداره این لیست؟
پس اونایی که نمایش میده چین؟

A.Yousefi
سه شنبه 18 بهمن 1390, 19:15 عصر
باید بیشتر توضیح بدم؟

A.S.Roma
سه شنبه 18 بهمن 1390, 19:29 عصر
زمانی این اتفاق میوفته که هیچ یک از Item‌های لیست انتخاب نشده باشه. از این دستور استفاده کنید :
ListBox1.SelectedValue;

A.Yousefi
سه شنبه 18 بهمن 1390, 21:02 عصر
زمانی این اتفاق میوفته که هیچ یک از Item‌های لیست انتخاب نشده باشه. از این دستور استفاده کنید :
ListBox1.SelectedValue;
سلام
از کد شما هم استفاده کردم ولی SelectedValue رو "" در نظر میگیره با اینکه یکی از آیتمهای لیست رو هم انتخاب کردم.
اصلا نمیدونم چرا فک میکنه لیست من خالیه وقتی SelectedIndex ش رو هم امتحان میکنم اونو 1- در نظر میگیره یعنی که لیست خالیه.
اگه ممکنه این مورد رو خودتون تست کنید و ملاحضه کنین.

A.S.Roma
سه شنبه 18 بهمن 1390, 23:10 عصر
از اونجایی که خیلی برام جالب بود که چرا جواب نمیده تست هم کردم و جواب هم گرفتم.
شما کد کامل اون پیجتون رو قرار بدید ببینیم چه اتفاقی داره میوفته

A.Yousefi
سه شنبه 18 بهمن 1390, 23:56 عصر
ممنون که پیگیر هستین
اون کدی که مد نظر بود رو ضمیمه کردم،میخوام value آیتم انتخاب شدرو با کلیک روی باتن رو پیج نشون بدم.

A.S.Roma
چهارشنبه 19 بهمن 1390, 00:02 صبح
یک اشتباه رایج !

if (!IsPostBack)
ListBox1.DataBind();

شما در هر بار Load صفحه مقدار لیستتون رو Refresh می کردید !

A.Yousefi
چهارشنبه 19 بهمن 1390, 00:15 صبح
وای خدا اصلا حواسم به این نبود!
ممنون که کمک کردین.