Veritabanı yerine XML!

30/11/2006

Veritabanı yerine XML!

Merhabalar Arkadaşlar, Özellikle .Net ile birlikte gelen yeni özelliklerden bir tane serialization işlemi, eminimki daha önceden mutlaka bir yerlerde duymuşsunuzdur okumuşsunuzdur, belkide biliyorsunuzdur ancak ben bu yazımda seriileştirme işlemini ufak bir tabloda nasıl kullanabileceğiniz üstünde duracağım. Yani çok az bir veriniz varsa bu veriyi bir Veritabanı sistemi yerine direk serialization kullanarak saklamanın yöntemini anlatacağım. Hızlıca başlayalım hemen yeni bir Windows Uygulaması açın, ismine de Serialize yazın. Oluşan formun üst tarafına 4 tane button, alt tarafına ise bir adet DataGrid yerleştirin ve butonların isimlerini aşağıdaki resime göre düzenleyin.

Şimdi aslında ilk yapacağımız iş bu DataGrid de görüntülenecek olan basit şekildeki DataSet i oluşturmak, Dataseti bir kere oluşturduktan sonra aslında bir daha bu buton a gerek kalmıyor. Data Set butonua iki kere tıklatın ve açılacak olan bölüme şu kodları yazın.

 

    Dim dt As DataTable

    Private Sub Button1_Click(ByVal sender As System.Object,_

    ByVal e As System.EventArgs) Handles Button1.Click

        dt = New DataTable("Kullanici")

        Dim dc(2) As DataColumn

        dc(0) = New DataColumn("KullaniciId")

        dc(0).DataType = System.Type.GetType("System.Int16")

        dc(0).AutoIncrement = True

        dc(0).AutoIncrementSeed = 1

        dc(0).AutoIncrementStep = 1

 

        dc(1) = New DataColumn("AdiVeSoyadi")

        dc(1).DataType = System.Type.GetType("System.String")

 

        dc(2) = New DataColumn("Yasi")

        dc(2).DataType = System.Type.GetType("System.Int16")

        dc(2).DefaultValue = 0

 

        dt.Columns.AddRange(dc)

 

        Dim dr1 As DataRow

        dr1 = dt.NewRow

        dr1(1) = "Cenk Caglar"

        dr1(2) = 25

 

        Dim dr2 As DataRow

        dr2 = dt.NewRow

        dr2(1) = "Atakan Kesler"

        dr2(2) = 27

 

        dt.Rows.Add(dr1)

        dt.Rows.Add(dr2)

        DataGrid1.DataSource = dt

    End Sub

 

Bu bölümde yapılan şey sadece bir DataTable oluşturmak, aslında önemli olan DataGrid de görüntülenecek olan Tablonun şema (schema) sını oluşturabilmek ve içine varsayılan olarak iki tane daha data yazıyorum.

Adım adım neler yaptığımı incelersek, ilk önce Butona Clicklenme prosedüründende önce bir DataTable türünden dt değişkenini oluşturuyorum, daha sonra 3 elemanlı bir DataColumn arrayi oluşturuyorum ilk kolon un adını KullaniciAdi yapıyorum, bu kolonun veri türünü belirliyorum ve bu kolonun içindeki rakamların tek tek artması gerektiğini artmaya 1 den başlamaları gerektiğini ve tek tek artmaları gerektiğini anlatıyorum, ikinci kolonun adını AdiVeSoyadi yapıyorum ve veritürünün String olması gerektiğini anlatıyorum, üçüncü kolonun adi ise Yasi, veritürünü yine Int16 şeklinde olmaını istiyorum ve varsayılan değerine 0 diyorum, yani kullanıcı eğer buraya bir değer girmezse bu bölüm boş kalmasın en kötü 0 yazılsın diye. Daha sonra bu kolonları DataTable nin Columns propertysindeki AddRange metodu ile DataTableye ekliyorum.

Sırada bu şemasını oluşturduğum tabloya veri eklemeye geldi, iki tane veri ekliyorum dikkat ederseniz ilk sütüna veri eklemiyorum çünkü orası otomatik artan veri türünde. Son olarakta bu yeni oluşturduğum iki satırı DataTable nin Rows özelliğinin Add metodunu kullanarak DataTableye ekliyorum. En son olarakta bu DataTablenin DataSet te görüntülenmesini sağlıyorum.

 

