محتویات سایت
        برچسب های محبوب 








 
   نمایش لیستی (یا آرایه ای) از رشته ها در کنترل DataGridView
  در این مقاله به بررسی مشکلی که هنگام نمایش لیستی از رشته ها در کنترل DataGridView به وجود می آید، می پردازم.
   C#
   ۱۲۵۳۶
   این مقاله حاوی فایل ضمیمه نمی باشد
   مرتضی صحراگرد
   ۱۳۸۷/۹/۲۷
نسخه قابل چاپ نسخه قابل چاپ

تذکر :

در این مقاله از امکانات موجود در DotNet 3.5 استفاده شده است.

آغاز :

هنگام برنامه نویسی گاهی نیاز می شود که لیستی (یا آرایه ای) از رشته ها را با استفاده از کنترل DataGridView نمایش دهیم.

وقتی یک لیست را به کنترل DataGridView مقید می کنیم، این کنترل به طور پیشفرض نام خصوصیت های (Properties) آیتم های موجود در لیست را به عنوان نام ستون در نظر می گیرد.

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

برای درک بهتر موضوع، فرض کنید قرار است لیست زیر را که شامل نام روزهای هفته می باشد را در یک کنترل DataGridView نمایش دهید.

List<string> weekDays = new List<string> {"Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday"};

 

dataGridView1.DataSource = weekDays;

اگر برنامه را اجرا کنید با شکل زیر روبرو می شوید.

همانطور که ملاحظه می کنید، کنترل DataGridView به جای اینکه نام روزهای هفته را نمایش دهد، اندازه هر یک از نام ها را نمایش می دهد!

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

List<string> weekDays = new List<string> {"Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday"};

var temp = weekDays.Select(item => new {Days = item});

dataGridView1.DataSource = temp.ToList();

دوستانی که با زبان LINQ آشنا هستند، دقیقا متوجه نحوه عملکرد قطعه کد فوق می شوند. در قطعه کد فوق برای این لیست نام مستعاری به نام Days در نظر گرفته ایم. و برای اینکه داخل کنترل DataGridView قابل نمایش باشد، آن را تبدیل به لیست نموده ایم.

پس از اجرای قطع کد فوق، با شکل زیر مواجه می شوید.

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

موفق باشید.