ASP.NET – Code-Behind Property Kullanımı ile İlgili Teknik ve İpuçları

ASP.NET web sayfalarının arkaplan kodunda çoğu zaman Property ‘ler kullanırız. Fakat bu yapı, windows forms ile uygulama geliştirenler için anlaşılması biraz zor gelebilir. Çünkü farklı bir çalışma mekanizması söz konusudur. Bu sebeple bu durumda neler yapabileceğimizi ve property’leri nasıl kullanacağımızı anlatan bu video kaydını sizinle paylaşmak istiyorum. Ses biraz uğultulu çıkmış ama anlaşılmayacak kadar değil. 🙂 İlginizi çekeceğini düşündüğüm bazı teknikleride video da paylaştım.

 

http://content.screencast.com/users/MaviSeffaf/folders/Default/media/07c67139-b560-49de-bb5b-3a46bf7511e9/mp4h264player.swf

Videoyu idirmek için tıklayınız..

Reklamlar

FusionChart ile Grafik Oluşturma

Bu görsel dersimizde Fusion Chart aracını kullanarak görsel grafikler oluşturarak kullanıcıları cezbeden uygulamalar nasıl geliştirebileceğimizi anlatıyor olacağım. Basit bir uygulama ile Fusion Chart’ları nasıl kullanacağımızı ve uygulamalarımızda bu güzel grafikleri nasıl oluşturacağımızı anlatıyorum.

Fusion Chart aracının ücretsiz versiyonunu buradan indirebilirsiniz..

Video – 1

http://content.screencast.com/users/MaviSeffaf/folders/Default/media/9918070a-4b33-4639-9f9f-8fd54ed0075b/bootstrap.swf

Videoyu indir !

Video – 2

http://content.screencast.com/users/MaviSeffaf/folders/Default/media/7fc6615d-429f-45d8-b11b-bf278d2e9426/bootstrap.swf

Videoyu indir !

Uygulamanın form görünümü..

KODLAR

Form1.cs


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Xml.Linq;

using System.Text;

using System.Windows.Forms;

 

namespace LearnFusionChart

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

        private void CreateXML(DataGridView dgv)

        {

            XDocument xDoc = XDocument.Load(Application.StartupPath + "\\" + "FusionChartFiles" + "\\" + "Line2D.xml");

            XElement root = xDoc.Root;

 

            root.Elements().Remove();

 

            DataTable dt = dgv.DataSource as DataTable;

 

            root.Attribute("caption").Value = "Aylık Satışlarım";

            root.Attribute("subcaption").Value = "2009 Yılı için";

            root.Attribute("xAxisName").Value = "Aylar";

            root.Attribute("yAxisName").Value = "Satislar";

            root.Attribute("numberPrefix").Value = "TL";

            root.Attribute("yAxisMinValue").Value = dt.Compute("MIN(Satışlar)", null).ToString();

 

            foreach (DataRow dr in dt.Rows)

            {

                XElement element = new XElement("set",

                    new XAttribute("name", dr["Aylar"].ToString().Substring(0, 3)),

                    new XAttribute("value", dr["Satışlar"].ToString()),

                    new XAttribute("hoverText", dr["Aylar"].ToString()));

 

                root.Add(element);

            }

 

            xDoc.Save(Application.StartupPath + "\\" + "FusionChartFiles" + "\\" + "Line2D.xml");

            xDoc = null;

        }

 

 

        private void btnDataTableOlustur_Click(object sender, EventArgs e)

        {

            DataTable dt = new DataTable();

            dt.Columns.AddRange(

                new DataColumn[]

                {

                    new DataColumn("Aylar"),

                    new DataColumn("Satışlar")

                });

 

 

            Random rnd = new Random();

            DataRow dr = null;

 

            for (int i = 1; i <= 12; i++)

            {

                dr = dt.NewRow();

 

                dr["Aylar"] = DateTime.Parse("01." + i.ToString() + ".2009").AddMonths(0).ToString("MMMM");

                dr["Satışlar"] = rnd.Next(0, 100).ToString();

 

                dt.Rows.Add(dr);

            }

 

            this.dataGridView1.DataSource = dt;

        }

        private void btnGrafik_Click(object sender, EventArgs e)

        {

            this.CreateXML(this.dataGridView1);

 

            this.webBrowser1.Navigate(

                Application.StartupPath + "\\" + "FusionChartFiles" + "\\" + "Line2D.html");

        }

    }

}