Bu bölüme kadar sadece DataTable oluşturduk, sırada seriileştirme işlemi var, seriileştirme işlemi bir formatter yardımıyla verilerin başka bir biçime dönüştürülmesini sağlayan yapıdır, aslında seriileştirme işleminde dikkat edilmesi gereken nokta sadece Public olan alanların seriileştirildiğidir, şimdi benim amacım aslında bir Component olan DataSeti seriileştirmek, ilk olarak XML yöntemini kullanacağım, bir DataSet i XML seriileştirmek demek, DataSet ile birlikte içindeki bütün yapıların HDD ye bir dosya olarak yazılması demek, bunu illa bir dosyaya yazmanıza gerek yok isterseniz başka bir şekildede kullanabilirsiniz (örneğin Remoting :) XML seriileştirme çok kolaydır, ilk iş olarak iki tane NameSpace mizi en yukarıya Imports deyimi ile yazın.

Imports System.Xml.Serialization

Imports System.IO

Daha sonra yapacağınız işlem buton iki ye click işlemine gitmeniz. Buraya aşağıdaki kodu yazın.

 

    Private Sub Button2_Click(ByVal sender As System.Object,_

    ByVal e As System.EventArgs) Handles Button2.Click

        Dim ds As DataSet = New DataSet

        ds.Tables.Add(DataGrid1.DataSource)

        Dim xm As XmlSerializer = New XmlSerializer(GetType(DataSet))

        Dim stw As TextWriter = New StreamWriter("db.xml")

        xm.Serialize(stw, ds)

        stw.Close()

    End Sub

 

Burada neler yaptığımızı inceleyelim, ilk iş olarak bir DataSet tanımlıyorum ismi ds, neden DataSet tanımladığımı hemen belirteyim çünkü DataTable XML olarak serialize edilemez, peki neden diye soracak olursanız aşağıdaki resimlere bakmanız yeterli olacaktır.

Gördüğünüz gibi DataTable türetilirken DataSet gibi IXmlSerializable interface si ile implement edilmemiş bundan dolayı DataTable XML olarak serialize edilemez.

Devam edelim, DataSet e yeni bir Table ekledim ve bu tabloda DataGriddeki o andaki veriler, bunu yapmamın nedeni, kullanıcı veritabanına bir veri girince yada bir veri silince tekrar “Diske Yaz” dediğinde o andaki kullanıcının düzenlediği bilgileri alabilmek, sonrasında xm isminde bir XmlSerializer tanımlıyorum, bütün seriileştirme işini yapacak olan Class bu, bu Class ın kurucu metodu ise hangi türden nesneyi seriileştireceğimi istiyor, bende ona tür olarak DataSetin türü olduğunu anlatıyorum.

Sonrasında verileri HDD ye yazmak için bir TextWriter tanılıyorum ve bunun instancesini oluştururken StreamWriter dan oluşturuyorum, oluşacak dosyanın adınada “db.xml” diyorum, Seriileştirme işinin en önemli noktası burası, XmlSerializer türünden oluşturduğum bu classın içindeki Serialize metodunu kullanarak bir TextWriter vasıtasıyla ds isimli DataSet nesnemi serialize ediyorum. Son olarakta demin açtığım TextWriter nesnesini close ediyorumki bu dosyayı daha sonra kullanabileyim.

 

Kulllanıcının DataGrid e girdiği nesneleri Hard Diskte bir dosya oluşturarak yazan yöntemi oluşturduk, şimdi sırada bu dosyayı geri okuyup, DataGrid de tekrar göstermeye geldi, bunun için üçüncü butonu kullanacağız, üçüncü buttona iki kere tıklayın ve aşağıdaki kodları yazın.

 

    Private Sub Button3_Click(ByVal sender As System.Object,_

    ByVal e As System.EventArgs) Handles Button3.Click

        Try

            Dim xm As XmlSerializer = New XmlSerializer(GetType(DataSet))

            Dim str As FileStream = New FileStream("db.xml", FileMode.Open)

            Dim rd As Xml.XmlTextReader = New Xml.XmlTextReader(str)

            DataGrid1.DataSource = CType(xm.Deserialize(rd), DataSet).Tables(0)

            str.Close()

        Catch ex As Exception

            MessageBox.Show("Hata olustu, Hata MSG si : " & ex.Message)

        End Try

    End Sub

 

