View Full Version : اسامی ستون های DataGrid
aryasoft2872
دوشنبه 02 مرداد 1391, 23:13 عصر
با سلام
تا به حالا هر گاه دیتابیس رو توی گرید لود می کردم همیشه یک تابع داشتم که اسامی ستون ها رو توی گرید تبدیل به فارسی می کرد...امروز کنجکاو شدم ببینم آیا راه دیگه ای نیست که نیاز نباشه اسامی رو تعویض کنم و خودش از ابتدا اسامی درست رو نشون بده...
(مثلا خاصیتی در دیتابیس یا مشخص کردن در XAML)
sia_2007
سه شنبه 03 مرداد 1391, 01:24 صبح
روش کد نویسی شما به احتمال زیاد اشتباه هستش
اگر شما از کلاس ها استفاده کنید، مثلا Customer، با استفاده از Annotation ها می تونید
هم اعتبار سنجی ها رو انجام بدید و هم این مسئله ای که گفتید
در نهایت می تونید از روی Customer به دیتابیس معادل هم دسترسی پیدا کنید و مثلا با Entity Framework
لیستی از Customer ها رو تو Data Grid View تون نمایش بدید
البته دیتا گرید پیش فرض Silverlight و Telerik این قابلیت رو دارند، ولی گرید پیش فرض WPF خیر
تازه به درد MVC و ... هم می خورن
کلا این روش درسته
Amir Oveisi
سه شنبه 03 مرداد 1391, 07:57 صبح
متاسفانه استفاده از Annotation ها در Silverlight کار می کنه فقط. اما این به این معنی نیست که تو WPF نشه ازش استفاده کرد.
برای اینکه تو WPFبتونید از Annotation ها استفاده کنید، کافیه با استفاده از Attribute ای با نام Display، مشخص کنید که برای هر property که مقدار پارامتر Name اش چه چیزی خواهد بود:
[Display(Name="نام ستون")]
public string ColumnName { get; set; }
بعد برای خوندن مقدار این Attribute یک راه خوبش اینه که یک Custom Control بسازید که از DataGrid ارث برده باشه و متد OnAutoGeneratingColumn رو Override کنید و تو اون متد خودتون مقدار Name رو از Display بخونید:
protected override void OnAutoGeneratingColumn(DataGridAutoGeneratingColum nEventArgs e)
{
base.OnAutoGeneratingColumn(e);
PropertyDescriptor pd = e.PropertyDescriptor as PropertyDescriptor;
DisplayAttribute displayAttr = pd.Attributes[typeof(DisplayAttribute)] as DisplayAttribute;
if (displayAttr != null)
{
if (!string.IsNullOrEmpty(displayAttr.Name))
e.Column.Header = displayAttr.Name;
}
با استفاده از Annotation ها نه تنها میتونید عنوان Header ها رو در حالت AutoGenerateCulomn مشخص کنید، بلکه میتونید مشخص کنید که چه property هایی از DataSource توی DataGridنمایش داده بشه و یا اینکه هر Property تو چندمین ستون نمایش داده بشه و ...
موفق باشید
mze666
سه شنبه 03 مرداد 1391, 10:48 صبح
سلام آقای اُویسی این مطلبتون خیلی عالی بود اگر ممکنه براتون یه مقدار بیشتر توضیح بدید که چطور میشه مشخص کرد که توی حالت AutoGenerateCulomn چه پروپرتی هایی نمایش داده بشه و توی چندمین ستون.
ممنون.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.