Line2D.xml


<graph caption='Monthly Sales Summary' subcaption='For the year 2004'

       xAxisName='Month' yAxisMinValue='15000' yAxisName='Sales'

       decimalPrecision='0' formatNumberScale='0' numberPrefix='$'

       showNames='1' showValues='0'  showAlternateHGridColor='1'

       AlternateHGridColor='ff5904' divLineColor='ff5904' divLineAlpha='20'

       alternateHGridAlpha='5' >

   <set name='Jan' value='17400' hoverText='January'/>

   <set name='Feb' value='19800' hoverText='February'/>

   <set name='Mar' value='21800' hoverText='March'/>

   <set name='Apr' value='23800' hoverText='April'/>

   <set name='May' value='29600' hoverText='May'/>

   <set name='Jun' value='27600' hoverText='June'/>

   <set name='Jul' value='31800' hoverText='July'/>

   <set name='Aug' value='39700' hoverText='August'/>

   <set name='Sep' value='37800' hoverText='September'/>

   <set name='Oct' value='21900' hoverText='October'/>

   <set name='Nov' value='32900' hoverText='November' />

   <set name='Dec' value='39800' hoverText='December' />

</graph>


Line2D.html


<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>FusionCharts Free Documentation</title>

<link rel="stylesheet" href="../Contents/Style.css" type="text/css" />

<script language="JavaScript" src="../JSClass/FusionCharts.js"></script>

</head>

 

<body>

<table width="98%" border="0" cellspacing="0" cellpadding="3" align="center">

  <tr>

    <td valign="top" class="text" align="center"> <div id="chartdiv" align="center">

        FusionCharts. </div>

      <script type="text/javascript">

           var chart = new FusionCharts("../Charts/FCF_Line.swf", "ChartId", "600", "350");

           chart.setDataURL("Data/Line2D.xml");          

           chart.render("chartdiv");

        </script> </td>

  </tr>

  <tr>

    <td valign="top" class="text" align="center"> </td>

  </tr>

  <tr>

    <td valign="top" class="text" align="center"><a href="Data/Line2D.xml" target="_blank"><img src="../Contents/Images/BtnViewXML.gif" alt="View XML for the above chart" width="75" height="25" border="0" /></a></td>

  </tr>

</table>

</body>

</html>


Projeyi buradan indirebilirsiniz..

Resource Dosyaları Seviyoruz.. (.resx)

Resource dosya kullanarak neler yapabileceğinizi kısaca görmek istiyorsanız. Video dersini mutlaka izleyin derim. Resim, icon, string, ses dosyası ve diğer dosya türlerini projelerinizde kullanarak nasıl kolayca yönetebileceğinizi ve kem gözlerden saklayarak güvenli bir uygulama oluşturabileceğinizi görün..

Herkese iyi seyirler..

http://content.screencast.com/users/MaviSeffaf/folders/Default/media/e62d15be-b198-4369-be98-758188780736/bootstrap.swf

Proye dosyası için tıklayınız..

Çalışma Zamanında Data Table Kullanma..

Bir DataTable(VeriTablosu) çalışma zamanında nasıl oluşturulur. Kolonlarının oluşturulması ve eklenmesi, satırlarının oluşturulması ve hücrelerine değerlerin girilerek satırların tabloya eklenmesi gibi..

Statik, kod tarafından kolon ve satırların inşa edildiği bir veri tablosu oluşturulması..

Dinamik, program çalışırken kolon ve satırların inşa edildiği bir veri tablosu oluşturulması..

http://content.screencast.com/users/MaviSeffaf/folders/Default/media/a2b9ebe8-b3f8-4b3c-bf82-94c533bc4a9c/bootstrap.swf

Video dosyasını indirmek için tıklayınız..

Proje Dosyası :
http://cid-f2e617aff724ee2b.skydrive.live.com/embedicon.aspx/Video%20Derslerim/DataTable/LearnDataTableSolution.rar

VideoDers – Event Handling..

Bloğumu takip edenlere işte bomba gibi bir video dersi paylaşımı daha. Bu bunun gibi video dersleri ilerleyen günlerde, arayı fazla soğutmadan 😉 yayınlamaya devam edeceğim. Bu video dersimizde olay oluşturma, olayları kullanarak daha yönetilmesi ve izlenmesi kolay kod geliştirmeyi anlatıyorum. Sizin içinde çok faydalı olacağına inanıyorum.. Lütfen yorumlarınızı yazmayı unutmayın ! 🙂