Bu bölümde yine ilk olarak XmlSerializer türünde bir değişken oluşturduk ve deminki mantıkla bu nesnenin türünü DataSet olarak verdik, sonrasında bir FileStream oluşturdum amacım önceden seriileştirdiğim bu dosyayı bulup, deserialize etmek, FileStream ile dosyayı open modda açtığıma dikkat edin. Sonrasında bir XmlTextReader oluşturup bu deminki FileStram ı ona parametre olarak veriyorum, artık herşey hazır sadece deserialize etme işi kaldı, XmlSerializer classının Deserialize metoduna XmlTextReader imi veriyorum, ama burada şuna dikkat edin, Deserialize Metodu geriye Object döndürüyor, işlerin daha hızlı yürümesi adına ben explicit olarak conversation yapıyorum, CType ile gelen nesneyi DataSet türüne çeviriyorum. Ve bu DataSet nesnesinin içindeki Tablolardan ilkini göstereceğimi anlatıyorum.

Son olarak siz denemelerinizi yaparken DataGrid in gerçekten dolduğuna emin olun diye DataGrid  i temizleyen butonunda yaptığı işi yazalım.

    Private Sub Button4_Click(ByVal sender As System.Object,_

    ByVal e As System.EventArgs) Handles Button4.Click

        DataGrid1.DataSource = Nothing

    End Sub

Böylece Testlerinizi yapabilirsiniz.

Ben Sadece XML ile seriileştirmesini gösterdim, ancak siz isterseniz buradaki seriileştirme işlemini Binary de yapabilirsiniz.

 

Bu yazımızda XML serialization kullanarak çok basit bir tablo için bir veritabanı mantığı kullanmak yerine dosyalarımız XML de tutarak işlemler yaptık.

INFOPATH (2/2)

30/11/2006

INFOPATH (2/2)

Form ve Validation Olayları

InfoPath ile jscript veya vbscript (ikisi karma kullanılamıyor) kullanarak, istediğimiz işlemleri gerçekleştirebiliriz. Kullanacağımız bu kod parçalarını, handi anda ateşlenmesini istiyorsak, o olayın arkasına yazmalıyız.

InfoPath olayları form olayları ve data validation olayları olmak üzere ikiye ayrılır. Bunlar aşağıdaki tablolarda, açıklamalarıyla birlikte belirtilmiştir.

Form olayları:

Olay

Tanım

OnAfterImport

Formlar birleştirildiğinde gerçekleşir.

OnClick

Komut düğmesi tıklandığında gerçekleşir.

OnLoad

Formun başlangıç durumunda gerçekleşir. Form ilk görünmeden önce ateşlenir.

OnSubmitRequest

Forma veri eklendiğinde meydana gelir.

OnSwitchView

Görünüm açıldığında meydana gelir.

OnVersionUpgrade

Formun versiyon numarası ve ilişkin form şablonunun versiyon numarası eşleşmediği zaman ateşlenir.

1.Tablo: Form Olayları.

Data Validation Olayları:

Olay

Tanım

OnBeforeChange

Formun altındaki XMLde değişiklik meydana geldiğinde (değişiklik kabul edilmeden hemen önce) ateşlenir.

OnValidate

Değişiklik meydana geldikten sonra ateşlenir.

OnAfterChange

OnValidate olayı meydana geldikten önce ateşlenir.

2.Tablo: Data Validation Olayları.

InfoPath Form Şablonları

InfoPath dosyası oluşturulurken ve dosyalar üzerinde düzeltme işlemleri yapılırken kullanılan dosyaların uzantıları ve özellikleri aşağıdaki gibidir.

Uzantı Özellik
.xsn

Bütün InfoPath dosyalarını içeren form şablonu.

.xsf

InfoPath manifest dosyası, formun birçok karakterinin tanımı olan XML dosyasıdır

.xsl

XSLT dosyaları, InfoPathte, form içerisinde farklı görünümler oluşturmak için kullanılır.

.xsd

Formun altındaki XML yapısını kısıtlamak için kullanılan, bir veya birden fazla W3C XML Şema dosyalasıdır.

.xml

Form içerisinde XML dosyası görüntülemek için varsayılan verileri içerir.

