26 Kas 2006 ASP.NET 2.0’DA ADROTATOR NESNESİ Kategori: ASP.NET Etiketler: ASP.NET 3 Yorum Biz bu makalemizde veri kaynağı olarak dataset’i ele kullanacağız. Ben Adrotator nesnesini banner olarak değil de ürün olarak ele alıp, Sayfa her açılışında farklı bir ürün gösterip, ürün üzerine link koyacağım.Ilk olark Projemizde Kullanacagımız Access database ismi Urunler.mdb dir. Bu tablo içerisinde tblUrunler isimli bir tablo bulunmaktadır. Bu tablo ürün bilgilerini içerir. Bu tablo içerisindeki alan isimleri; Yukarıdaki gibidir. Veritabanını olusturduktan sonra Projemize bir adet AdRotator nesnesi eklenir. Nesnemizi ekledikten sonra banneri görüntüleyecegimiz bir function yazalım. Farklı yöntemler de olabilir ama ben anlaması kolay olması ve yazması kolay oldugu için function içinde yapmayı tercih ettim. Ilk olarak baglantı olusturabilmemiz için gerekli kodları yazalım. private System.Data.OleDb.OleDbConnection Cnn; private System.Data.OleDb.OleDbDataAdapter Da; private System.Data.DataSet Ds; Simdi ürünleri gösterecek bir fonksiyon yazabiliriz. private System.Data.Dataset BannerGetir(string SQLString) { Cnn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("db/urunler.mdb")); if (Cnn.State == ConnectionState.Closed) { Cnn.Open(); } Da = new System.Data.OleDb.OleDbDataAdapter(SQLString, Cnn); Ds = new DataSet(); Da.Fill(Ds, "table"); return Ds.Tables(0); } Geriye sadece bu fonksiyonu formdan çagırmak ve AdRotator için ImageUrl ve Navigate url özelligini ayarlamak. Bunun içinde Form yüklenirken (Form_Load) asagıdaki kodları yazarsak AdRotator nesnesi basarılı bir sekilde çalısır. protected void Page_Load(object sender, EventArgs e) { AdRotator1.DataSource = BannerGetir("SELECT * FROM tblUrunler"); string path = "images"; AdRotator1.ImageUrlField = "fldUrunResmi"; AdRotator1.DataBind(); } Evet, çalıstırdıktan sonra sayfa görüntümüz asagıdaki gibidir. Sayfamızı Refresh Edersek Farklı bir ürün geldigini göreceksiniz.. Bir sonraki makalede görüsmek üzere, Herkese basarılar dilerim.
26 Kas 2006 ASP.NET 2.0 ile Mail Gönderme Kategori: ASP.NET Etiketler: ASP.NETASP.NET 2.0 3 Yorum ASP.NET’ den önce mail göndermek için bir mail componentine(bileşenine) ihtiyaç duyuyorduk. Ama .net ile gelen yenilikler sayesinde herhangi bir componente(bileşene) ihtiyaç duymadan Sadece Mail Sınıfını Projemizde dahil ederek mail gönderme işlemimizi gerçekleştirebiliriz.System.Web.Mail System.Web System System.Web.Mail Altında 6 adet sınıf bulunmaktadır, bu sınıflar CdoNtsHelper CdoSysHelper LateBoundAccessHelper MailAttachment MailMessage SmtpMail Evet sınıfımızı tanıdıktan sonra mail atma isleminin nasıl yaptıgına geçelim. Bunun için Visual Studio .net'i açalım ve yeni bir web projesi olusturalım. Projemize 5 adet label, 4 adet textbox, 1 adet de buton ekliyoruz. Daha Sonra formumuzu kendimize göre dizayn edelim. Benim yapmıs oldugum Form Tasarımı asagıdaki gibidir. Formumuz olusturduktan sonra artık mailimizi gönderme islemimize geçebiliriz. Bunun için ilk yapmamız gereken System.Web.Mail Sınıfını projemize eklememiz gerekir. using System.Web.Mail; Evet projemize Mail sınıfımızı ekledigimize göre artık mail göndermek için gerekli voidimizide yazabiliriz. Not= Mail gönderme islemini bir void seklinde olusturarak farklı sayfalarda kullanabiliriz. System.Web.Message message ; public void SendMesaj(string MessageFrom, string MessageTo, string MessageSubject, string MessageBody) { message.From = MessageFrom; message.To = MessageTo; message.Subject = MessageSubject; message.Body = MessageBody; try { lblUyari.Text = "Mail Gitti"; SmtpMail.Send(message); } catch (Exception ex) { lblUyari.Text = "Mail Gönderirken Bi Problem Olu?tu:" + ex.Message; } } Maili göndermek için gerekli voidi olusturduktan sonra butona ait event'a gidip sadece bu voidi oradan çagırmak kalacak. protected void btnGonder_Click(object sender, EventArgs e) { SendMesaj(txtGonderen.Text, txtAlici.Text, txtKonu.Text, txtMesaj.Text); } Evet kodumuzu tamamladıktan sonra ilk mailimizi gönderelim, web projemizi çalıstıralım bilgileri girelim ve mailimizi gönderelim. Gönder butotuna tıklıyoruz ve sonuç asagıda. Evet simdi mail kutumuza gidelim ve mailin gelip gelmedigini kontrol edelim Görüldügü gibi mailimiz basarı ile gönderilmistir. Evet arkadaslar bir sonraki makalemizde görüsmek üzere. Umarım Faydalı bir makale olmustur. Herkese Basarılar diliyorum.
26 Kas 2006 DATALİST İLE NUMERİC BAZLI SAYFALAMA Kategori: ASP.NET Etiketler: ASP.NETASP.NET 2.0ASP.NET 4.0 7 Yorum Merhaba arkadaşlar bu makalemde Datalist nesnesinde Numeric(1.2.3...) bazlı sayfalamanın nasıl yapılacağına bakacağız. Datalist ve Repeater nesnelerin de görüntülenecek kayıt sayısının çok fazla oldugu durumlar da kayıtlarımızı sayfalama ihtiyacı duyarız. Bu bize kayıtların daha hızlı görüntülenmesini saglar ve aynı zamanda kullanıcıya gösterilmek istenilen bilgi daha derli toplu gösterilir. Ben bu makalede sayfaları Numeric olarak listeletecegim ve gitmek istedigimiz sayfaya tıkladıgımızda o sayfaya gidebilecegiz. Örnek vermek gerekirse google' da "sem göksu" diye arama yaptıgımızda sayfaların Numeric olarak listelendigini görecegiz. Ön bilgiyi verdikten sonra makalemize baslayabiliriz. Bunun için projemize ilk olarak bir adet Datalist nesnesi ekleyelim. Datalist nesnesinde ben Northwind database'deki Customers tablosunu kullanacagım. Datalist nesnesi içerisinde de CustomerID, CompanyName ve ContactName Fieldlerini görüntüleyecegim. Benim düzenlemis oldugum Datalist Nesnesinin son hali asagıdaki gibidir; DatalistNesnesinin HTML Kodları; <asp:DataList ID="DataList1" runat="server" BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" CellPadding="3" Font-Names="Verdana" Font-Size="X-Small" GridLines="Horizontal" RepeatLayout="Flow"> <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" /> <SelectedItemStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" /> <ItemTemplate> <table border="0" cellpadding="0" cellspacing="0" style="width: 392px"> <tr> <td style="width: 129px; height: 19px"> <asp:Label ID="Label3" runat="server" Font-Bold="True" Font-Names="Tahoma" Font-Size="Small" Text="Customer ID"></asp:Label></td> <td style="width: 17px; height: 19px"> :</td> <td style="width: 300px; height: 19px"> <asp:Label ID="lblCustomerID" Text=’<%# DataBinder.Eval(Container.DataItem,"CustomerID") %>’ runat="server" Font-Names="Tahoma" Font-Size="Small"></asp:Label></td> </tr> <tr> <td style="width: 129px; height: 19px"> <asp:Label ID="Label2" runat="server" Font-Bold="True" Font-Names="Tahoma" Font-Size="Small" Text="Company Name"></asp:Label></td> <td style="width: 17px; height: 19px"> .</td> <td style="width: 300px; height: 19px"> <asp:Label ID="lblCompanyName" runat="server" Text=’<%# DataBinder.Eval(Container.DataItem,"CompanyName") %>’ Font-Names="Tahoma" Font-Size="Small"></asp:Label></td> </tr> <tr> <td style="width: 129px; height: 19px"> <asp:Label ID="Label1" runat="server" Font-Bold="True" Font-Names="Tahoma" Font-Size="Small" Text="Contact Name"></asp:Label></td> <td style="width: 17px; height: 19px"> :</td> <td style="width: 300px; height: 19px"> <asp:Label ID="lblContactName" runat="server" Font-Names="Tahoma" Text=’<%# DataBinder.Eval(Container.DataItem,"ContactName") %>’ Font-Size="Small"></asp:Label></td> </tr> <tr> <td style="width: 129px; height: 19px"> </td> <td style="width: 17px; height: 19px"> </td> <td align="right" style="width: 300px; height: 19px"> </tr> </table> </ItemTemplate> <AlternatingItemStyle BackColor="#F7F7F7" /> <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" /> <ItemStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" /> <EditItemTemplate> </EditItemTemplate> </asp:DataList> Simdi datalistimizi görüntüleyecegimiz bir void yazalım. protected string ConnectionDegiskeni() { //Connection String return "Data Source=.; Initial Catalog=Northwind; uid=sa; pwd="; } protected void DatayiDoldur() { Baslangic = Convert.ToInt32(txtStart.Text); BaslangicKaydi = (Baslangic * SayfadakiKayitSayisi) - SayfadakiKayitSayisi; SqlConnection Cnn = new SqlConnection(ConnectionDegiskeni()); Cnn.Open(); SqlDataAdapter Da =new SqlDataAdapter("Select * From Customers", Cnn); DataSet Ds = new DataSet(); Da.Fill(Ds, BaslangicKaydi, SayfadakiKayitSayisi, "Customers"); DataList1.DataSource = Ds.Tables[0].DefaultView; DataList1.DataBind(); Cnn.Close(); } Daha Sonra bu void'i Formun load'da çagıralım. protected void Page_Load(object sender, EventArgs e) { DatayiDoldur(); } Evet projemizi çalıstırdıgımızda tüm verilerin ekrana geldigini ve verilerin yavas yüklendigini göreceksiniz. Evet kayıtlarımızı listeledikten sonra artık sayfalam islemine geçebiliriz. Bunun için datalistimizin altına bir adet label alalım ve text özelligini bosaltalım. Bu label üzerinde numeric degerleri gösterecegiz. (1 | 2 | 3 | 4 .. gibi) Projemize bir adet textbox ekleyelim adını txtStart yapalım ve visible özelligini false yapalım. Bu textbox içerisinde sayfa sayısını saklayacagız. Code kısmına geçip asagıdaki degiskenleri tanımlayalım. private int Baslangic=1; // Görüntülenecek olan Sayfanın numarası private int SayfadakiKayitSayisi = 4;//Sayfada görüntülenecek olan kayıt sayısı private int BaslangicKaydi;//Databaseden çekilen datada baslanacak olan kaydın sayısı private int ToplamSayfaSayisi;//Toplam sayfa sayısı private int ToplamKayitSayisi()// Toplam kayıt sayısını geri döndüren bir fonksiyon yazarız. { SqlConnection Cnn = new SqlConnection(ConnectionDegiskeni()); Cnn.Open(); SqlCommand myComm =new SqlCommand("Select Count(*) From Customers", Cnn); int GeciciKayitSayisi = Convert.ToInt32(myComm.ExecuteScalar()); Cnn.Close(); return iTempRecordCount; } protected void Page_Load(object sender, EventArgs e) { //Toplam Sayfa Sayısı Alınıyor if (ToplamKayitSayisi() % SayfadakiKayitSayisi == 0) //toplam Kayıt Sayısının Sayfadaki Kayıt sayısına göre modunu alırız. Eger tam sonuç verirse Toplam kayıt sayısına, Sayfadaki Kayıt Sayısını bölmesi yeterli olur ancak tam sonuç vermezse sayfa sayısı 1 eksik çıkar bunu önlemek için ToplamSayfaSayisi'nı 1 arttırırız. { ToplamSayfaSayisi = ToplamKayitSayisi() / SayfadakiKayitSayisi; } { ToplamSayfaSayisi = ToplamKayitSayisi() / SayfadakiKayitSayisi + 1; } DatayiDoldur(); // Datayı ekrana getiririz. if (!Page.IsPostBack) { // Numeric Sayfalama Bilgileri Olusturuluyor int i; for (i = 1; i <= ToplamSayfaSayisi; i++) { Label5.Text = Label5.Text + "<a href=default.aspx?sayfa=" + i + ">" + i + "</a>|"; //Label5 içerisine 1 den Toplam Sayfa Sayısına Kadar numeric degerler olusturuluyor. Sayıları olusturuyoruz ve bu sayılara link veriyoruz. Link yine aynı sayfaya gidiyor ve sayfa adında bir querystring içerisinde sayfaya ait degeri gönderiyor. } try { //olusturulan numeric degerin gönderdigi querystring’e göre o sayfaya gidiliyor Baslangic = int.Parse(Request.QueryString["sayfa"].ToString()); // burada queryden gelen degeri alıyoruz txtStart.Text = Baslangic.ToString(); DatayiDoldur();//data yenileniyor } Catch //sayfa ilk açıldıgında querystring bos olacagından hata vermemesi için ve ilk kayıttan baslaması için basalangic degiskenine 1 degerini atarız. { Baslangic = 1; } } Bilgiler(); } // Yaptıklarımızı daha iyi anlamak için forma 4 adet label ekleyelim ve asagıdaki voidi yazalım.daha sonra voidimizi form_Load da çagıralım. protected void Bilgiler() { //Konuyu daha iyi anlamak için kullandıgımız degiskenleri ekrana bastık lblBaslangicKaydi.Text = BaslangicKaydi.ToString(); lblGoruntulenecekKayitSayisi.Text = SayfadakiKayitSayisi.ToString(); ; lblToplamKayitSayisi.Text = ToplamKayitSayisi().ToString(); lblToplamSayfaSayisi.Text = ToplamSayfaSayisi.ToString(); } Numeric Sayfalama islemini tamamladık ve artık yaptıgımız sayfayı görelim (: Evet 5 numaralı sayfayatıklayalım ve o sayfaya gidelim. Madem Google örnegini verdik, Önceki ve sonraki butonlarınıda ekleyelim (: Sayfamıza 2 adet link buton ekleyelim ve Text özelliklerini Önceki ve Sonraki olarak belirleyelim. protected void lblOnceki_Click(object sender, EventArgs e) { // Önceki kayda gider if (Baslangic > 1) { Baslangic = Baslangic - 1; txtStart.Text = Baslangic.ToString(); DatayiDoldur(); Label4.Text = ""; Bilgiler(); } } protected void lbSonraki_Click(object sender, EventArgs e) { // Sonraki kayda gider if (Baslangic < ToplamSayfaSayisi) { Baslangic = Baslangic + 1; txtStart.Text = Baslangic.ToString(); DatayiDoldur(); Label4.Text = ""; Bilgiler(); } } Son kez projemizi çalıstıralım ve sonucu görelim. Bu makalenin de sonuna geldik baska bir makalede görüsmek dilegiyle, basarılar dilerim. Sem GÖKSU MCP | MCAD.NET askisem@hotmail.com Not: Selçuk Yavuz'un yazmıs oldugu Datalist ile Sayfalama makalesi bu makaleye kaynak olmustur. Diger Kaynaklar; Codeproject - Paging with Repeater control in ASP.NET
26 Kas 2006 ASP.NET 2.0 ile Localization (Yerelleştirme) Kategori: ASP.NET Etiketler: ASP.NETASP.NET 2.0 2 Yorum Merhaba arkadaşlar bu makalemizde ASP.NET içerisinde Localization (Yerelleştirme) işleminin nasıl yapıldığına göz atacağız. Localization Farklı kültür özelliklerine göre tasarlanmış web siteleri oluşturmamıza sağlayan Framework’un bir özelliğidir.Visual Studio da Localization Visual Studio 2005 herhangi bir Kaynak dosyası (Resource file *.resx) içinde herhangi bir kaynagı eklememize ve düzenlememize izin veren yeni bir kaynak editörü sundu. Web formumuz dizayn zamanındayken(Design time) basit adımlarla yeni kaynak dosyaları olusturmamızı saglıyor. Bu kaynak dosyaları, içerisinde ekleyecegimiz özelliklerin kullanıcı kültür özelliklerine göre sayfaya uygulanmasını saglar. Kaynak editörü bir grid gibidir. Name, value ve comment olmak üzere 3 sütundan olusur. Name belirleyecegimiz kaynagın adını, value kaynakta görüntüleyecegimiz degeri ve comment'de açıklama satırıdır. Visual studio 2005 WebForm'larını Localize etmek için 2 yol sunar. Birincisi Lokal kaynaklar (Local Resources), ikinciside Global kaynaklar(Global Resources). Lokal kaynak dosyalarında, kaynak dosyalar asp.net sayfaları içerisine eklenir. Global kaynaklarda ise ortak ayarların tutuldugu tek bir kaynak dosya olusturulur. Kısaca özetlersek; Web Uygulamaları için kaynak dosyaları olusturmamızı, Kaynaklara erismek için Çalısma zamanında yeni tanımlamalar yapmamızı, Kullanıcı istekleri için geçerli kültür özelliklerini otomatik olarak uygulamamızı saglar. (Tarih-saat, para birimi, web formlardaki bilgiler) Özellikle çok uluslu firmalar için düsünürsek, örnegin Microsoft için her dil için ayrı ayrı uygulama gelistirmek hem zaman kaybı hemde gereksiz is yüküdür. Bu durumda local kaynak dosyalarını kullanarak uygulamanın çalısacagı kültür özelliklerine gore tarih-saat, para birimi, kullanıcı formlarındaki bilgilerin vb. gibi bilgilerin otomatik olarak ayarlanmasını saglayabiliriz. Küçük çaplı projeler için düsünürsek projeyi compile etmeden kaynak dosyaları degistirerek site üzerinde güncelleme islemleri yapılabilir. Örnek Uygulama Localization özelliklerini anlatan bir örnek yapalım. Örnegimizde Tarih-saat, para birimi ve kullanıcı ara yüzlerini dil seçeneklerine göre otomatik olarak uygulandıgını görecegiz. Ilk olarak visual studio 2005 içinde Localize Adında bir proje açalım. Açılan web formumuza bir adet label ekleyelim. Text özelligini silelim ve adını lblHosgeldiniz olarak belirleyelim. Daha sonra Solution Explorerdan, Add Asp.NET Folder diyerek projemize Local Kaynak klasörü ekleyelim. Bu klasör üzerinde sag tıklayarak projemize bir adet kaynak dosyası ekleyelim ve adını "default.aspx.resx" olarak belirleyelim. Açılan sayfa da kaynagımızın adı(name) ve içerisinde tutacagımız deger saklanacaktır(Value). Kültür özelliklerimiz Türkçe oldugunu için bu kaynak dosyası içerisine Türkçe bilgiler girecegiz. Evet, simdi Ingilizce için kaynak dosyamızı olusturalım adını "default.aspx.en.resx" yapalım ve özelliklerimizi belirleyelim. Kültür özelliklerimizi belirledik. Simdi web formumuza gidip sayfamızın Kültür ayarlarını yapalım. <Page Language ="VB" AutoEventWireup ="false" CodeFile ="Default.aspx.vb" Inherits ="_Default" Culture="Auto" UICulture="Auto" > <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> < html xmlns ="http://www.w3.org/1999/xhtml" > < head runat ="server"> < title > Untitled Page</ title > </ head > < body > < form id ="form1" runat ="server"> < div > < asp : Label ID ="lblHosgeldiniz" runat ="server" Font-Names ="Verdana" Font-Size ="X-Large" meta:resourceKey="lblHosgeldiniz"></ asp : Label >< br /> < br /> </ div > </ form > </ body > </ html > Ilk olarak kültür özelliklerini Auto özelligi verdik. Label'ın meta:resourcekey özelligini belirttik. Simdi sayfamızı çalıstırabiliriz. Evet sayamızı çalıstırdık ve "Selam Türk" Diye Bizi Karsıladı. Simdi sayfamızın dil ayarını ingilizce yapalım. Sayfamızı Refresh edelim. Karsılama mesajı bu kez "Selam Ingiliz" oldu. Projemizi biraz daha genisletelim. Sayfamıza bir adet DropdownList, bir adet calendar ve bir adet label ekleyelim. Dropdown içerisinde Dil seçenekleri olacak ve seçtigimiz dile göre de Tarih-Saat, Para Birimi, ve Karsılama Mesajı degisecek. Dropdown dilleri ekleyelim. < asp : DropDownList ID ="DropDownList1" runat ="server" AutoPostBack ="True" OnSelectedIndexChanged ="DropDownList1_SelectedIndexChanged" meta : resourcekey ="DropDownList1Resource1"> < asp : ListItem Selected ="True" Value ="Auto" Text ="Lütfen Dil Seçiniz"></ asp : ListItem > < asp : ListItem Value ="Auto" Text ="Türkçe"></ asp : ListItem > < asp : ListItem Value ="en-US" Text ="Ingilizce"></ asp : ListItem > < asp : ListItem Value ="fr-FR" Text ="Fransızca"></ asp : ListItem > < asp : ListItem Value ="ar-EG" Text ="Arapça"></ asp : ListItem > </ asp : DropDownList > < asp : DropDownList ID ="DropDownList1" runat ="server" AutoPostBack ="True" OnSelectedIndexChanged ="DropDownList1_SelectedIndexChanged" meta : resourcekey ="DropDownList1Resource1"> < asp : ListItem Selected ="True" Value ="Auto" Text ="Lütfen Dil Seçiniz"></ asp : ListItem > < asp : ListItem Value ="Auto" Text ="Türkçe"></ asp : ListItem > < asp : ListItem Value ="en-US" Text ="Ingilizce"></ asp : ListItem > < asp : ListItem Value ="fr-FR" Text ="Fransızca"></ asp : ListItem > < asp : ListItem Value ="ar-EG" Text ="Arapça"></ asp : ListItem > </ asp : DropDownList > Ekledigimiz label içerisinde de para degerini tutacak kodumuzu yazalım. Burada da kültür özelliklerine göre para formatı ve para birimi gelecek. Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim parabirimi As Double = 575757.57 Label1.Text = String.Format("{0:c}", parabirimi) End Sub Dropdownd da listeledigimiz dillerden seçtigimiz dile göre istedigimiz ayarları vermesini isteyelim. Bunun için InitializeCulture() metodunu ezelim. Protected Overrides Sub InitializeCulture() Dim dil As String = Request("DropDownList1")' dropdowndan gelen deger If String.IsNullOrEmpty(dil) Then dil = "Auto" ' eger dil bossa otamatik olarak belirle UICulture = dil Culture = dil End Sub Simdi Dropdownumuzda Dil Seçimi yapıldıgında çalısacak kodu yazalım. Burada Seçilen Dile Göre InitializeCulture() metodu çalısacak ve seçilen dile göre Kültür özelliklerini uygulacak. Projemizi çalıstıralım. Simdi dillerden ingilizce Seçelim. Listeden bu kezde Arapçayı seçelim. Evet, Arapça seçenegini seçtik ve sayfamızın Arapça kültür ayarlarına geldigini gördük. Bu sekilde tüm kullanıcı ekranlarımızı kaynak dosyalarımız içerisinden belirleyebilir çok kolay bir sekilde projemize birçok dil seçenegi ile çalısma imkânı saglayabiliriz. Bu makalenin de sonuna geldik, baska bir makalede görüsmek üzere basarı ve iyi günler dilerim. Sem GÖKSU MCP | MCAD.NET | MCTSKaynaklarhttp://msdn.com http://www.codeproject.com http://aspalliance.com
26 Kas 2006 DATALIST NESNESİNİN HORIZONTAL/VERTICAL OLARAK GÖSTERİLMESİ Kategori: ASP.NET Etiketler: ASP.NETASP.NET 2.0 1 Yorum Datalist nesnesi veritabanından ya da bir veri kaynağındaki nesneleri Web sayfalarımızda görüntülememize yarar. Datalist nesnesi bir web sitesi ya da web projesi yaparken mutlaka kullanılacak kontrollerden birisidir. Örneğin bir ürün bilgisini dataListte gösterebiliriz.2 kontrolde de "header template", "item template" ve "footer template" bölümleri bulunmaktadır. Programcılar bu bölümler içerisinde yapacakları degisiklikler ile kontrolleri özellestirebilmektedirler ("template" kullanımları kod örnekleri ile daha net anlasılacaktır). Adlarından da anlasılacagı üzere "header" ve "footer" kalıpları ("template") bas ve son kısımları kontrol etmektedir, "item" kalıbı ise tekrarlanan veriyi yönetmektedir. "DataGrid" kontrolünde "item template" sütunlara karsılık gelmektedir. Iki kontrolün birbirleri ile temel farkları incelenirse; "DataGrid" ve "DataList" kontrolleri veriyi güncelleme yetenegine sahiptirler."DataGrid" i "DataList" ten farklılastıran özellikler ise sayfalama ve sıralamadır. Fazla uzatmadan örnege geçelim Bunun için projemize ilk olarak bir adet Datalist Kontrolü ekleyelim; Datalistimizi ekledikten sonra; önümüzde iki islem adımı var; 1- Veritabanına baglanmak. 2- Datalist içerisinde görüntüleyecegimiz HTML Tablosunu olusturmak (Seçenege göre degisebilir ben genel olarak HTML Tablo kullanırım) Adımdan baslarsak eger ilk olarak Datalistin baglanacagı veri kaynagını olusturmamız gerekebilir(ACCESS,SQL SERVER, XML dosyası olabilir.) Ben bu projede Access veritabanı kullanacagım. Veritabanım adı her zamanki gibi urunler.mdb J Tablomun içerisindeki Tablonun adı tblUrunler' dir. Bu tablo içerisinde asagıdaki alanlar bulunmaktadır. Tablo içerisindeki bilgileri gördükten sonra, Baglantımızı olusturabiliriz. private System.Data.OleDb.OleDbConnection Cnn; private System.Data.OleDb.OleDbDataAdapter Da; private System.Data.DataSet Ds; private void SetCnn() { Cnn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("db/urunler.mdb")); } Baslantı Nesnemizi olusturduktan sonra, Datalistimizi baglayacagımız tablodan verileri çekmek için bir DataTable döndüren bir function yazalım. private System.Data.DataTable DataDoldur() { SetCnn(); if (Cnn.State == ConnectionState.Closed) Cnn.Open(); Da = new System.Data.OleDb.OleDbDataAdapter("Select * from tblUrunler",Cnn); Ds = new DataSet(); Da.Fill(Ds, "Table"); return Ds.Tables[0]; } Functionumuzu yazdıktan sonra geriye sadece bunu çagırmak kalır ve bunu da form yüklenirken yapabiliriz. protected void Page_Load(object sender, EventArgs e) { DataList1.DataSource = DataDoldur(); DataList1.DataBind(); } } Simdi veriler Dataliste gelir fakat ekranda görüntülenmez çünkü ekranda görüntülemek için Datalist içerisinde görüntüleyecegimiz verileri yazmadık. Bunun için sayfamızın HTML Designına gelip; HTML içerisinde asagıdaki gibi tabloyu ekleyebiliriz. Burada dikkat edilmesi gereken kısım verilerin ItemTemplate içerisinde görüntülenecegidir. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:DataList ID="DataList1" runat="server" Style="z-index: 101; left: 36px; position: absolute; top: 20px" Height="312px" Width="556px" ShowFooter="False"> <ItemTemplate> <table border=1> <tr> <td style="width: 223px"> Ürün ID:</td> <td style="width: 267px"><%# DataBinder.Eval(Container.DataItem,"fldUrunID")%> </td> <td rowspan="5" style="width: 281px" align="center"> <asp:Image ID="Image1" runat="server" ImageUrl=<%# DataBinder.Eval(Container.DataItem,"fldUrunResmi")%>/> </td> </tr> <tr> <td style="width: 223px; height: 21px"> Ürün Kodu:</td> <td style="width: 267px; height: 21px"><%# DataBinder.Eval(Container.DataItem,"fldUrunKodu")%> </td> </tr> <tr> <td style="height: 23px;" colspan="2"> Ürün Açıklama</td> </tr> <tr> <td colspan="2" rowspan="2" style="height: 21px"> <%# DataBinder.Eval(Container.DataItem,"fldAciklama")%> </td> </tr> <tr> </tr> </table> </ItemTemplate> </asp:DataList> </div> </form> </body> </html> HTML içerisinde verilerimizin görüntülenecegi yerleri ayarladıktan sonra Design kısmına geri dönersek; Gibi bir görüntü karsımıza çıkar. Simdi hersey hazır ve sayfamızı çalıstırıp verileri ekranda gösterebiliriz. Ama ilk olarak görünümü biraz daha görüntülemek için Datalist üzerinde Sag tus + Auto Format Diyerek Datalistimize bir stil seçebiliriz. Sayfamızı çalıstırırsak; Verilerimiz görüntülenir, fakat farkettiyseniz veriler altalta geliyor. Eger Form_Load olayına asagıdaki kodu eklersek protected void Page_Load(object sender, EventArgs e) { DataList1.DataSource = DataDoldur(); DataList1.RepeatColumns = 2;//Yanyana listelenecek kayıt sayısı DataList1.DataBind(); } Artık Sayfamızda yanyana 2 kayıt gelecektir. Bu özelligi RepeatColumns özelligi ile ayarladık. Simdi projemizi tekrar çalıstırırsak; Ortaya çok güzel bir görüntü çıkar :) Baska bir makalede görüsmek üzere, Iyi çalısmalar