http://content.screencast.com/users/MaviSeffaf/folders/Default/media/45dd8310-34c0-47c4-bede-b817a6843f7a/bootstrap.swf

Video Dersi indirmek için tıklayınız..

Proje dosyası :

http://cid-f2e617aff724ee2b.skydrive.live.com/embedicon.aspx/Video%20Derslerim/EventHandling/LessonEventHandlingSolution.rar

C# – Plugin Tabanlı Uygulama Geliştirme Part – 2

Daha önce yayınladığım “C# – Plugin Tabanlı Uygulama Geliştirme Part – 1” makalesinin ikinci bölümüyle tekrar buradayız.

Bu bölümde, kullanıcıya uygulamamıza geliştireceği eklenti üzerinde daha çok işlem yapabilmesini, daha fazla noktaya erişebilmesini nasıl sağlarız buna bakacağız. Tabii bu şekilde bir eklenti geliştirebilme desteği vermek bazı problemleri de beraberinde getiriyor. Örneğin, güvenlik gibi.. Fakat zaten bölüm – 1 ‘deki makalemizde de belirttiğimiz gibi, bölüm – 1 de kısıtlamalı eklenti geliştirme yetkisi vermemize rağmen, mutlaka bir şekilde kötü amaçlı kod yazılabilir. Zaten piyasadaki eklenti desteği veren uygulamalarda görüyoruz ki, 3.kişilerin geliştirdiği eklentileri yüklerken, güvenlik ile ilgili konuda ucu açık bırakılıyor. Zararlı olabileceği de belirtiliyor fakat biz güvenip kullanıyoruz. Tabii hepsi kötü amaçlı diye birşey yok. Sadece olabilir !

Bölüm – 1 ‘de kısıtlamalı yaptığımız yapıyı, burada daha esnek bir şekilde kullanıcıya sunarak, uygulamamıza daha güçlü eklenti geliştirebilirlik katacağız.

1 saatlik video anlatımın hoşunuza gideceğini düşünüyorum..
İyi seyirler..

Uygulama videosu :
http://cid-f2e617aff724ee2b.skydrive.live.com/embedrowdetail.aspx/Video%20Derslerim/Add-In%20Tabanli%20Uyg.%20Gelistime/Part%7C_2/Plugin%20Tabanl%c4%b1%20Uygulama%20Geli%c5%9ftirme%20B%c3%b6l%c3%bcm%202.rar

Proje dosyası :
http://cid-f2e617aff724ee2b.skydrive.live.com/embedrowdetail.aspx/Video%20Derslerim/Add-In%20Tabanli%20Uyg.%20Gelistime/Part%7C_2/PluginSolutionWithUserControl.rar

C# – File Info Writer (Dosya Bilgi Yazıcı)

Hoşgeldin düzen, rahatlık, kolaylık 🙂 Belki bu kelimeler ilk satırda birşey ifade etmiyor ama ilerleyen satırlarda çok anlam ifade edeceğine inanıyorum. Bir süredir üzerinde çalıştığım bir uygulamayı dün akşam itibariyle bitirmenin mutluluğunu yaşıyorum. Peki ne mi bu uygulama? Aslında isminden az çok belli olsada bu uygulamayı tam anlatmaya yetmiyor..


Bir klasör hiyerarşisi yazıcısı, kaydedicisi 🙂 Peki bu ne demek. Aslında uygulamanın yaptığını kısaca anlatsam daha mantıklı olacaktır. File Info Writer uygulaması ile seçtiğiniz bir klasör’ün tüm alt klasör ve dosyaları ile hiyerarşisini ekranda ağaç yapısında görebildiğiniz bir uygulama.


Peki gördükte ne oldu zaten klasörü açıyorum ve görüyorum 🙂 dediğinizi tahmin ediyorum. Aslında bu uygulamayı geliştirmemdeki amaç veri depolamamda bana yardımcı olması içindir. Şöyle ki gerek bilgisayarımda olsun(hard disk’im full dolmuş :)) gerekse de cd çantamda olsun. Bir sürü cd ve hatta dvd var. Bir süre sonra hangi cd ya da dvd ‘de hangi uygulamalarınızın olduğunu unutmaya başlıyorsunuz. Cd ya da dvd ‘yi takıp içine bakmak ise üşengeçlik hattını aşamadığınızdan pek hevesli gelmiyor. Hadi bu hattı aştınız diyelim. Peki bir sürü cd ya da dvd ‘den kaç tanesine bakacaksınız. Bu iş zamanla sinir ,stres oranını biraz arttırıyor. 🙂 Bu konuda kendime kolaylık getirmesi açısından bir uygulama geliştirmeye karar verdim ve sonunda bu ürün çıktı.