.js or .vbs Form içinde belli bir iş için tanımlanan JScript veya VBScript dosyalarıdır.
.jpg etc. Form içinde kullanılan logo gibi resimlerdir.
dll and/or .exe COM komponentleridir.

3.Tablo: Dosya uzantıları ve özellikleri.

Kod Yazımı ile Örnek Uygulama :

Örneğimizde, girilen özellikleri mesaj kutusuyla kullanıcıya göstereceğiz. Çok basit bir örnek gibi gelebilir. Ancak sadece kod kullanımını örneklemeyi amaçlayan bir örnek olmasıyla, bence önemli. Basitliği arkasına yazacağımız jscript veya vbscript kodundan kaynaklanacaktır. Kodu, kendinizin geliştirdiği ve ihtiyacınız olan kod olarak yazarsanız etkili olduğunu göreceksiniz.

Üzerinde iki tane metin kutusu ve bir tane komut düğmesi olan bir form oluşturarak, kullanıcının giriş yaptığı adını ve soyadını mesaj kutusu olarak göstereceğiz.

1.Adım: InfoPathi açalım.

2.Adım: Fileden Design a Form menüsüne tıklayalım.

3.Adım: New Blank Form seçeneği ile boş bir form oluşturalım.

4.Adım: Forma Control sekmesinden iki tane metin kutusu ve bir tane komut düğmesi ekleyelim.


1.Şekil: Control sekmesi.

5.Adım: Eklediğimiz ilk metin kutusu üzerinde sağ tıklayıp Text Box Propertiesi tıklayalım. Metin kutusunun özelliklerini ayarlamamız için bir ileti gelecektir.

6.Adım: Özellikler kısmında, Field Name: CalisanAdi, DataType: Text(String) olarak ayarlayalım.


2.Şekil: Metin kutusunun özelliklerinin ayarlanması.

Data Validation: Özellikler penceresindeki, Data Validation komut düğmesi sayesinde, InfoPath içinde hakimiyetli bir şekilde ayarlamalar yapabiliyoruz.


3.Şekil: Data Validation komut düğmesi arkası.

Buradaki olaylardan, istediğimizi seçerek, bu olayın arkasına kod yazabiliyoruz. Varsayılan değer olarak üç tane olay (events) vardır.

1.OnBeforeChange
2.OnValidate
3.OnAfterChange

Buradan Add komut düğmesi sayesinde, kendi istediğimiz ayarlarda olan bir olay oluşturabiliriz.


4.Şekil: Olay ekleme.

Bu sayede olay kurallarımızı belirleyebiliriz.

7.Adım: Diğer metin kutusunun da aynı şekilde özelliklerine girelim. Özellikleri Field Name: CalisanSoyadi, DataType: Text(String) olarak belirleyelim.

8.Adım: Forma yerleştirdiğimiz komut düğmesinin de özelliklerini ayarlamak için, komut düğmesi üzerinde sağ tıklayarak Button Propertiesi seçiyoruz.


5.Şekil: Komut düğmesinin özellikleri.

Gelen özellikler penceresinde, Label: Ekle, ScriptId : CalisanEkle olarak komut düğmesinin özelliklerini belirliyoruz.

9.Adım: Komut düğmesinin özelliklerini ayarladığımız pencerede Microsoft Script Editorü tıklayarak, istediğimiz kodu yazıyoruz. Ben yukarıda da belirttiğim gibi, sadece giriş yapılan çalışan adını ve soyadını ekrana yazdırtan bir kod ekledim.

function CalisanEkle::OnClick(eventObj)
{

XDocument.UI.Alert ("Çalisan Ismi : " +
eventObj.Source.selectSingleNode("//my:CalisanAdi").text);

XDocument.UI.Alert ("Çalisan Soyadi : " +
eventObj.Source.selectSingleNode("//my:CalisanSoyadi").text);

}

10.Adım: Preview Form komut düğmesi ile formumuzu önizleme yapalım.

Önizleme sırasında, ad ve soyad girişi yapılıp, Ekle diyelim. Ekle dediğimizde, yazmış olduğumuz kod devreye girecek, ve uyarı olarak, çalışanın adını soyadını verecektir.


6.Şekil: InfoPathin önizlenme sonucu.

