Geçenlerde herhangi bir uygulama geliştiriyordum ki aniden bir kontrol ihtiyacım oldu. Söyle ki;
Bir Classnesne oluşturdum.
public class Employee { public int ID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public decimal Salary { get; set; } public DateTime HireDate { get; set; } }
Daha sonra kopyasınıinstance çıkarıp özelliklerine değer atadım. Buraya kadar herşey normal. Peki dedim şunu birde WebForm'unda zahmetsiz bir şekilde gösterebilsem ne süper olur. Böyle durumda akla en yatkın DetailsView veri kontrolü kullanmaktır. Lakin kontrolün DataSource özelliğine herhangi bir nesneyi zart diye atayamazsınız. Eğer atarsanız şöyle bir hata alırsınız
Hoş değil :(
Bu gibi durumlarda olmasa ne zaman kontrol geliştireceğiz ki :) Peki ne yapmak lazım; Mantık basit. Reflection ile nesne özelliklerini okumak, kontrolün ihtiyaç duyabileceği ekstra bilgileri Attributenitelik yardımı ile iletmek.
[Serializable] public class Employee { [FieldAttributes(IsVisible = false)] public int ID { get; set; } [FieldAttributes(FieldHead = "Ad")] public string FirstName { get; set; } [FieldAttributes(FieldHead = "Soyad")] public string LastName { get; set; } [FieldAttributes(FieldHead = "Maaş", Format = "N2")] public decimal Salary { get; set; } [FieldAttributes(FieldHead = "İşe Başlama Tarihi", Format = "dd.MM.yyyy")] public DateTime HireDate { get; set; } }
Kullanımın kolay olması için SmartTag ve DesignTimeSupport gibi atraksiyonlar.
Sonuç;
Proje dosyası.
Site içinde kullandığım E-mail uygulamasının kodları.
TreeView kontrolünü Menu gibi kullanmak istersek Css ile kolayca yapılabiliriz. Şahsen ben her zaman Menu kontrolüne tercih etmişimdir.
//head
//body
sonuç;