03 Oca 2008 Microsoft Virtual Earth Map ile Dünyayı Keşfedin – Makale 1 Kategori: ASP.NET Etiketler: ASP.NETMicrosoft 4 Yorum Merhaba sevgili arkadaşlar bu makalemizde Microsoft’un yeni bir ürünü olan Virtual Earth Map’ı inceleyeceğiz.Google Earth'u ilk kullandıgım anda Microsoft'un neden böyle bir sey yapmadıgını düsünüp durmustum. Microsoft bu düsünceme benden daha çabuk cevap verdi ve Virtual Earth Map'i duyurdu. Sanırım buna en çok ben ve benim gibi Microsoft ürünlerini kullanmayı seven yazılımcı dostlar sevinmistir. J Makaleye baslamadan önce bu uygulamaları kullanmayan hatta hiç duymayanların oldugunu da varsayarak ne için kullanıldıgına ve bize ne gibi imkanlar sunduguna biraz deginmek istiyorum. Google Earth ve Virtual Earth Map, Dünya üzerin de yer alan belirli lokasyonların çesitli bilgilerin online olarak haritalandırılmasını saglayan yeni bir web kontrolüdür. Peki bu bilgiler nelerdir? Örnek verecek olursak, Yol haritaları, Uydu Görüntüleri, O lokasyona ait Fotograflar, O lokasyona ait koordinat bilgileri, O lokasyona ait kültürel bilgiler(Gezilesi, gidilesi yerler J) Kullanımı son derece basit olup çok fonksiyonel bir yapıya sahiptir. Özellikle uygulamalarında Google Earth'u kullananların Virtual Earth Map SDK'nı inceledikten sonra çok kolay bir sekilde kendi uygulamalarında Virtual Earth Map'i kullanabileceklerdir. Kullanım alanlarını incelemek gerekirse bana kalırsa kisisel siteniz dahil tüm sitelerde kullanılabilir. Artık çogu firma iletisim bölümünde kroki yerine bunu kullanıyor. Özellikle Emlak firmaları ve Turizm firmaları ürünlerinin bulundugu yeri kullanıcıya daha iyi bir sekilde sunmak için bu uygulamaları kullanır. Web Uygulamalarında Virtual Earth Map'i Kullanmak Ilk olarak sayfamıza Virtual Earth'un kütüphanesini referans olarak ekliyoruz. <script type="text/javascript" src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6"></script> Sonra haritanın görüntülenecegi bir div açıyoruz. Haritamız bu div alanı içerisinde görüntülenecek.<div id='myMap' style="position:absolute; width:400px; height:400px;"></div>Son olarak da haritamızı yüklemek için LoadMap fonksiyonunu çagırıyoruz.var map = new VEMap('myMap');map.LoadMap();LoadMap Belirledigimiz koordinatlardaki haritayı yükler. Alacagı tüm parametreler opsiyoneldir.KullanımıVEMap.LoadMap(VELatLong, zoom, style, fixed, mode, showSwitch, tileBuffer);Parametreleri VELatLong Haritanın koordinatlarını belirledigimiz parametredir. ZoomHaritanın zoom oranıdır. 1 ile 19 arasında bir deger alır. Varsayılan degeri 4' tür. StyleMap'in gösterilecegi formatı belirler. Varsayılan olarak VEMapStyle.Road' dir. Mode Harita yüklendiginde hangi modda açılacagını belirler. Varsayılan olarak Mode2D yüklenir.Diger parametreleri Fixed, showSwitch, tileBuffer'dir.örnek Uygulama Ilk olarak uygulamamızda basitçe bir Map ekleyelim ve konuyu anlamaya çalısalım. Bunun için Visual Studio ya da notepad ya yeni bir sayfa olusturalım. Ben örnek uygulamamda Bagcılar'ın haritasını yükletecegim J SimpleVirtualMap.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript" src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6"></script> Virtual Earth Kütüphanesini Referans aldım <script type="text/javascript"> var map = null; var LA = new VELatLong(41.034354, 28.856932); Haritada gösterecegim koordinatları belirledim function GetMap() { map = new VEMap('myMap'); map.LoadMap(LA,17,VEMapStyle.Hybrid, VEMapMode.Mode2d } Haritamın yüklenmesini sagladım </script> </head> <body onload="GetMap();"> Sayfa yüklenirken haritamı da getiriver <div id='myMap' style="position:relative; width:400px; height:400px;"></div> Harita burada gösterilecek </body></html> Simdi yazmıs oldugumuz bu basit uygulamayı test edelim. Sayfamızı çalıstıralım. Göze hos gelen bir görüntüsü var gerçekten J Simdi yol haritası görüntüsünde açalım, yukarıda Road yazan yere tıklıyorum. Bu makalemizin simdilik sonun da geldik. Makalenin devamında görüsmek dilegiyle, herkse basarılar dilerim. Sem Göksusem.goksu@yazilimgunlugu.com www.semgoksu.com | www.yazilimgunlugu.com Kaynaklar Virtual Earth Map SDK 6.0
30 Ağu 2007 Visual Studio Orcas - ASP.NET Yenilikleri [Listview ve DataPager Kontrolleri] Kategori: ASP.NET Etiketler: ASP.NETVisual Studio 3 Yorum Merhaba arkadaşlar, bu makalemizde orcas beta 2 ile birlikte gelen olan Listview ve DataPager kontrollerine ve bize kazandırdıklarına bakacağız.Listview Listview kontrolü template'lere baglı olarak çalısan yeni bir listeleme kontrolüdür. Bu kontrol kendi html çıktısını üretmez. Bunun yerine Datalist nesnesine benzeyen templateleri kullanarak datayı listelememizi saglar. Bu templateler sunlardır,n LayoutTemplate n ItemTemplate n AlternatingItemTemplate n SelectedItemTemplate n EditItemTemplate n InsertItemTemplate n EmptyItemTemplate n EmptyDataTemplate n ItemSeparatorTemplate n GroupTemplate n GroupSeparatorTemplate Datayı listelemek için en çok kullanılan 2 template'i vardır. LayoutTemplate ve ItemTemplate. Layout template datanın dısarıda tanımlanmasını saglayabilir. Item template ise datanın liste içerisinde tanımlanmasını saglar. Layout templete içerisinde dinamik itemtemplateler kullanmak için ItemContainer'lar tanımlayabiliriz.Örnek <asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1" EnableTheming="False"> <ItemTemplate> <div>--Databaseden gelecek Datalar, </div> </ItemTemplate> <LayoutTemplate> --Dısarıdan yada dinamik olarak listeleyecegimiz kayıtlar </LayoutTemplate> </asp:ListView> DataPagerDatapager kontorlü orcas ile gelen yeni bir asp.net kontrlüdür. Listview kontrolü üzerinde sayfalama yapmamızı saglar. Sayfalama yapacagımız kontrolü belirlemek için; PagedControlID ve sayfada kaç kayıt listelenecegini belirlemek içinde PageSize özellikleri kullanılır. Bu kontrol ile çok kolay bir biçinde sayfalama islemlerini yapabiliriz. Örnek <asp:DataPager ID="DataPager1" runat="server" PagedControlID="ListView1" PageSize="5">n Sayfalanacak olan Listview kontrolün Her sayfada 5 kayıt listelenecek <Fields> <asp:NextPreviousPagerField ButtonType="Link" ShowFirstPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="False" />n IleriGeri butonu, ilk kayda gitmek için kullanılır, button, link ve image olabilir <asp:NumericPagerField />n Numeric sayfalamanın yapılmasını saglar. <asp:NextPreviousPagerField ButtonType="Link" ShowLastPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="False" />n IleriGeri butonu, son kayda gitmek için kullanılır, button, link ve image olabilir </Fields> </asp:DataPager> Konu ile ilgili örnek bir uygulama yapalım; Ilk olarak Visual Studio 2008 açalım ve yeni bir web projesi olusturalım; Daha sonra sayfamıza SQLDataSource, listview ve Datapager kontrolü ekleyelim; SQLDataSource nesnesini kullanarak verileri listeleyecegiz. Yukarıdaki gibi bir görüntü elde edeceksiniz; Simdi verilerin getirilmesini saglayalım. <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT [CategoryID], [Name], [Description] FROM [ArticleCategories]"> </asp:SqlDataSource>Verileri çektik simdi de Listview içerisinde verilerin bind edilebilmesi için listview nesnesini tempatelerini ayarlıyalım; Listemizde sadece Kategori adı ve Description listelenecek. <asp:ListViewID="ListView1" runat="server" EnableTheming="False"> <ItemTemplate> <div> <h2> <%# Eval("Name") %></h2> <ul> <li> <%# Eval("Description") %></li> </ul> </div> </ItemTemplate> <LayoutTemplate> <li> <asp:PlaceHolder ID="itemContainer" runat="server"></asp:PlaceHolder></li> </LayoutTemplate> </asp:ListView>Son olarak da listview kontrolümüzün sayfalamasını halledelim; <asp:DataPager ID="DataPager1" runat="server" PagedControlID="ListView1" PageSize="3"> <Fields> <asp:NextPreviousPagerField ButtonType="Link" ShowFirstPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="False" /> <asp:NumericPagerField /> <asp:NextPreviousPagerField ButtonType="Link" ShowLastPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="False" /> </Fields> </asp:DataPager>Evet artık uygulamamızı çalıstırabiliriz; Güzel bir sekilde listelemeyi yaptı, simdi 2. sayfaya geçelim JVay be, eskiden ne çok ugrastırırdı bizi simdi çok kolay JBüyüksün Microsoft diyor ve baska bir makale de görüsmek üzere sizlere iyi günler diliyorum JÖrnek kodlar için mail adresimi kullanabilirsinizSem GÖKSU info@semgoksu.comMCP (Microsoft Certified Professional)MCAD (Microsoft Certified Application Developer)MCTS (Microsoft Certified Technology Specialist)Kaynaklar MSDN
26 Ağu 2007 Multi-Color DropdownList Kategori: ASP.NET Etiketler: ASP.NET 1 Yorum Merhaba arkadaşlar, bu makalemizde DropdownList kontrolünün standart görüntüsünden kurtulup kendimize özel rengarenk item’ları olan dropdownlistler oluşturacağız. Web siteleri ve web uygulamaları gelistirirken ziyaretçilere sürekli yenilikler sunmak zorundasınızdır. Bu yenilikler sayfanın tasarımı veya islevlerinin degismesi ile yeterli olmayabilir. Bu durum da kullanıcıların ilgisini çekecek bir seyler yapmak zorunda kalırsınız ve yaratıcılıgınızı konusturmak zorundasınızdır. Özellikle sporseverlerin ilgisini çekecegini düsündügüm ve 1-2 projede kullandıgım "Multi-Color DropdownList" kontrolünü sizlere anlatacagım. Bir futbol takımının sitesini yaptıgımızı varsayalım. Kullanıcılar haklı olarak kendi takımlarının renklerini her yerde görmek isterler. Bizde öyleyse onları kırmayalım ve her yeri takımlarının renklerine çevirelim. Örnek: Spor sitelerini takip edenle bilir, her maç sonunda maçın yıldızı, kötüsü vs. ziyaretçiler tatafından belirlenir. Bizde burada örnek olarak bunu yapalım. Futbolcuların isimlerini listeleyen bir DropdonList kontrolümüz olsun. Biz bu dropdownlist kontrolünü takımımızın renklerinde dolduralım. Ben Fenerbahçeli oldugum için de Sarı Lacivert renklerde futbolcu isimlerini listeye dolduracagım. Gerekli açıklamaları yaptıktan sonra örnegimize geçelim; Ilk olarak yeni bir Web projesi olusturalım. Daha sonra sayfamıza bir adet DropdownList kontrolü ekleyelim. using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Drawing; using System.Reflection; using System.Collections.Generic; Sayfa açılırken Ilk olarak takım listesini GetTeamList() dolduracagız ve bu listedeki elemanların renklerini belirlemek içinde diger fonksiyon SetColor()'i kullanacagız public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (Page.IsPostBack == false) { GetTeamList(); SetColor(); } } private void GetTeamList() { ddlMultiColor.DataSource = TeamList(); ddlMultiColor.DataBind(); } Futbolcuların isimlerini ben arraylist olarak aldım, siz uygulamalarınızın seyrine göre databaseden de doldurabilirsiniz private ArrayList TeamList() { string[] Teams = { Serdar, Önder, Edu, Lugano, Roberto Carlos, Appiah, Marco Aurello,Ugur Boral ,Alex, Deivid, Kezman }; ArrayList TeamList = new ArrayList(); foreach (string Team in Teams) { TeamList.Add(Team); } return TeamList; } DropdownList'imizin elemanları arasında dolasarak liste elemanlarının background ve Text color özelliklerini belirliyoruz. Burada row'un 2'li modunu aldık. Eger mod 0 ise Normal Renk olacak degilse Alternatif renk de olacak. private void SetColor() { int row; for (row = 0; row < ddlMultiColor.Items.Count; row++) { if (row % 2 == 0) { ddlMultiColor.Items[row].Attributes.Add(style,background-color:Yellow; Color:Navy; font-family:verdana); } else { ddlMultiColor.Items[row].Attributes.Add(style, background-color:Navy; color:Yellow; font-family:verdana); } } } } Evet simdi yazdıklarımızı Test edelim ve projemizi çalıstıralım. Gerçekten de bir Fenerbahçeli olarak güzel durdugunu düsünüyorum J Bu makalenin de sonuna geldik, Olumlu ve olumsuz tüm görüsleriniz için simdiden tesekkür ederim. Örnek Kodları indirmek için Tıklayınız Sem GÖKSU info@semgoksu.com MCP (Microsoft Certified Professional) MCAD (Microsoft Certified Application Developer)MCTS (Microsoft Certified Technology Specialist) Kaynaklar www.codeproject.com
27 Mar 2007 ASP.NET Custom Control Geliştirme – Karakter Sayan Textbox Kategori: ASP.NET Etiketler: ASP.NETC# 5 Yorum Merhaba arkadaşlar, custom controller dizisi makalesine textbox içerisine girilen karakterleri sayacak ve bu textbox’ı limitlendirecek yeni bir kontrol yazacağız…Karakter Sayan Textbox Bazı durumlarda textbox içerisine girilecek karakter sayısı bizim için önemli olabilir. Bu durumlar da textbox içerisindeki karakter sayısını kontrol edip kaç karakter girdigimizi kontrol etmemiz gerekir. Örnegin firmamız için bir sms gönderme programı yazıyorsak bu bizim için çok önemlidir. Toplu sms gönderimi yaparken kullanıcılara gönderilecek sms'in tek seferde yani en fazla 160 karakter girilerek gönderilmesi gerekir. Iste biz bu sorunu çözmek için hem limitlenen hemde karakter sayan bir textbox yazacagız. Ilk olarak yeni bir web control library projesi olusturalım. Evet, projemizi olusturduktan sonra kodlamaya baslıyalım. using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace SemControls { //Ilk olarak toolbox'da kontrolümüze verilecek ismi belirliyoruz.. [DefaultProperty("Text")] [ToolboxData("<{0}:SemLimitliTextbox runat=server></{0}:SemLimitliTextbox>")] public class SemLimitliTextbox : WebControl { string _KarakterLimiti; string _Text; // Kontrol olusturulurken textbox içerisindeki karakteri sayacak ve bunu sınırlandıracak olan javascript kodunu yaziyoruz. protected override void OnInit(EventArgs e) { string script = ""; script += "<script language=\"javascript\">"+System.Environment.NewLine; script += "function textCounter(field, countfield, maxlimit)" + System.Environment.NewLine; script += "{if (field.value.length > maxlimit) field.value = field.value.substring(0, maxlimit);" + System.Environment.NewLine; script += "else countfield.value = maxlimit - field.value.length; }" + System.Environment.NewLine; script += "</script>"; if (!this.Page.IsClientScriptBlockRegistered("SemLimitedTextbox")) { this.Page.RegisterClientScriptBlock("SemLimitedTextbox", script); } } // Property penceresine LimitliTextbox grubu altında karakterLimiti adında yeni bir özellik ekliyoruz. Bu bizim textboxımızı limitlendirecek [Category("LimitliTextbox")] [Browsable(true)] [Description("Textbox'a kaç karakter girilsin?")] public string KarakterLimiti { get { return _KarakterLimiti; } set { _KarakterLimiti = value; } } // Property penceresine LimitliTextbox grubu altında Text adında yeni bir özellik ekliyoruz. Bu bizim textboxımızın text özelligi olacak. [Category("LimitliTextbox")] [Browsable(true)] [Description("Textbox'ın Text'i")] public string Text { get { return _Text; } set { _Text = value; } } //Simdi kontrolümüzü olusturuyoruz. protected override void Render(HtmlTextWriter writer) { try { string LimitedTextbox = ""; LimitedTextbox += "<textarea rows=3 name=LimitliTextbox onKeyDown=\"textCounter(this.document.all.LimitliTextbox,this.document.all.KarakterSayisi,"+KarakterLimiti+");\""; LimitedTextbox += "onKeyUp=\"textCounter(this.document.all.LimitliTextbox,this.document.all.KarakterSayisi," + KarakterLimiti + ");\" cols=38 tabindex=5>"+Text+"</textarea>"; LimitedTextbox += "<br/>"; LimitedTextbox += "<input readonly type=text name=KarakterSayisi size=4 maxlength=3 value=\"" + KarakterLimiti + "\" style=\"font-family: Tahoma; font-size: 8pt; border: 1px solid\">"; LimitedTextbox += "<font color=#6699CC face=Verdana size=1> Karakter Daha Yazabilirsiniz...</font>"; writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.Write(LimitedTextbox.ToString()); writer.RenderEndTag(); } catch { writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.Write("Kontrol Olusturulamadı..."); writer.RenderEndTag(); } } } } Kontrolümüzü olusturduktan sonra; projemize yeni bir web site ekleyelim. Daha sonra Web projesinin referanslarına bu web control libraryi ekleyelim. Simdi toolboxımıza gidelim bakalım kontrol gelmismi? Sem Limitli textbox kontrolü gelmis. Sayfamıza yeni bir SemLimitliTextbox ekliyelim ve özelliklerini ayarlıyalım... Textbox içerisine en fazla 100 karakter girilsin. Simdi web projemizi çalıstıralım. Simdi textbox içerisine birseyler yazalım. Gerçekten de sayıyor. : ) Bu makalemizinde de sonuna geldik. Tesekkür eder iyi çalısmalar dilerim. Sem GÖKSUMCP | MCAD.NET | MCTS | ASP.NET MVP Örnek Kodlar için mail adresimi kullanabilirsinizsemgoksu@semgoksu.com Kaynaklar www.codeproject.com
16 Mar 2007 XML ve XSLT Kullanarak Dinamik ASP.NET Sayfaları Oluşturmak Kategori: ASP.NET Etiketler: ASP.NET 2 Yorum Merhaba arkadaşlar bu makalemizde Bir XML dökümanı oluşturup, oluşturduğumuz XML dökümanını XSLT ile sitil uygulayıp ASP.NET sayfalarında kullanacağız… Kısaca XML(Extensible Markup Language)XML veri alısverisinde kullanılacak standart bir format olarak kullanılan bir dildir. Uygulamalarımızı farklı platformalara tasımak istedigimizde en iyi çözümdür. XML belgelerine kendi etiketlerinizi ekleyebilir aynı veritabanlarındaki gibi istedigim fieldları gösterebiliriz. Application, dil, isletim sistemi vb. gibi kısıtlamalara baglı degildir. Uygulamalar kendi veri yapılarını tanımlayabilir. Son derece güvenligi oldugu için veri paylasımında yada dagıtımında sürekli kullanılır. Örnek olarak Haberler.XML'i olusturalım;<?xml version="1.0" encoding="utf-8" ?><Haberler> <Haber ID="1"> <Baslik>Sem Göksu MVP Oldu</Baslik> <Tarih>bugünün tarihi iste.</Tarih> <Icerik>Bi tebrigi hakettim J</Icerik> </Haber> <Haber ID="2"> <Baslik>Sem Göksu AJAX Semineri</Baslik> <Tarih>Gelecekte.</Tarih> <Icerik>Bilmemki.</Icerik> </Haber> <Haber ID="3"> <Baslik>Ajax güzel sey</Baslik> <Tarih>Gelecekte.</Tarih> <Icerik>güzel.....</Icerik> </Haber> <Haber ID="4"> <Baslik>Ajax güzel sey 2</Baslik> <Tarih>Gelecekte.</Tarih> <Icerik>güzel.....</Icerik> </Haber> <Haber ID="5"> <Baslik>Ajax güzel sey 3</Baslik> <Tarih>Gelecekte.</Tarih> <Icerik>güzel.....</Icerik> </Haber></Haberler>Simdi bu XML'i açtıgımız da neler olacak bi bakalım :) Ben bir sey anlamadım ziyaretçi nasıl anlasın. Bunu biraz biçimlendirelim. Ama nasıl? Kısaca XSLT(Extensible Stylesheet Language Transformation)Sitemizde haberleri farklı sitelerin de kullanması için XML'e döktük. Ama siteler Xml verisinin farklı bir formata dönüstürülmesini istiyor. XSLT standardı tam bu noktada karsımıza çıkıyor. XSLT, XML içerigine sitiller uygulayarak sayfalarımızın HTML formatına dönüstürülmesini saglar. Ayrıca xml üzerinde sıralama, filtreleme ve gruplama gibi islemler yapabiliriz. Örnek olarak HaberlerSitili.xsl'i olusturalım;<?xml version="1.0" encoding="utf-8"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/"><html><body><h1>Haberlerim...</h1><table border="0" borderColor="gray" cellpadding="0" cellspacing="0" width="700"><tr bgcolor="Yellow" height="20"><td>ID</td><td>Tarih </td><td>Baslık </td><td>Icerik </td></tr><xsl:for-each select="Haberler/Haber"><tr><td><xsl:value-of select="@ID"/></td><td><font size="2" color="Blue"><xsl:value-of select="Baslik"/></font></td><td><b><xsl:value-of select="Tarih"/></b></td><td align="right"><xsl:value-of select="Icerik"/></td></tr></xsl:for-each></table></body></html></xsl:template></xsl:stylesheet>Evet Simdi bu olusturdugumuz XML ve XSLT dökümanlarını birlestirerek HTML gibi bir çıktı alalım. Projemize bir sayfa ekleyelim;Ilk olarak sayfamızın namespacelerine System.XML ve System.XML.XSL'i ekleyelim.Sonra Forlm'un loadıında;VB.NETDim xdoc As New XmlDocument()xdoc.Load(Server.MapPath("haberler.xml"))Dim xsltran As New XslCompiledTransform()xsltran.Load(Server.MapPath("HaberlerSitili.xsl"))xsltran.Transform(xdoc, Nothing, Response.Output)C#NETXmlDocument xdoc = new XmlDocument();xdoc.Load(Server.MapPath("haberler.xml"));XslCompiledTransform xsltran = new XslCompiledTransform();xsltran.Load(Server.MapPath("HaberlerSitili.xsl"));xsltran.Transform(xdoc , null, Response.Output);Simdi sayfaımızı çalıstıralım; Az önceki çirkin XML simdi ne güzel oldu : )Bu makalemizinde de sonuna geldik. Tesekkür eder iyi çalısmalar dilerim. Sem GÖKSUMCP | MCAD.NET | MCTS | ASP.NET MVPÖrnek Kodlar için mail adresimi kullanabilirsinizsemgoksu@semgoksu.com Kaynaklar www.codeproject.com