Bu şekilde InfoPath hakkında temel bilgi edinmiş olduk. Geliştirmesi size kalmış. Kolaygelsin.


INFOPATH ( 1 /2)

30/11/2006

INFOPATH ( 1 /2)
INFOPATH VE SQL SERVER 2000

InfoPath diğer bir ifade ile; XML Form Editörü. InfoPath uygulamaları, dışarıdan XML verisi alıp, kullanıcıyı XMLle uğraştırmayarak, bilgiyi görsel açıdan daha doyurucu bir yapıda sunar.

InfoPath Neden Gerekli?

Kodlar arasında dolaşırken bazen sağa bakıyoruz XML, sola bakıyoruz XML. Peki XML bilmeyen, veya XMLin yapısıyla uğraşmak istemeyen yazılımcılar bu XMLle nasıl baş edecekler?

Kimi zaman iş sektöründe eldeki bilgileri XML formatında kaydetmek ve göndermek gerekebilir. Ancak herhangi bi çalışan XMLden hiç anlamıyorsa ne yapmalı?

XMLin ( kimilerine göre ) karmaşık kodlarıyla boğuşmak istemeyenlere InfoPath çözüm oluyor. (Yine de vbscript, jscriptten biraz anlıyor olmak gerekiyor.)

XML yapısı içerisindeki bilgileri, yapılan işleme uygun formatta XML çıktısı üretir. Bu işlemleri, kullanıcının XMLden anlamasına gerek kalmadan ,onun anlayacağı türden yapar.Bu özellikleriyle InfoPath iş sahasına bir çözüm olarak geliyor.

İlişkisel veritabanlarına (SQL Server veya Access gibi), XML web servislerine, BizTalk 2004 sunucusuna çıktı üretilebiliyor.

Kullanım Yolları

