08 Mar 2007 ASP.NET Custom Control Geliştirme – Popup Açtıran Button Kategori: ASP.NET Etiketler: ASP.NETC# 0 Yorum Merhaba arkadaşlar, ilk makalemizde diğer web geliştirme editörlerinde olan ama .net toolbox’da olmayan marquee kontrolünü geliştirmiştik. Bu makalemiz de ise farklı bir custom web control geliştireceğiz. Popup Açtıran Button Hemen hemen her web sitesinde kullandıgımız Popup pencereler bizi çok fazla ugrastırır. Her defasında yeni bir javascript olusturup olusturdugumuz javascripti kontrollerin eventlerinde çagırırız. Bu hem bizi çok ugrastırır hemde çok fazla zaman kaybettirir. Iste bu zaman kaybanı önlemek için popup açtıran bir buton gelistirecegiz. Bir button olusturup bu butona tıklandıgında popup pencere açtıracagız. Butonun ve açılacak olan bu pencerenin boyutlarını kullanıcı degistirebilecek. Simdi ilk olarak yeni bir WebControl Library projesi olusturalım. 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 PopupButton { [DefaultProperty("Text")] [ToolboxData("<{0}:semPopupButton runat=server>")]//kontrolümüze verilecek olan ID Tabiki kendi adımla baslıyor (: public class semPopupButton : WebControl { [Bindable(true)] [Category("Appearance")] [DefaultValue("")] [Localizable(true)] //Kontrolümüzün özelliklerini tutacak olan degiskenler string _text; string _windowName; string _windowUrl; string _windowWidth; string _windowHeight; string _buttonWidth; string _buttonHeight; //SemPopupButton adlı bir özellik grubuna eklenecek bu özellik Açılacak olan Window'un URL'ni tutan bir özelliktir. [Category("SemPopupButton"), DefaultValue("WindowUrl"), Description("Açılacak olan Popup Pencerenin URL'i")] public string WindowURL { get { return _windowUrl; } set { _windowUrl = value; } } //SemPopupButton adlı bir özellik grubuna eklenecek bu özellik Açılacak olan Window'un Title'ni tutan bir özelliktir. [Category("SemPopupButton"), DefaultValue("WindowsName"), Description("Açılacak olan Popup Pencerenin Title'i")] public string WindowName { get { return _windowName; } set { _windowName = value; } } //SemPopupButton adlı bir özellik grubuna eklenecek bu özellik Açılacak olan Window'un genisligini tutan bir özelliktir. [Category("SemPopupButton"), DefaultValue("PopupWidth"), Description("Açılacak olan Popup Pencerenin genisligi")] public string WindowWidth { get { return _windowWidth; } set { _windowWidth = value; } } //SemPopupButton adlı bir özellik grubuna eklenecek bu özellik Açılacak olan Window'un yüksekligini tutan bir özelliktir. [Category("SemPopupButton"), DefaultValue("WindowHeight"), Description("Açılacak olan Popup Pencerenin yüksekligi")] public string WindowHeight { get { return _windowHeight; } set { _windowHeight = value; } } //SemButton adlı bir özellik grubuna eklenecek bu özellik butonun textini tutan bir özelliktir. [Category("SemButton"), DefaultValue("TextName"), Description("Butonn Text Özelligi")] public string Text { get { return _text; } set { _text = value; } } //SemButton adlı bir özellik grubuna eklenecek bu özellik butonun genisligini tutan bir özelliktir. [Category("SemButton"), DefaultValue("ButtonWidth"), Description("Butonun Genisligi")] public string ButtonWidth { get { return _buttonWidth; } set { _buttonWidth = value; } } //SemButton adlı bir özellik grubuna eklenecek bu özellik butonun yüksekligini tutan bir özelliktir. [Category("SemButton"), DefaultValue("ButtonHeight"), Description("Butonun Yüksekligi")] public string ButtonHeight { get { return _buttonHeight; } set { _buttonHeight = value; } } protected override void RenderContents(HtmlTextWriter writer) { try { string popupButton; catch { writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.Write("Popup Pencere..."); writer.RenderEndTag(); } } } } Kodumuzu tamamladık simdi testing için projemize bir web site ekleyelim. Ekledikten sonra Web Site'in referanslarına Projects sekmesinden WebControl Libraryi ekleyelim. Simdi toolbox'a bakalım eklenmismi (: Kontrolümüz eklendi Simdi sayfamıza ekleyelim. Simdi özelliklerimizi ayarlayalım. Evet olusturdugumuz özellik grupları geldi. Ve biz özelliklerimizi yazdık. Simdi projeyi çalıstıralım. Ve butona tıklayalım (: Bu makalemizinde de sonuna geldik. Tesekkür eder iyi çalısmalar dilerim. Sem GÖKSU MCP | MCAD.NET | MCTS | ASP.NET MVP Örnek Kodlar için mail adresimi kullanabilirsiniz semgoksu@semgoksu.com Kaynaklar www.codeproject.com
08 Mar 2007 ASP.NET Custom Control Geliştirme – Marquee Kontrolü Kategori: ASP.NET Etiketler: ASP.NET 4 Yorum Merhaba arkadaşlar, bu makalemizde diğer web geliştirme editörlerinde olan ama .net toolbox’da olmayan bir web controlünün nasıl geliştirildiğine bakacağız.ASP.NET Custom Control Gelistirme - Marquee Kontrolü Visual Studio da kullanılabilir kontol sayısı çok fazla olsada bazı durumlar da visual studio toolbox'ında yer almayan bir kontrol gerekebilir. Bu durum da geriye 2 seçenek kalır. Ya dısarıdan 3th party bir component satın almalıyız. Yâda kendi kontrolümüzü kendimiz gelistirmeliyiz. Dısarıdan satın almak hem maliyetli bir istir hemde alacagımız kontol bizim isimizi tam olarak görmeyebilir. Ayrıca gelistirmek istedigimizde yine ücret ödememiz gerekebilir. Buda hem biz yazılımcıların hemde firmaların isine gelmez. Bu durumu çözmek için kendi kontrolümüzü kendimiz gelistirebiliriz. Visual studio ile kendi kontrolümüzü gelistirip istedigimiz gibi kullanabiliriz istedigimiz gibi gelistirebiliriz. Kendi kontrollerimizi gelistirebilmemiz için visual studio WebControlLibrary'yi sundu(Aynı islemleri Class Library ile de yapabiliriz). Simdi ilk olarak WebControlLibrary'de bize lazım olacak metodları tanıyalım. Render Methodu Olusturacagımız Custom kontrolü çalıstırdıgımızda tüm islemler render metodunda gerçeklesecektir. Render metodu Web Browser'da kontrolleri görüntülemek için HTML olarak output edecektir. Otomatik olarak sayfayı Host eden sayfayı HtmlTextWriter ile HTML'e çevirecektir. Aynı Clasik ASP de olan Response.write gibi. Design-Time Destegi Olusturacagımız nesneye ait özellikleri belirleyecegimiz kısımdır. Kontrol'e design-time özelligi eklemek için property'ler ve class'lar tanımlanır codun içine dahil edilir. [Category("ÖzellikAdi"), DefaultValue(""), Description("Açıklama")] Attributes Category Appearance Behavior Data Description Belirlenecek olan property ile ilgili açıklama. DefaultValue Kendi degerimiz. Browsable Property'nin property box içinde gösterilip gösterilmeyecegine karar verir. Alacagı degerler. true yada false Kontrolü kullanmak Olusturacagımız kontrolü olusturmak için WebControlLibrary'i Build ettikten sonra olusacak olan dll'i kendi toolbox'mızda sag tıklayarak Choose Items seçenegini seçerek ekleyebiliriz. Örnek: Ben örnek olarak Visual Studio içerisinde yer almayan ama web sayfalarında çok ise yarayan Marquee(kayan yazı) kontrolünü gelistirecegim. Ilk olarak yukarıda da anlattıgım gibi WebControlLibrary olusturalım. Projemizi olusturduktan sonra Kodumuzu inceleyelim. namespace CustomControl { [DefaultProperty("Text")] [ToolboxData("<{0}:WebCustomControl1 runat=server>")] // Kontrolümüzün Sayfaya eklendiginde belirlenecek olan ID'si public class WebCustomControl1 : WebControl { [Bindable(true)] [Category("Appearance")] //propertyleri [DefaultValue("")] [Localizable(true)] public string Text { get { String s = (String)ViewState["Text"]; return ((s == null) ? String.Empty : s); } set { ViewState["Text"] = value; } } protected override void RenderContents(HtmlTextWriter output)//Kontrolümüzün output edilecegi render metodu. { output.Write(Text); } } } Simdi projemize devam edelim. Ilk olarak Kontrolümüzün adını SemMarquee yapalım. namespace Marquee { [DefaultProperty("Text")] [ToolboxData("<{0}:SemMarquee runat=server>")] public class SemMarquee : WebControl { Propertieslerimiz için açıklamayı yapalım. [Category("Appearance")] [Browsable(true)] [Description("Kayan Yazı içerigi")] [Editor(typeof(System.Web.UI.Design.TextControlDesigner), typeof(System.Drawing.Design.UITypeEditor))] Simdi property penceremize eklemek istedigimiz özellikleri yazalım string _text; string _width; string _height; public string MarqueeText //marque içerisinde kaydırılacak olan yazı resim vs.. { get { return _text; } set { _text = value; } } public string MarqueeWidth //marwuenin genisligi { get { return _width; } set { _width = value; } } public string MarqueeHeight //marwuenin yüksekligi { get { return _height; } set { _height = value; } } Simdi render edilecek olan marquee'yi yazalım. protected override void RenderContents(HtmlTextWriter writer) { try { catch { writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.Write("Kayan Yazı"); writer.RenderEndTag(); } } } } Evet, Kontrolümüzü olusturduk Simdi bunu bir web site içerisinde kullanalım. Bunun için var olan projemize bir web site ekleyelim. Simdi ekledigimiz web site'in referanslarına gelip olustugumuz class library'i ekleyelim. Simdi toolbox'ımıza göz atalım. Marquee controlümüz toolbox'a eklendi. Simdi bunu formumuza ekleyelim ve özelliklerini belirleyelim. Simdi projemizi çalıstıralım. Biraz bekleyelim tekrar bakalım; Evet çok güzel oldu gerçekten. Artık bizimde bir Custom Web controlümüz var. Bu makalemizinde de sonuna geldik. Tesekkür eder iyi çalısmalar dilerim. Sem GÖKSU MCP | MCAD.NET | MCTS | ASP.NET MVP Örnek Kodlar için mail adresimi kullanabilirsiniz semgoksu@semgoksu.com Kaynaklar www.codeproject.com
07 Mar 2007 AJAX'ı Sunucu da çalıştırmak... Kategori: Yazılım Etiketler: ASP.NETASP.NET Ajax 12 Yorum Egerki sunucunuzda ajax kurulu ise hiç bir sorun olmadan AJAX uygulamalarını çalıstırabilirsiniz. Eger kurulu degilse; Ajax tabanlı bir web Projesi açılır.. Ajax tabanlı bir proje degilse web configi düzenleyelelim Projenin referanslarına AJAX Extension eklenir..(Microsoft ASP.NET 2.0 AJAX Extensions Toolbox Package) System.Web.Extensions.Design.dll ve System.Web.Extensions.dll projeye eklenir... Bu sekilde sunucu üzerinde ajax kurulu olmasa bile AJAX uygulamarını çalıstırabilirsiniz..
06 Mar 2007 VISTA'da Visual Studio 2003 Çalışıyor... Kategori: Yazılım Etiketler: Visual StudioWindows 1 Yorum VISTA'yı kurdum ama bir baktım Visual Studio 2003 çalısmıyor. Yaptıgım arastırmalarda çalıstırmanın 2 yolu var. Birincisi Virtual PC kurmak ve virtual PC'de kullanmak. Ikincisi de. Administrator ile login olalım Kendi kullanıcı adımızı Adminstrator grubuna dahil edelim Visual Studio'yu açarken sag tusa tıklayalım ve "Run as Administrator"'ü seçelim. Daha Fazla Bilgi için Tıklayınız
06 Mar 2007 AJAX SlideShow Extender Kategori: AJAX Etiketler: ASP.NETASP.NET Ajax 4 Yorum Merhaba arkadaşlar, bu makalemizde ajax control toolkit’in nesnelerinden Ajax SlideShow Nesnesini ve özelliklerini ele alacağız... Açıklama Slideshow extender resimleri slayt olarak göstermemize yarayan ajax nesnesidir. Sayfamıza ekleyecegimiz butonlar ile slaytı baslatabilir ve resimler arasında gezinebilirsiniz. Slaytı otomatik baslatabilir ve resimler arasında dönmek için nesnemizi konfigüre edebiliriz. Resimlerimizi göstermek için bir web servisi yada slide show için image destekleyen bir metod kullanabiliriz. Slideshow 3 sn'de bir bir sonraki resmi açar. Eger sona gelmisse yeniden ilk resme döner. Bu kontol ile aynı windows uygulamalarındaki gibi resimleri slayt seklinde izleyebiliriz. Ayrıca we sayfalarımızda çok daha sık fotogaleriler olusturabiliriz. Kullanımı Özellikleri · SlideShowServiceMethod - AjaxControlToolkit.Slide döndüren bir Web servisi çagırır. Bu web servisi resimlerin pathini ve diger bilgilerini içerir. Örnek web servisi [System.Web.Services.WebMethod] [System.Web.Script.Services.ScriptMethod] public AjaxControlToolkit.Slide[] GetSlides() { ... } · SlideShowServicePath - Resimler ile ilgili bilgileri döndürecek olan web servisinin adı. · NextButtonID - Bir sonraki resme geçmek için kullanılacak olan button'un ID'si · PlayButtonID - Slaytı baslatmak için kullanılacak olan button'un ID'si · PreviousButtonID - Bir önceki resme geçmek için kullanılacak olan button'un ID'si · PlayButtonText - Slayt basladıgında baslat butonuna verilecek olan text'in özelligi. · StopButtonText - Slayt durduruldugunda durdur butonuna verilecek olan text'in özelligi. · PlayInterval - Slayt için resimler arasındaki geçis süresi. · ImageDescriptionLabelID - Resimlerin bilgilerini görüntülemek için kullanılacak olan Label'in ID'si · Loop - Degeri True ise Resimlerin sürekli dönmesini saglayan özellikdie. · AutoPlay - Degeri True ise Sayfa açıldıgında slayt otomatik olarak çalısır. Kontrolümüz ile ilgili bilgileri aldıktan sonra bir örnek yapalım. Sizlerden gelen feedback'ler dogrultusunda bu makalede basit bir örnek ile konuyu pekistirecegim. Örnek: Örnegimizde basit bir image galeri olusturup bu extender'i kullanacagız. Bunun için ilk olarak yeni bir Ajax Web Site olusturalım. Projemizi olusturduktan sonra sayfamıza sayfamıza 3 adet buton, 1 image, 1 label ve 1 de slideshow extender'i ekleyelim. Simdi bize resimleri saglayacak olan web servisini yazalım. Bunun için sayfamıza yeni bir web servisi ekleyebiliriz ama ben aynı sayfada static bir servis yazıp onu kullanacagım. [System.Web.Services.WebMethod] [System.Web.Script.Services.ScriptMethod] public static AjaxControlToolkit.Slide[] GetSlides() { return new AjaxControlToolkit.Slide[]{ new AjaxControlToolkit.Slide("SlidePictures/1.jpg", "XP Theme 1", "XP Theme 1"), new AjaxControlToolkit.Slide("SlidePictures/2.jpg", "XP Theme 2", "XP Theme 2"), new AjaxControlToolkit.Slide("SlidePictures/3.jpg", "XP Theme 3", "XP Theme 3"), new AjaxControlToolkit.Slide("SlidePictures/4.jpg", "XP Theme 4", "XP Theme 4"), new AjaxControlToolkit.Slide("SlidePictures/1.jpg", "XP Theme 5", "XP Theme 5")}; } Olusturdugumuz bu web servis bize Slaytta kullanacagımız resimlerin bilgilerini saglıyor. Simdi Slideshow kontrolünün özelliklerini yazalım. Simdi bu örnegi test edelim. Simdi ileri diyelim. Iste çok isimize yarayacak bir kontrol daha J Bu makalenin de sonuna geldik, baska bir makalede görüsmek üzere basarı ve iyi günler dilerim. Not: Ajax Sample Site'daki örnekleri incelemeniz size daha farklı fikirler verecektir. Sem GÖKSU MCP | MCAD.NET | MCTS | ASP.NET MVP Örnek Kodlar için mail adresimi kullanabilirsiniz semgoksu@semgoksu.com Kaynaklar http://ajax.asp.net