Ömer Faruk ZORLU

Gizli tarif diye birşey yok.

Video: ASP.NET Dynamic Data - Giriş

clock April 12, 2010 10:20 by author OMR





ASP.NET Dynamic Data - Gelişmiş Scaffolding

clock March 31, 2010 09:59 by author OMR

Merhabalar, daha önce ASP.NET Dynamic Data(yazının devamında DD kısaltmasını kullanacağım) hakkında bazı bilgileri yayınlamıştım. Yeni bir makale konusunda düşünürken makale konusu olarak gerçek bir DD projesinde kullanıcı tarafından gelebilecek isteklerin hızlı bir şekilde nasıl karşılanabilineceğinden bahsetmenin uygun olduğuna karar verdim.
Yazılımcı gözüyle değerlendirmek gerekirse kullanıcı gereksinimleri konusunda gözden kaçan bir çok gereksinimi görülmeyebilir.  Örneğin bir tablo içindeki kayıtların listelenmesi yazılımcı için gayet yeterlidir ancak kullanıcı gözüyle bakıldığında her şeyin listelenmesi çoğu zaman gereksiz olacaktır. Bu kapsamda kullanıcı isteklerine karşılık sorun çözümüyle alakalı makalele dizisinin ilkini yazmaya başlıyorum. Daha önceki makalelerde bahsettiğim isimlendirme, biçimlendirme vb. gibi temel işlemlere bu makalede değinmeyeceğim.

Kullanıcı tarafında tablo üzerindeki her alanın(column) görüntülenmesi istenmeyebilir. Bazı durumlarda ise tüm kayıtların listelenmesi kullanım kolaylığı açısından sıkıntılı olabilir.

Scaffolding tekniğiyle istenilen alanların tüm şablonlarda görüntülenmesini engelleyebiliyoruz. Özellikle listeleme sayfalarında tüm alanların sayfada görünür halde olması yatay olarak uzayan bir sayfaya neden olur ancak bu alanları klasik scaffolding tekniği ile gizlersek diğer şablonlardanda kayboluverir.  İşte burada asıl sorun ortaya çıkıyor: Gizlenen alanların kullanıcı tarafından düzenlenmesi gerekiyorsa yada detaylı görüntüleme şablonunda tüm alanların görüntülenmesi gerekiyorsa ne yapacağız?

  Aletleri geliştirmek DD için her zaman kazanımdır. Bu senaryoda scaffolding tekniğini sayfa şablonlarına göre nasıl özelleştirebileceğimizi öğreneceğiz.

Kullanabileceğimiz veri bileşenleri(GridView, FormView, DetailsView vb.) veri listeleme sırasında listeleme işlemi için IAutoFieldGenerator arayüzünü uygulayan bir sınıf ile veri alanları üzerindeki kararını verir. Varsayılan alan oluşturucularda verideki tüm alanlar DD bildirimleri uygunlandıktan sonra(scaffolding gibi kısıtlamalar vb.) listelenir. Yapılması gereken şey ise veri listeleme işini gerçekleştirme görevini yazacağımız bir sınıfın üstlenmesidir.

IAutoFieldGenerator arayüzünü uygulayan sınıfımız:

namespace Eposta.Core.CustomFieldGenerator
{
using System.Collections.Generic;
using System.Web.UI;
using System.Web.DynamicData;

///
<summary>
/// Bu sınıf veri listelemesini işlemlerini
/// özelleştirmek amacıyla yazılmıştır.
/// </summary>
public class CustomColumnGenerator : IAutoFieldGenerator
{
/// <summary>
/// Veri listelemesi için incelenecek
/// tablo değişkenini tutar
/// </summary>
protected MetaTable mTable = null;
#region IAutoFieldGenerator Members
/// <summary>
/// Listeleme işlemini gerçekleştirecek method
/// </summary>
/// <param name="control"></param>
/// <returns></returns>
public System.Collections.ICollection GenerateFields(Control control)
{
// Uygun kolonların biriktirildiği koleksiyon
List<DynamicField> dynFieldList = new List<DynamicField>();
// MetaTable atanmışsa
if (mTable != null)
{
// Her bir MetaColumn için
foreach (MetaColumn mColumn in this.mTable.Columns)
{
// Scaffolding ataması yapılmışsa koleksiyona eklenmesi
// uygun değildir. Eğer bu kontrol yapılmazsa ilgili
// alan görüntülenecektir. Çünkü tüm sorumluluğu almış
// bulunuyoruz
if (
!mColumn.Scaffold
)
continue;
DynamicField dynField =
new DynamicField();
dynField.DataField = mColumn.Name;
dynFieldList.Add(dynField);
}
}
return dynFieldList;
}
#endregion
}
}

Scaffolding tekniğini denetleyerek görüntüleme işlemini üstlenen sınıfımız artık hazır. Şimdi sıra şablonlara göre bu denetleme işlemine geldi. Varsayılan şablonlar için bir enum tanımlayıp GenerateFields methodunda şablona görede bir denetleme yapmamız gerecektir.

namespace Eposta.Core.Enums
{
public enum PageTemplateType
{
Details,
Edit,
Insert,
List,
ListDetails
}
}