InfoPath birçok yolla kullanılabilir. Herbir yaklaşımdaki sonuç, XML dökümanı içinden üretilir.

  • W3C XML Şeması Kullanma: W3C XML şeması veri kaynağı olarak kullanılır. Bu şema, InfoPathte üretilecek olan formun XML yapısını tanımlar.
  • XML dökümanının kullanılması: InfoPath formunun şablonunu belirlemede XML dökümanının kaynak kullanılmasıdır. InfoPath elindeki XML dökümanından otomatik olarak W3C XML şeması üretir.
  • XML Web Servisleri ile Etkileşimli: InfoPath, XML Web servislerine bağlanabiliyor. Web servisinden bilgi almak için, veya web servisine bilgi eklemek için InfoPath formu kullanılabilir.
  • Microsoft Access ile Etkileşimli: Microsoft Access veritabanına ile çok basit bir şekilde, sihirbazla bağlanabiliyor. Bu sayede, veri kaynağından, istenilen tablodan, istenilen alanlar seçilerek, bilgiler InfoPathte veri şeması haline getirilebiliyor.
  • SQL Server 2000 ile Etkileşimli: Access veritabanında olduğu gibi, SQL Server 2000e kolaylıkla bağlanabiliyor. İstenilen verilere bir sihirbazla erişilerek, bu verilerle InfoPath veri şeması elde ediliyor.
  • InfoPathin Arayüzü

    InfoPathin arayüzü diğer ofis programlarına benzer şekildedir. InfoPath formu oluşturmak için iki temel işlem yapılabilir:

    1.Formu Doldurmak(Fill Out a Form): Kullanıcı, InfoPathin içindeki form şablonlarından istediğini seçerek, gerekli alanlardaki bilgileri dışarıdan doldururuz.
    2.Form Şablonları tasarlamak(Design a Form): InfoPath formları kendi oluşturduğumuz form şeklinde tasarlanır.

    Not: Her iki işlem içinde, istemci makinaya InfoPath yüklenmiş olması gerekiyor.

    XML Teknolojileri

    Aşağıdaki listelenen XML teknolojilerinden, InfoPath formları bazılarının tamamını desteklerken, bazıları yalnızca belirli özellikleri desteklenerek, kullanılır.

  • XML 1.0
  • XML 1.0in içindeki isim uzayında.
  • XSLT 1.0
  • XPath 1.0
  • W3C XML Schema 1.0 (Yapıları ve Veritürleri)
  • DOM Level 1
  • XML Digital Signatures
  • SOAP 1.1
  • WSDL 1.1

    SQL Server 2000 Veritabanına Bağlı InfoPath Form Tasarım Örneği:

    Adım adım ilerleyerek, SQL Server 2000deki Northwind veritabanındaki verilere bağlanarak verileri elde edelim.

    1.Adım: InfoPathi açalım.


    1.Şekil: InfoPathi başlatma.

    2.Adım: File menüsünden Design a Form seçeneğini tıklayarak, yeni bir form tasarlama isteğimizi belirtelim.


    2.Şekil: Form şablonu tasarma modu.

    3.Adım: Form tasarlama seçeneklerinden, New a Data Source seçeneği ile belirteceğimiz veri kaynağı aracılığı ile form tasarlayacağız.


    3.Şekil: Veri kaynağı aracılığı ile form tasarlamak.

    Bu seçenek ile bize yol gösterecek bir sihirbaz başlar.

    4.Adım: Veri kaynağı olarak üç seçenek gelir karşımıza:

    1. XML şeması veya XML dosyası
    2. Veritabanı (SQL Server 2000 veya Access)
    3. Web Servisleri


    4.Şekil: Veri Kaynakları.

    Örneğimizi SQL Server ile yapacağımız için, Databases seçeneğini seçerek ilerliyoruz.

    5.Adım: Sihirbazın bir sonraki adımında Select Database seçeneği ile hangi veritabanına bağlanacağımızı belirtiyoruz.

    6.Adım: Veritabanına ulaşmak için kaynak göstermek için New Source komut düğmesine tıklıyoruz.

    7.Adım: Sihirbazın bu adımında, bağlantı kuruyoruz. Bağlantı kurabileceğimiz sunucular:

    1. Microsoft SQL Server
    2. Microsoft SQL Server OLAP Services
    3. ODBC/DSN
    4. Oracle
    5. Other/advanced


    5.Şekil: İstediğimiz veritabanı sunucusuna bağlanma.

    Biz Microsoft SQL Serverı seçerek ilerleyeceğiz.

    8.Adım: Bu adımda, bağlanacağımız sunucuyu ve güvenlik için bağlanılacak kimlik türünü (gerekirse şifreyi) belirtiriz.


    6.Şekil: Sunucu ve kimlik belirtme.

    Kendi bilgisayarımdaki sunucuya bağlanmak istediğimden, sunucu ismine localhost yazıyorum. Siz ağdaki dilediğiniz sunucuya bağlanabilirsiniz. Kullanıcı olarak da, Windows Authentication modunu seçiyorum. Siz kullanıcı ismi ve şifresi girerek, güvenliği artırabilirsiniz.

    9.Adım: Veritabanı seçme adımı.


    7.Şekil: Northwind veritabanının seçilmesi.

    Veritabanı seçme adımında, Northwind veritabanını seçiyoruz.

    10.Adım: İlerlediğimiz adım, ayarlarımızı üzerinde düzeltme yapma imkanı sağlar. Bu adımda herhangi bir değişiklik yapmıyoruz.

    11.Adım: Finish komut düğmesini tıklayarak sihirbazı sonlandırıyoruz.

    Sihirbaz sonlandığında iki görünümle karşılaşırız:

    1.Query view : queryFields seçeneği ile birlikte, herbir veri kaynağı alanı için bir metin kutusu kontrolü içerir. Query view, veri kaynaklarını sorguya çekmek için genelde New Record ve Run Query komut düğmeleri içerir. Bu komut düğmeleri seçimliktir. İstersek silebiliriz.
    2.Data Entry View : Varsayılan değer olarak boştur. Herhangi bir veriyi burada gösterebilmek için, kendimiz kontrol eklememiz gerekir.

    Örneğimizde, Product ID girilen bir ürünün, detay ve kategorisini bulduracağız. Bunun için New Record komut düğmesine ihtiyacımız yok. New Record komut düğmesini silelim.

    DataEntry bölümüne geçelim.


    8.Şekil: DataEntry görünümüne geçilmesi.

    Data Entry görünümünde Data Sourceyi tıklayalım. Burada iki tane alt düğümle karşılacağız.


    9.Şekil: Data Sourceta dataFields alt düğümü.

    dataFields alt düğümünden Product IDyi tutup, sürüklemek suretiyle açık olan forma (Data Entry formuna) bırakalım. Daha sonradan, öğrenmek istediğimiz ProductName alanını aynı çerçeve içine bırakalım. Görünüm aşağıdaki şekildeki gibi olacaktır.


    10.Şekil: Data Entry görünümü.

    Görünümlerden Query görünüme geçerek, araç kutusundan Preview Form diyerek, formumuzda önizleme gerçekleştirelim.

    Gelen ön izlemede, ProductIdye mesela 3 değeri girerek, Run Query komut düğmesine tıklayalım. Bu sayede veritabanındaki ProductIdsi 3 olan kayıdın ProductName alanını elde etmiş oluruz..


    11.Şekil: Formu ön izleme.

    Bu sayede SQL Server 2000de Northwind veritabanındaki bilgilere erişmiş olduk. Sizinde farkedeceğiniz gibi, InfoPath veri kaynağına erişme yöntemini tamamen değiştiriyor. Burada yaptığımız örnekteki gibi, herhangi bir Web servisindeki verilere hiç XML kodlarıyla uğraşmadan, erişip istediğimiz değişikliği yapabilirsiniz.

    Makalenin ikinci (INFOPATH -2 ) bölümünde sihirbaz kullanmadan InfoPath form örneği yapacağız.


  • ASP.NET 2.0 KONTROLLERİ

    30/11/2006

    ASP.NET 2.0 KONTROLLERİ  (NAVIGATION, LOGIN & WEBPARTS KONTROLLERİ)


    Bu makalede uzun zamandır eksikliği hissedilen bazı navigation kontrolerini, kullanıcı kontrolüne yönelik işleri oldukça kolaylaştıran login kontrollerini ve kişiselleştirmeye yönelik olan WebParts kontrollerini inceliyoruz.


    Bölüm 3: Navigation Kontrolleri

     
    ImageMap Kontrolü

    SiteMapPath kontrolü kullanıcının o andaki bulunduğu yeri navigasyonel hiyerarşi içinde gösterir. Her seviye bir bağlantı içerir ve böylece kullanıcı istediği bölüme kolayca geçebilir. SiteMapPath kontrolünün sayfadaki görünümü aşağıdakine benzer olacaktır.

    Bilgisayar > Yazılım > Yardımcı Programlar > Virüs Tarama


    BulletedList Kontrolü

    ASP.NET uzun süredir bir Menu kontrolüne ihtiyaç duymaktaydı ve artık bir tane var! Bu hiyerarşik menü kontrolü sayfada yatay veya dikey olarak konumlandırılabiliyor. Bu kontrolü bir veri kaynağına bağlayarak yahut doğrudan elemanlar ekleyerek kullanabilirsiniz.

    Aşağıda Menu kontrolü kullanılarak hazırlanmış bir menü görüyorsunuz:


    HiddenField Kontrolü

    İnceleyeceğimiz son navigation kontrolü olan Treeview kontrolü çoğu modern programlama dillerinde klasik olarak bulunan bir kontrol olmasına karşın ASP.NET 1.x içerinde böyle bir kontrole rastlayamamıştık. Bu eksiklik ASP.NET 2.0 ile birlikte giderildi. Bu kontrol kullanarak ağaç görünümünde düğümler oluşturmak mümkün kılınıyor.

    ImageSet özelliği ile düğümlerde kullanılacak resimler belirlenebilir. Bir düğüme tıklandığında SelectedNodeChanged olayı devreye giriyor, bunun karşılığında ise ya bir postback olayı meydana getireceksiniz yada bir URL'ye yönlendireceksiniz. Ayrıca her düğüm bir checkBox kontrolü de içerebilir.


    Bölüm 4: Login Kontrolleri
     
    ImageMap Kontrolü

    Login kontrolü, belki de daha önce onlarca kez hazırladığınız gibi bir kullanıcı adı ve şifre ekranı sağlar. Ancak, artık bir daha bunları oluşturma ihtiyacımız olmayacak gibi görünüyor.

    Aşağıda bu kontrol ile oluşturulmuş bir Log In ekranı görüyorsunuz:


    ImageMap Kontrolü

    LoginView kontrolü kullanıcıların oturum açıp açmamalarına bağlı olarak iki farklı içerik sunar. Eğer kullanıcı oturum açmışsa LoginView kontrolü içerisinde oturum açmış olan kullanıcıların kullanabileceği kontroller mevcuttur. Aksi durumda, henüz oturum açmamış olan kullanıcılara sunmak istediğiniz kontroller görüntülenir.


    ImageMap Kontrolü

    Çoğu sistem, kullanıcılarına şifrelerini unutmaları durumunda; şifrfelerini yeniden hatırlatmak için bir yol sunar. PasswordRecovery kontrolü de tamamıyla bu işe yarar. Bu esnek kontrol çok çeşitli teknikleri (özel soru ve cevabı, e-mail ile şifre yollama ya da yeniden şifre oluşturma gibi) destekler.


    ImageMap Kontrolü

    LoginStatus kontrolü iki farklı şekilde görünür. Eğer kullanıcı oturum açmamışsa, oturum açma sayfasına bir bağlantı sunar. Eğer kullanıcı oturum açmışsa oturumu kapatabilmesi için bir bağlantı sunar.


    ImageMap Kontrolü

    LoginName kontrolü kullanıcılar oturum açtıklarında kullanıcı ismini görüntüler. Bir kullanıcı oturum açmamış ise bu kontrol, çalışma zamanında sayfada görüntülenmez.


    ImageMap Kontrolü

    CreateUserWizard kontrolü sisteme yeni bir kullanıcı kaydedebilmek için genellikle talep edilen bilgileri içeren bir yapı sunar. İstenilen extra alanlar yapıya dahil edilebilir. Ayrıca kullanıcı kayıt işlemini birden fazla adıma bölmenize de imkan tanır.


    ImageMap Kontrolü

    ChangePassword kontrolü üç TextBox kontrolü ile gelmektedir. Bu textbox kontrollerinin birisi eski şifrenin girilmesi için diğer ikisi ise yeni şifrenin girilmesi amacıyla kullanılacaktır. Bu kısa anlatımdan da anlaşılabileceği gibi bu kotrol kullanıcının şifresini değiştirebilmesi için bir yapı sunar.


    Bölüm 5: Webparts Kontrolleri
     
    ImageMap Kontrolü

    WebPartManager kontrolünün amacı sayfa üzerinde bulunan tüm WebPart kontrollerini yönetmek ve düzenlemektir. Bu nedenle çalışma zamanında sayfa üzerinde görüntülenmez.


    ImageMap Kontrolü

    WebPartZone kontrolünün tüm örnekleri bir veya daha fazla WebPart kontrolünün üzerinde barındırabilir. Her bir WebPart kontrolü minimize edilebilir, taşınabilir, silinebilir. Ayrıca her kullanıcı kendi zevkine göre hoşlandığı şekilde bu kontrolü özelleştirebilir ve bir dahaki sayfa ziyaretinde bunların hatırlanması sağlanabilir.


    ImageMap Kontrolü
      ImageMap Kontrolü
    ImageMap Kontrolü
    ImageMap Kontrolü

    CatalogZone kontrolü DeclarativeCatalogPart, PageCatalogPart ve ImportCatalogPart gibi CatalogPart kontrolllerini bünyesinde barındırır. Tüm bu kontroller kullanıcının seçip onların sayfalarına ekleyebileceği WebPart katalogları oluşturmak için kullanılır.


    ImageMap Kontrolü
      ImageMap Kontrolü
    ImageMap Kontrolü
    ImageMap Kontrolü
    ImageMap Kontrolü

    EditorPart kontrolleri (AppearanceEditorPart, BehaviorEditorPart, LayoutEditorPart ve PropertyGridEditorPart gibi) sadece EditorZone kontrolü üzerinde yer alabilirler. Bu kontroller kullanıcının sayfayı düzenlemesi ve özelleştirebilmesi için kullanılır.


    ImageMap Kontrolü

    ConnectionZone kontrolü ConnectionPart kontrollerini içerir. Bu kontrol, sayfada bulunan WebPart kontrolleri arasında bağlantı kurmaya yarar. Birinden diğreine bilgi aktarımını sağlar.



    Böylece ASP.NET 2.0 ile birlikte gelen yeni kontroller hakkında temel bir bilgi kazandığınız kanaatindeyim. Herkese faydalı olması dileğiyle...

    « Önceki :: Sonraki »

    Blogcu ile yapıldı