Uygulama, yukarıda da belirttiğim gibi seçtiğiniz bir klasör’ü içindeki klasör ve dosya hiyerarşisi ise bir ağaç yapısında görüntülemenizi sağlıyor. Bu yapıyı, bir “açıklama” yazısı ile uygulamanın veritabanına kaydedebiliyorsunuz. Sonradan bu klasör’ü cd ya da dvd ‘ye yazdırdığınızda bu “açıklama” ifadesini cd ya da dvd yüzeyine yazaraktan, cd ya da dvd ‘yi etiketlemiş oluyorsunuz. Bundan sonra ise çantaya attığınız bu cd ya da dvd ‘yi çantaya uğramadan 🙂 içinde hangi dosyaların olduğunu hatta hangi klasör altında olduğuna kadar görebiliyorsunuz. Verdiğiniz “açıklama” ifadeleri ile istediğiniz kadar cd ya da dvd içeriğini uygulama veritabanına atabilirsiniz. Sonra da arama kısmını kullanarak, aradığınız dosyaların hangi “açıklama”(etiketli) cd ya da dvd ‘de olduğunu görebilirsiniz.


Buraya kadar herşey güzel ve benim sorunlarımı bir nebze olsa rahatlatıyor. Ama benim istediğim daha fazlasıydı 🙂 Bu nedenle daha çok özellik ekledim. 🙂 Bunlardan biri şu ki, mesela bu program yok ve elimde cd ya da dvd çantam var. Peki ben nasıl bileceğim. Hangi cd ya da dvd’imde aradığım uygulamanın olduğunu, tabii burada cd ya da dvd ‘ye verdiğiniz etiket(isim) bir yere kadar tahmin etmenizi sağlayabilir. Fakat birden fazla “Program Arşivi” ismiyle etiketlediğiniz cd ya da dvd ‘lerinizde hangisinde hangi uygulamanın olduğunu nereden hatırlayacaksınız. Tabii bu benim gibi bol bol uygulama kullananlar için geçerli 🙂 İşte bunu da düşünerek uygulamaya bir de WORD dökümanına, seçili klasör hiyerarşisini yazan bir özellik ekledim. Bu işlem ile görüntülediğiniz klasör hiyerarşisini bir Word dökümanına aktarabiliyorsunuz. Bu aktarma sonrasında ise, size sadece “Yazdır” demek kalıyor. Word dökümanını yazdırıp cd çantanızda cd ya da dvd nizin yanına koyabilirsiniz. 🙂 Bu da benim sorunlarımı tamaiyle çözüyor.


Eklediğim ufak birkaç özellik daha mevcut bunlar;

  1. Kaydettiğiniz hiyerarşilerden istediğinizi kaldırabilmeniz.
  2. Kaydettiğiniz hiyerarşilerden istediğiniz dosya ya da klasör bilgisini kaldırabilmeniz.
  3. Veritabanı verilerinizin tümünü silebilmeniz.
  4. Kaydettiğiniz tüm hiyerarşilerin grafiğini ve hangisinde kaç dosya olduğunu görebilmeniz.
  5. Veritabanı yedeğini alabilmeniz.

Ayrıca uygulama tamamen açık kaynak kodludur. Yani yazılım ile ilgilenen arkadaşlar içinde eğitici ve üzerinde değişiklik yapıp yeni özellikler ekleyip çıkarabilecekleri bir şekilde aşağıdan indirebilirsiniz.

Uygulama Kaynak Kodları :

http://cid-f2e617aff724ee2b.skydrive.live.com/embedrowdetail.aspx/Video%20Derslerim/Applications/FileInfoWriterSolution.rar


Uygulamanın Setup Dosyası :
http://cid-f2e617aff724ee2b.skydrive.live.com/embedrowdetail.aspx/Video%20Derslerim/Applications/FileInfoWriterInstaller.rar


Uygulamayı Anlatan Video :
http://cid-f2e617aff724ee2b.skydrive.live.com/embedrowdetail.aspx/Video%20Derslerim/Applications/FileInfoWriter.wmv