Özelleştirme işlemlerinin uygulanabilmesi için özel bir öznitelik geliştirip bildirimlerin bu öznitelik üzerinden gerçekleştirmesi gerekiyor bunun için aşağıdaki sınıfı kullanabiliriz.

More...



Dynamic Data Web Site ile FileUpload işlemleri

clock March 16, 2010 21:17 by author OMR

MetaData üzerinden öznitelik ataması yapılarak doğrulama, biçimleme ve özel alan şanlonlarını(FieldTemplates) nasıl kullanacağımızdan bahsetmiştim.

Bu makale özel özniteliklerin ve alan şablonlarının geliştirilmesi konusunu içerecektir. Bu nedenle FileUpload kontrolünün kullanımı ve alan şablonlarının çalışma mantığıyla özel özniteliklerin kullanımı hakkında bilgi sahibi olacağız.

Önceki makalemde bahsettiğim gibi ASP.NET Dynamic Data Web Site ile FileUpload işlemlerini klasik yöntemlerle kullanamıyoruz.


ASP.NET Dynamic Data Web Sitesinde Ajax Tookit ile birlikte kullanıyorsanız ve FileUpload bileşeniniz UpdatePanel içerisinde yer alıyorsa ScriptManager nesnesinin EnablePartialRendering özelliğini false olarak atamanız gerekiyor.


Kodlamaya başlamadan önce yapılması gereken işlemleri özetlemenin faydalı olduğunu düşünüyorum. Kodlama detayları ilgili sınıfların içinde yer almaktadır.

  1. Zorunlu olmasa da dosyanın sunucuya yükleme işleminin gerçekleştirileceği yardımcı bir sınıf.
  2. Her bir dosya yükleme alanı için dosya türü, boyutu vb. bildirimleri yapmak için öznitelik tabanlı bir sınıf
  3. Dosya yükleme alanlarının ekleme ve güncelleme ekranı için FileUpload kontrolü listeleme ve detay sayfaları için ise dosya türüne göre yüklenen dosyaya uygun simge, önizleme vb. için alan şablonlarının(FieldTemplate) gerekli hazırlanması.
  4. İşlevin kazandırılacağı alanlara gerekli öznitelik tanımlamasının yapılması

Temel düzeyde dosya yükleme işlemini gerçekleştirmek üzere aşağıdaki sınıfı kullanacağız

More...



ASP.NET Dynamic Data Web Sitesini Özelleştirmek - 1

clock October 1, 2009 02:13 by author OMR

Merhabalar, daha önceki yazımda Dynamic Data Web Site'ını özelleştirebileceğimiz konusundan bahsetmiştim. Bu yazı özelleştirme konusuna giriş amacı taşımaktadır.

Dynamic Data Web Site'ın oluşturulmasıyla birlikte gelen sayfa şablonları üzerinden yazıma devam ediyorum.

Bazı veritabanlarında tablo isimleri kolon isimleri vb alanlar firmanın kullandığı standartlar kapsamında belirleniyor. Bir tablo adlandırması çok farklı prefixler alabilir, kısaltmalardan faydalanarak kullanılıyor olabilir yada okunuşu çok anlamsız bir şekilde olabilir. Bu temelde yazılımsal olarak bir sııntı oluşturmuyor ancak bu isimlendirme standartlarından kullanıcıların anlamasını beklemek çok yanlış olacaktır. Dynamic Data Web Site'ın çözüm için üzerinde modifikasyon(lar) yapılacak tabloya partial olan farklı bir class yazıyoruz ve class'a MetaDataType özniteliğini atıyoruz. Zor gibi görünen bu yapı kodlaması oldukca basittir.

Employee tablosunun List.aspx şablonunda görüntüsü:

Bu tablo modifikasyonlar yapmaya başlayalım. Tanımalayacağımız class partial olduğundan LINQ to SQL Class'ında generate edilmiş tablo adı ile aynı isimi taşıması gerekiyor. Tablonun atandığı class adını LINQ to SQL Class'ından tespit edilebilir.

More...



ASP.NET Dynamic Data Web Site ile çalışmak - 1

clock September 28, 2009 23:33 by author OMR

 

Merhabalar

Sürekli genişliyen uygulamalarda yapılan veri tabanı geliştirmelerinde yaşanan en büyük sıkıntılardan biriside yazılım alt yapısının değişiklikleri hızla sindirememesidir. Değişiklik gerektiren kodlar bazen yalnızca bir methodun içindedir bazen tüm class bazende çok daha fazlası.

Veritabanı üzerinde yapılan her değişiklik yeni bir süreci başlatır. Temel düzeyde ele almak gerekirse Yapılan en ufak bir değişiklikte iş zekası katmanına ve sunum katmanına yansıtılmalıdır. Bu değişiklikler yapılırken yada yapıldıktan sonra ortaya çıkabilecek sorunlar canınızı sıkabilir. Oysa ki yapmanız gereken sadece CRUD(Create, Read, Update, Delete) işlemlerinden ibarettir ve bu işlemi defalarca yapmanız gerekebilir. Bu tür sorunları aşmak adına ASP.NET Dynamic Data yardımımıza koşuyor.

ASP.NET Dynamic Data .NET Framework 3.5 SP1 ile birlikte geliyor.

Visual Studio ile yeni bir Dynamic Data Web Site oluşturup keşfetmeye başlayalım.

 

More...