DevExpress ClientSideEvents FireFox Problemi

DevExpress kontrollerinin client side event’lerinde bir javascript fonksiyonu çağırıyorsak Internet Explorer için bu işlemi aşağıdaki gibi yapabiliriz.

<ClientSideEvents KeyDown=”foo()” />

Ancak bu kodun bulunduğu sayfayı Firefox ile  açmaya çalıştığımızda foo fonksiyonunun tanımlanmadığına dair hata verecektir. Bu sorunu aşmak için fonksiyonu aşağıdaki gibi DevExpress’in normal söz dizimi içinde vermeniz yeterli olacaktır.

 <ClientSideEvents KeyDown=”functions (s, e) {

foo();

}” />

ASPxPopUpControl Genişlik Problemi

DevExpress kontrollerinden ASPxPopUpControl kullanırken, bir yerde genişliğini 100% yapmam gerekti. Ama nedense bir türlü ayarlayamadım. Genişliği piksel olarak verdiğim de ise hiçbir sorun çıkmıyordu. Sonuçta biraz google’lama sonucunda çözümü buldum. Belki birilerine daha yardımı dokunabilir. Öncelikle şunu da söyleyeyim. Bu çözümü DevExpress Team önermiş yani bir nevi sorun olduğunu kabul ediyorlar.

Öncelikle bir javascript fonksiyonu yazıyoruz. (popup, kontrolümüzün ClientInstanceName’i)

    function GenislikAyarla(){
var width = _aspxGetDocumentWidth();
popup.SetWidth(width);
         }

Daha sonra kontrolün init client side event’inde bu fonksiyonu çağırıyoruz.

DevExpress Kontrolleri SetEnabled Sorunu

DevExpress kontrollerini kullanırken eğer server tarafında yazdığınız kodda Enabled property’sini kullandıysanız. Örneğin

ASPxTextBox1.Enabled=true;

gibi, Client Side Eventler ‘de kontrolün enablad özelliğini değiştirmek istediğiniz de (SetEnabled fonksiyonu ile)  beklediğinizden farklı ve hatalı sonuçlarla karşılaşırsınız. Buna engel olmak için eğer bir kontrolün enabled özelliğini client side’da değiştireceksek ve server side’da da bu özelliğe müdahale etmemiz gerekiyorsa Enabled yerine ClientEnabled property’sini kullanmalıyız.

XPObject, XPBaseObject, XPCustomObject

        Bir keresinde bu üçü arasındaki fark hakkında bir soru gelmişti. Ben de cevabı başkalarına da faydası olabilir diye burada da yayınlamaya karar verdim.

Daha önce XPO‘dan bahsetmiştim.  XPO’da nesnelerimiz aracılığıyla verilerimizi veritabanına ekleyebilmek için nesnelerimizin kalıcı yani persistent olması gerekmektedir. Sınıflarımızı kalıcı yani persistent yapabilmek için XPObject, XPBaseObject, XPCustomObject’ten birinden türetmemiz gerekmektedir. Bunların türediği temelde bulunan yapı ise  XPBaseObject’tir.

XPObject,XPLiteObject,XPCustomObject XPBaseObject’ten türemektedir. Bunların arasında belirli özellik farkları var. Bu farktan bahsetmeden önce deferred deletion ve optimistic locking kavramlarını bilmeniz gerekmektedir. Optimistic locking birden fazla thread ile çalıştığınız durumlarda aynı veri üzerinde yapılan işlemlerde oluşabilecek problemleri engellemek için oluşturulmuş bir yapıdır. Deferred Deletion ise persistent bir nesneyi sildiğinizde xpo nun fiziksel olarak datayı hemen silmesini engeller ve silindi olarak işaretlenmesini sağlar. Deferred Deletion birden fazla nesnenin aynı nesneyi refere ettiği durumlarda veritabanı exceptionlarından korunmamızı sağlar. Bu dördünün bu özellikleri desteklemesi ile ilgili tabloda aşağıdaki gibidir.

Class Name            Deferred Deletion              Optimistic Locking
XPBaseObject                     –                                            +
XPLiteObject                      –                                             –
XPCustomObject               +                                            +
XPObject                            +                                            +

XPO ile O\R MAPPING -3

 Merhabalar, bu makale serimizde Object Relational Mapping kavramından ve DevExpress ürün ailesine ait XPO ile temel veritabanı işlemlerimizi nasıl yapabileceğimizden bahsedeceğiz.

İlişkiler:

Veritabanı uygulamalarımızda her zaman tek tabloyla çalışmadığımız için XPO’da da birden fazla tabloyla çalışmamızı ve aralarında ilişkiler kurmamızı sağlayan yapılar var. XPO’da tablolar arası ilişki kurmak istediğimizde bunu bu tablolara ait sınıflarımızı oluştururken Association anahtar sözcüğüyle oluşturuyoruz. Ancak bire bir ilişkiler de Association sözcüğünü kullanmak yerine ilişki içinde bulunan her iki sınıfta da diğer sınıf türünden bir nesne oluşturmamız yeterli oluyor.

  Continue…

XPO ile O\R MAPPING -1

   Merhabalar, bu makale serimizde Object Relational Mapping kavramından ve DevExpress ürün ailesine ait XPO ile temel veritabanı işlemlerimizi nasıl yapabileceğimizden bahsedeceğiz

  Object Relational Mapping : O\R Mapping kısaca nesne tabanlı programlama dilleri ile ilişkisel veritabanları arasında ilişkilendirme yapmamızı sağlayan bir programlama tekniğidir. Yani veritabanı üzerinde yapacağımız işlemler için hiçbir Sql kodu yazmamız gerekmez. Veritabanı üzerindeki alanlara programımızda oluşturduğumuz sınıflar aracılığıyla ulaşıyoruz ve ekleme silme vb işlemleri sınıflar üzerinden yapıyoruz. Böylece veritabanı bağımsız uygulamalar yapabiliyoruz. Bu işlemi yapmamamız sağlayan çeşitli çözümler var açık kaynak kodlu Nhibernate, .Net 3.0 ile gelen LINQ, DevExpress Xpo bunlardan bir kaçı.

Continue…