17 Mar 2009 C# 4.0 Optional Parameters(Opsiyonel Parametre) Kullanımı Kategori: Yazılım Etiketler: Visual StudioC# 4.0C# 3 Yorum Visual Basic'de en beğendiğim özelliklerden biri metot ve fonksiyonlar da opsiyonel parametre tanımlanabilmesydi. C# 4.0 ile birlikte artık C# da da optional parametre kullanabileceğiz. (Biraz geç kalındı sanırım :))Optional bir parametre tanımlayabilmek için metot parametrelerine ilk değerini vermemiz yeterli oluyor. private static void Topla(int a = 20, int b = 15, int c = 100) // Optional parametrelere ilk değerlerini vermek zorundayız. Eğer vermezsek optional olarak kullanamıyoruz.{ Console.WriteLine(a + b + c); } private static void Selamla(string isim = "İsimsiz Kahraman"){ Console.WriteLine("Selam => " + isim);} static void Main(string[] args){ Console.WriteLine("C# 4.0 öncesi"); // Tüm parametreler için değer gönderilmesi zorunluydu... Topla(10, 20, 30); Console.WriteLine("C# 4.0 ile Named and Optional Parametre kullanımı"); Topla(b:10, c: 30); // C# 4.0 ile birlilkte hangi parametreleri kullanacağımızı biz belirliyoruz. B ve C Parametrelerin isimlerini kullanarak değerlerini atadık. Console.WriteLine("---------------------------------------------------------"); Console.WriteLine("C# 4.0 öncesi"); Selamla("Sem GÖKSU"); // Parametre gönderilmesi zorunluydu... Console.WriteLine("C# 4.0 ile Optional Parametre kullanımı"); Selamla(); // C# 4.0 ile birlilkte eğer bir parametre optional ise o parametreyi metoda göndermek zorunda değiliz, Bu durumda parametrenin default değeri neyse ona göre işlem yapılacaktır..} Ekran ÇıktısıC# 4.0 öncesi60C# 4.0 ile Named and Optional Parametre kullanımı60---------------------------------------------------------C# 4.0 ÖncesiSelam => Sem GÖKSUC# 4.0 ile Optional Parametre kullanımıSelam => İsimsiz Kahraman
09 Mar 2009 ASP.NET Data Kontrolleri İçin Sayfalama Kontrolü Kategori: ASP.NET Etiketler: ASP.NETASP.NET 2.0 14 Yorum Merhaba arkadaşlar, bu makalemiz de repeater, datalist, gridview gibi data kontrollerinde kullanabileceğimiz kişiselleştirilebilir sayfalama kontrolü hazırlayacağız.Web uygulamalarında verileri listelerken verinin tamamını listelemek hem sayfanın görünümü hem de performansını olumsuz yönde etkiler. Bunun için verilerin kullanıcıya hepsi yerine belli bir kısmı gösterilir. Geri kalan kısmı ise sayfalar halinde gösterilir. Gridview kontrolü içerisinde yer alan sayfalama özelliği hızlı bir çözüm olduğu için avantajlı görünse de verinin tamamını bellekte tutup bellek üzerinde veriyi sayfaladığı için performans açısından dezavantajlıdır. Datalist ve Repeater kontrollerinin sayfalama özelliği olmadığını düşünürsek kendimiz bu kontroller için sayfalama kontrolü geliştirmek zorundayız. İlk olarak yeni bir ASP.NET projesi oluşturalım. Sayfalama kontrolümüzü bir UserControl içerisinde oluşturacağız. Bunun için bir Paging.ascx adında yeni bir UserControl ekleyelim. Paging.ascx’e bir div ve div’in içine de sadece Label ekleyelim. Sayfa da oluşacak linkler içinde düzgün görünmesi açısından css yazalım. [Paging.ascx]<style type="text/css"> .sayfalama .text{background-color:blue;color:Yellow;text-decoration:none;margin:1px;padding:5px;font-family:Lucida Sans Unicode;font-size:12px;text-align:center;} .sayfalama a:link{background-color:navy;color:Yellow;text-decoration:none;margin:1px;padding:5px;font-family:Lucida Sans Unicode;font-size:12px;text-align:center;} .sayfalama a{background-color:navy;color:Yellow;text-decoration:none;margin:1px;padding:5px;font-family:Lucida Sans Unicode;font-size:12px;text-align:center;} .sayfalama a:hover{background-color:blue;color:Yellow;text-decoration:none;margin:1px;padding:5px;font-family:Lucida Sans Unicode;font-size:12px;text-align:center;}</style> <div class="sayfalama"><asp:Label ID="lblPaging" runat="server" Text="Label"></asp:Label></div> Sayfa da görüntüleyeceğimiz veri içinde bir store procedure yazalım. Store procedure içerisinde SQL Server 2005 ile birlikte gelen Row_Number fonksiyonunu kullanarak her bir kayıt için satır numarası oluşturulmasını sağlayacağız. [SP]Use AdventureWorksgocreateProc GetProductSubCategories@AktifSayfa int, -- Aktif olan sayfayı alacağımız parametre@ToplamKayitSayisi int output – Toplam kayıt sayısını geri döndüreceğimiz parametre AS--Değişkenlerdeclare @IlkKayit int ;declare @SonKayit int ;declare @SayfaSayisi int; set @SayfaSayisi = 10; -- Bir sayfada gösterilecek olan sayfa sayısıset @SonKayit = @SayfaSayisi * @AktifSayfa; @IlkKayit = @SonKayit - @SayfaSayisi + 1; select @ToplamKayitSayisi = count(*) from Production.ProductSubcategory; --Toplam sayfa sayısı hesaplandı with tProductSubcategoryas(Select ROW_NUMBER () over (order by ProductSubCategoryID DESC) SatirNo, * from Production.ProductSubCategory) Select * from tProductSubcategoryWhere SatirNo between @IlkKayit AND @SonKayit Veri kaynağımızı hazırladıktan sonra sayfa numaralarını ekranda gösterebilmek için Paging.ascx.cs içinde bir metot yazalım. [Paging.ascx.cs]public void Sayfala(int AktifSayfa, int ToplamKayitSayisi, string AktifDizin){ lblPaging.Text = ""; //Sayfa her açıldığında label temizleniyor int ToplamSayfaSayisi = 0; // Sayfa sayısı hesaplanıyor if ((ToplamKayitSayisi % 10) == 0) { ToplamSayfaSayisi = ToplamKayitSayisi / 10; } else { ToplamSayfaSayisi = (ToplamKayitSayisi / 10) + 1; } if (AktifSayfa != 1) //Eğer 1. Sayfada değilsek ilk sayfaya dön linki oluşturulacak { lblPaging.Text += "<a href='" + AktifDizin + "Page=1'>«</a>";//AktifDizin parametresi ile gelen sayfanın pathine göre link oluşturulacak } for (int i = 1; i <= ToplamSayfaSayisi; i++) //Sayfalar ekrana bastırılıyor { if (AktifSayfa != i) { lblPaging.Text += "<a href='" + AktifDizin + "Page=" + i.ToString() + "'>" + i.ToString() + "</a>"; //AktifDizin parametresi ile gelen sayfanın pathine göre link oluşturulacak } else//Aktif sayfa linksiz görünsün { lblPaging.Text += "<span class='text'>" + i.ToString() + "</span>"; } } if (AktifSayfa != ToplamSayfaSayisi)//eğer son sayfada değilsek son sayfaya git linki oluşturulacak { lblPaging.Text += "<a href='" + AktifDizin + "Page=" + ToplamSayfaSayisi+ "' >»</a>"; } } Artık her şey hazır, sayfamızda görüntülemek için yukarıda yazdığımız SP’i kullanarak verileri çekelim ve sayfalama kontrolümüze ilgili parametreleri yollayalım. İlk olarak sayamıza bir DataList kontrolü e oluşturduğumuz Paging isimli UserControl’den bir tane ekleyelim. DataList’i biraz düzenleyelim; [Default.aspx]<%@Register Src="Paging.ascx" TagName="Paging" TagPrefix="uc1" %><asp:DataList ID="dlProducts" runat="server" CellPadding="4" ForeColor="#333333"Width="432px"><Footer Style BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /><AlternatingItem Style BackColor="White" ForeColor="#284775" /><Item Style BackColor="#F7F6F3" ForeColor="#333333" /><SelectedItem Style BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /><Header Style BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /><Item Template><%#Eval("Name") %></Item Template></asp:DataList><br/><uc1:Paging ID="Paging1" runat="server" /> Şimdi ilgili sayfada kayıtları görüntülemek için gerekli metodu yazalım. [Default.aspx.cs]public void UrunleriGetir(int AktifSayfa, string SayfaDizin){ SqlConnectioncnn = new SqlConnection("server=.; DataBase=AdventureWorks; Uid=sa; pwd=sa12345"); SqlCommandcmd = new SqlCommand("GetProductSubCategories", cnn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@AktifSayfa", SqlDbType.Int).Value = AktifSayfa; cmd.Parameters.Add("@ToplamKayitSayisi", SqlDbType.Int).Direction = ParameterDirection.Output; SqlDataAdapterda = new SqlDataAdapter(cmd); DataTabledt = new DataTable(); da.Fill(dt); dlProducts.DataSource = dt; dlProducts.DataBind(); intToplamKayitSayisi = (int)cmd.Parameters["@ToplamKayitSayisi"].Value; Paging1.Sayfala(AktifSayfa, ToplamKayitSayisi, SayfaDizin); //Paging kontrolü için yaptığımız public metoda parametrelerini gönderiyoruz}public int AktifSayfa { get; set; } //Aktif sayfa için propertyprotected void Page_Load(object sender, EventArgs e){ if(Request.QueryString["Page"] != null) //Page isimli Querystring’i kontro ediyoruz { AktifSayfa = Convert.ToInt32(Request.QueryString["Page"]); } else { AktifSayfa = 1;//QueryString null ise default olarak 1 değerini atıyoruz UrunleriGetir(AktifSayfa, "Default.aspx?"span>); } }Testimizi yapabiliriz;Kaynak kodları indirmek için tıklayınızMakalenin sonuna geldik, başka bir makalede görüşmek üzere. .NET ile kalın ;) Sem GÖKSU www.semgoksu.com | www.yazilimgunlugu.com sem.goksu@yazilimgunlugu.com
04 Mar 2009 Yerli web geliştirme platformu Kategori: Yazılım Etiketler: Yazılım 0 Yorum Türkiye'de üretilmiş ama adı yeterince duyulmamış bir yazılımdan bahsedeceğim. Yazılımın adı Moremotion Aplication Studio. Daha önce bildirgec'de 2002 yılında burada, 2003 yılında da buradakonu olmuş. Ama o zaman daha çok gelişme aşamasında olduğu için fazla ilgilenen olmamış. O günden bu yana Mor Yazılımfirması boş durmamış ve sistemi sürekli olarak geliştirmeye devam etmiş. Moremotion A.ş, Java tabanlı olarak geliştirilen Moremotion framework'ü üzerinde açık kaynak kodlu web uygulamaları geliştirme ortamı sunuyor. Diğer geliştirme ortamlarından farklı olarak XML/XSL teknolojileri kullanılarak Java tabanlı web uygulamalarını çok kısa sürelerde çoğu zaman tek satır kod yazmadan geliştirebilirsiniz. Özellikle Ajax uygulamalar için de hazır araçlar entegre olarak bulunuyor. Tam olarak tasarım ekranında ne görürseniz onu alıyorsunuz.Programın yardım dökümanları oldukça detaylı ve Türkçe. Sadece yardım dökümanlarını okuyarak gelişmiş uygulamalar yapılabilir. Kod yazarak yazılım üretenlere pek cazip gelmeyebilir ama kodlarla pek uğraşmak istemeyenler için biçilmiş kaftan. Lafı daha fazla uzatmadan sizi aşağıdaki linklere davet ediyorum.Mor Yazılım Ana SayfaMormotion ÖzellikleriForumTanıtım VideolarıDownloadAlıntıdırhttp://www.bildirgec.org/yazi/yerli-web-gelistirme-platformu
02 Mar 2009 Silverlight TabControl Kontrolü Kategori: Silverlight Etiketler: Silverlight 2Silverlight 0 Yorum Merhaba arkadaşlar bu makalemiz de Silverlight kontrol kütüphanesinde bulunan TabControl kontrolünü inceleyeceğizTabControl, Windows ve Web uygulamalarındaki gibi diğer kontrollere konteynır’lık eder ve form üzerinde ki diğer kontrollerin sekmeler içerisinde gösterilmesini sağlar. Kontrolü inceleyecek olursak içerisinde Tab’ler oluşturabilmemiz için TabItem türünden bir koleksiyon var. Bu sayede ister Expression Blend de istersek de dinamik olarak kod ile Tab’ler oluşturabiliyoruz. Yeni bir Silverlight projesi başlatalım ve TabControl’ü projemiz de kullanalım. Projeyi başlattıktan sonra “Asset Library” den bir adet TabControl ekleyelim.Yeni tab’ler oluşturmak için TabControl’in Common Properties sekmesinde bulunan Items Sekmesine tıklayalım.Sonrasında açılan pencerede “Show System Assemblies” seçeneğini işaretleyip search ekranına TabItem yazıp gelen ekrandan TabItem’ı seçelim.Ben 3 tane TabItem ekledim. Oluşan XAML kodunu inceleyecek olursak;<UserControl xmlns:basics="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"x:Class="TabPanelControl.Page" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="400" Height="300"> <Grid x:Name="LayoutRoot" Background="White"> <basics:TabControl x:Name="tabPanel"> <basics:TabItem Header="1. Sekme"></basics:TabItem> <basics:TabItem Header="2. Sekme"></basics:TabItem> <basics:TabItem Header="3. Sekme"></basics:TabItem> </basics:TabControl></Grid></UserControl>Aynı işlemi dinamik olarak da yapalım. Yeni bir event listener oluşturalım ve bu event içinde de yeni TabItem’ı TabControl’e ekleyelim.public Page(){ InitializeComponent(); this.Loaded += new RoutedEventHandler(Page_Loaded);}voidPage_Loaded(object sender, RoutedEventArgs e){ tabPanel.Items.Add(new TabItem() { Header ="Dinamik Tab" });}Son haline bakacak olursak aşağıdaki gibi oldu.TabItem’ın header özelliğinde text dışında başka bir kontrol yada herhangi bir Layout Kontrolünü(Canvas, Grid, StackPanel) kullanarak başka kontroller de ekleyebiliyoruz. Layout kontrolü kullanmayacaksak sadece bir tane UIElement kontrolü ekleyebiliyoruz. <basics:TabControl x:Name="tabPanel" SelectionChanged="tabPanel_SelectionChanged"><basics:TabItem> <basics:TabItem.HeaderTemplate> <DataTemplate> <Grid> // Layout kontrolü içerisinde istediğimiz kadar kontrol ekleyebiliriz… <Rectangle Width="30"Height="30" Fill="Red"></Rectangle> <TextBlock>Selam</TextBlock> </Grid> </DataTemplate> </basics:TabItem.HeaderTemplate> <TextBlock>Birinci Sekme</TextBlock></basics:TabItem><basics:TabItem> <basics:TabItem.HeaderTemplate> <DataTemplate> <Ellipse Width="30" Height="30" Fill="Red"></Ellipse> //Sadece bir tane kontrol ekleyebiliriz… </DataTemplate> </basics:TabItem.HeaderTemplate> <TextBlock>İkinci Sekme</TextBlock></basics:TabItem></basics:TabControl>Kontrolün çok işimize yarayacak SelectionChanged isimli bir eventi var. Bu event tablar arasında gezinirken yani bir tab’den diğer tab’e geçerken çalışır. Örneğin tab değiştiğinde TabControl’e bir animasyon verebilirsiniz... Örnek kullanımı aşağıdaki gibidir.<basics:TabControl x:Name="tabPanel" SelectionChanged="tabPanel_SelectionChanged"></basics:TabControl>private void tabPanel_SelectionChanged(object sender, SelectionChangedEventArgs e){ MessageBox.Show("Tab değişti...");}Makalenin sonuna geldik, başka bir makalede görüşmek üzere. .NET ve Silverlight ile kalın ;) Sem GÖKSU www.semgoksu.com | www.yazilimgunlugu.com sem.goksu@yazilimgunlugu.com Kaynaklar msdn.comsilverlight.net
27 Şub 2009 YazilimGunlugu.Com ve Yapi.Com.Tr Hızlandırıcılar IE Add-On Sitesinde... Kategori: Yazılım Etiketler: Yazılım Günlüğü 0 Yorum YazilimGunlugu.Com ve Yapi.Com.Tr için hazırlanılan hızlandırıcılar, IE Add-On sitesinde yayınlandı... Her ne kadar yapi.com.tr'nin hızlandırıcısını ben hazırlamasamda proje sorumlusu olarak çalıştığım dönem de çok emek verdiğim için onu da buradan duyurmak istedim. Sizde hızlandırıcıları kullanmak istiyorsanız aşağıdaki linki kullanabilirsiniz.http://www.ieaddons.com/tr/accelerators/?index=12&sort=Views&lang=tr&browse=true