PDA

View Full Version : هدر دیتاگرید با تکنولوژی EF



salehsam
سه شنبه 12 آذر 1392, 12:51 عصر
سلام دوستان
من با ef کار میکنم
برای پر کردن دیتاگرید از کد زیر استفاده میکنم
میخوام هدر ها فارسی بنویسم وقتی یک کلمه مینویسم مشکلی نداره ولی وقتی میخوام دو کلمه بنویسم قبول نمیکنه
چیکار کنم بنظرتون؟

var q = from p1 in db.tbl_education
select new { عنوان = p1.edu_section};
dgv_section.DataSource = q.ToList();

salehsam
سه شنبه 12 آذر 1392, 13:04 عصر
از این روش میشه استفاده کرد ولی زیاد دقیق نیست یعنی اگه یه ستون کم یا اشافه بشه به هم میریزه!


datagridview1.columns[ایندکس ستون].headertext="نام مورد نظر"

forodo
سه شنبه 12 آذر 1392, 14:46 عصر
از این روش میشه استفاده کرد ولی زیاد دقیق نیست یعنی اگه یه ستون کم یا اشافه بشه به هم میریزه!


datagridview1.columns[ایندکس ستون].headertext="نام مورد نظر"

سلام
به این شکل تغییرش بده:

datagridview1.columns["نام ستون"].headertext="نام مورد نظر"

salehsam
سه شنبه 12 آذر 1392, 15:39 عصر
درسته از این رو هم میشه استفاده کرد
ولی در کل این امکان وود نداره که مثلا به جای عنوان کلمه عنوان رشته استفاده کرد؟


var q = from p1 in db.tbl_education
select new { عنوان = p1.edu_section};
dgv_section.DataSource = q.ToList();

khokhan
سه شنبه 12 آذر 1392, 15:46 عصر
از این روش میشه استفاده کرد ولی زیاد دقیق نیست یعنی اگه یه ستون کم یا اشافه بشه به هم میریزه!


datagridview1.columns[ایندکس ستون].headertext="نام مورد نظر"

توصیه می کنم از نتیجه کوئری یه دونه دیتا تیبل بسازی و نام ستون فارسی براشون بگذاری بعد دیتا گرید رو به اون دیتا تیبل وصل کنی :لبخند:

113446

salehsam
سه شنبه 12 آذر 1392, 15:52 عصر
این روش هم درسته ولی کد نویسی بیشتری نیاز داره!
آیا این روش نسبت به روش های بالا مزیت بیشتری داره؟
ممنون

khokhan
سه شنبه 12 آذر 1392, 16:02 عصر
این روش هم درسته ولی کد نویسی بیشتری نیاز داره!
آیا این روش نسبت به روش های بالا مزیت بیشتری داره؟
ممنون
در نظر بگیرین اگه جدولتون بیست ستون داشته باشه و بخواهید برای هر ستون هدر گریدتون رو تغییر بدین با این شرایط کم از کدی که من پیشنهاد دادم کد نویسی لازم داره؟:لبخند:
استفاده از دیتاتیبل هیچ مزیتی نداره غیر از اینکه بتونین نام فارسی با دو یا سه تا کلمه برای ستون هاتون تعریف کنین
حالا دیگه میل خودتونه:لبخند:

salehsam
سه شنبه 12 آذر 1392, 16:11 عصر
قبول
ولی وقتی میشه تو همون دستور سلکت فاسی نوشت چرا اینقدر سختش کنیم
مشکل ما اینه که spase رو قبول نمیکنه!
اگه بشه به جای spase از کاراکتر دیگه ای استفاده کرد یا اینکه کلمات ر توی کاراکترهایی قرار داد که گیر نده حله!
این مشکل برای کلمات لاتین هم وجود داره پس حتما یه راه حل داره؟!

rahnema1
سه شنبه 12 آذر 1392, 21:33 عصر
سلام
لینک زیر را ببینید چند تا روش پیشنهاد شده مثل replace کردن آندرلاین با اسپیس در رویداد paint دیتاگریدویو
یا تعریف template برای دیتاگریدویو
http://stackoverflow.com/questions/128277/linq-custom-column-names

salehsam
سه شنبه 12 آذر 1392, 23:46 عصر
لینکتون رو خوندم و بشترش رو تست کردم ولی جوابی نگرفتم!:ناراحت:

rahnema1
چهارشنبه 13 آذر 1392, 00:46 صبح
لینکتون رو خوندم و بشترش رو تست کردم ولی جوابی نگرفتم!:ناراحت:

من این رو با استفاده از مطالب همون سایت امتحان کردم و جواب میده
شما می تونید توی رویداد DataSourceChanged یا مثلا ColumnAdded آندرلاین را با اسپیس عوض کنید


var q = from p1 in db.tbl_education
select new { عنوان_رشته = p1.edu_section};
dgv_section.DataSource = q.ToList();
void DataGridView1DataSourceChanged(object sender, EventArgs e)
{


foreach (DataGridViewColumn element in dataGridView1.Columns) {
element.HeaderText=element.HeaderText.Replace("_"," ");
}
}