Tags: , | Categories: IDE, Tanıtım Posted by okutbay on 16.01.2009 12:34 | Yorumlar (0)

Blog yapan yazılımcının dostu araçlardan olan CSAH (Copy Source As Html) bir Visual Studio 2008 eklentisi...

Eklenti yazdığınız kodlar için html ve stilleri oluşturuyor. Böylece web sitenizde ekstra çaba sarfetmeden kaynak kodunuzu internette IDE'nizde göründüğü gibi sunabiliyorsunuz.

Eklentinin 3.0 versiyonu yayınlanmış. 2.0 da yapamadığımız HTML bölümde yer alan kodları alamıyorduk... Bu özellik yeni versiyonda eklenmiş... Kurulum bilgileri, kullanım ve eklentiyi indirmek için aşağıdaki bağlantıyı takip edebilirsiniz...

http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , | Categories: Programlama, Web Uygulaması Posted by okutbay on 25.12.2007 14:29 | Yorumlar (0)
Bazı durumlarda kendine has HTML kodları üreten kontrollere ihtiyaç duyabiliriz. Bunun için mevcut kontrollerden veya mevcut kontrollerin miras yoluyla türetildiği webcontrol (System.Web.UI.WebControls.WebControl) sınıfından kendi kontrollerimiz türetme yoluna gidebiliriz.

Bu işleme başlamak için öncelikle bir sınıf kütüphanesi projesine ihtiyacımız var. Bu projemizin adı "MyControl" olsun.

Sonraki adımda kontrolümüzün adını taşımasını istediğimiz bir sınıf dosyasını projemize eklememiz gerekecektir. Diyelim ki bu sınıfımızın adı da "BasitKontrol" olsun.

Bu kontrolümüz basitçe bir özellik ile verilen metni ekrana yazdıran bir kontrol olsun. Bu işi yapan label kontrolü var dediğinizi duyar gibiyim. Evet öyle bir kontrol var ama basit güzeldir...

    1 using System;

    2 using System.Collections.Generic;

    3 using System.Text;

    4 

    5 namespace MyControl

    6 {

    7     class BasitKontrol

    8     {

    9     }

   10 }

 
Gerekli olan isim alanlarını ekleyelim, gereksiz olanları çıkartalım. Sonuç olarak senaryomuz için gerekli using ifadeleri şöyle oluşacaktır

    1 using System;

    2 using System.Web.UI;

    3 using System.Web.UI.WebControls;

    4 using System.ComponentModel;


Sınıf tanımını yapan kod satırında görüldüğü üzere varsayılan sınıf erişimcisi private olduğundan bu sınıf dışarıdan erişilebilir bir sınıf olmayacaktır. Erişilebilir kılmak için sınıfımızı "public" olarak işaretleyelim

    1 public class BasitKontrol

    2 {

    3 }


Artık bu sınıf dosyası için şu adımları takip ederek kontrolümüzü oluşturmaya başlayabiliriz...

Öncelikle ihtiyacımız olan özelliklere göre sınıfımızın hangi kontrol sınıfından miras alacağını belirtmemiz gerekmekte.

    1 public class BasitKontrol : System.Web.UI.WebControls.WebControl


Sonra sınıfa ait ayarlanması gereken "DefaultProperty" ve "ToolboxData" attribute değerleri ayarlanmalıdır.

Not: İlgili attribute değerlerinin hemen sınıf tanımı üzerinde yapılması gerektiğini unutmayın


    1 [DefaultProperty("Text"), ToolboxData("<{0}:BasitKontrol runat=server>")]

    2 public class BasitKontrol : System.Web.UI.WebControls.WebControl

    3 {

    4 }


Artık kontrolde kullanacağımız özellik (property) ve özel veri alanı (private data field) tanımını yapabiliriz. Bu tanımı yaparken özelliğin Visual Studio 2005 "Properties (F4)" penceresinde ne şekilde görüneceği ile ilgili attribute değerlerini ayarlamam gerekecek.

    1 private string metin;

    2 

    3 [Bindable(true), Browsable(true), Category("Appearance"), DefaultValue(""), Description("Gösterilecek metin...")]

    4 public string Metin

    5 {

    6     get { return metin; }

    7     set { metin = value; }

    8 }

 

 
Bu aşamada webcontrol sınıfının (ya da bu sınıftan türetilmiş sınıfların) HTML çıktıyı biçimlendirmek, oluşturmak için kullandığı "Render" metodunu tekrar kodlayacağız.

    1 protected override void Render(HtmlTextWriter output)

    2 {

    3     output.Write(this.metin);

    4 }

 

 
Böylece kontrol tanımının sonuna gelmiş oluyorum. Sonunda elinizdeki kod şöyle birşeye benzemeli

    1 using System;

    2 using System.Web.UI;

    3 using System.Web.UI.WebControls;

    4 using System.ComponentModel;

    5 

    6 namespace MyControl

    7 {

    8     [DefaultProperty("Metin"), ToolboxData("<{0}:BasitKontrol runat=server>")]

    9     public class BasitKontrol : System.Web.UI.WebControls.WebControl

   10     {

   11         private string metin;

   12 

   13         [Bindable(true), Browsable(true), Category("Appearance"), DefaultValue(""), Description("Gösterilecek metin...")]

   14         public string Metin

   15         {

   16             get { return metin; }

   17             set { metin = value; }

   18         }

   19 

   20         protected override void Render(HtmlTextWriter output)

   21         {

   22             output.Write(this.metin);

   23         }

   24     }

   25 }


Bu projeyi derlediğimizde çıktı bir .dll dosyası olacaktır. Bu .dll dosyayı kendi web uygulaması projelerimde referans olarak vererek yarattığım kontrolü kullanabilirim...

Referans olarak eklediğinizde bir .aspx sayfasındayken araç kutunuzdan oluşturduğunuz kontrolü sürükle-bırak ile sayfanıza ekleyebilirsiniz. (Toolbox içinde görünmüyorsa öncelikle buraya eklemeniz gerekir.) Daha sonra "Metin" özelliğini ayarlayarak kontrolün işleyişini test edebilirsiniz.

Örnek bir web form sayfası şu şekilde görünecektir

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 
<%@ Register Assembly="MyControl" Namespace="MyControl" TagPrefix="cc1" %> 
<!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 id="Head1" runat="server"> 
    <title>Basit Kontrol Test</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
        <div> 
            <cc1:BasitKontrol ID="BasitKontrol1" runat="server" Metin="Merhaba Dünya..." /> 
        </div> 
    </form> 
</body> 
</html>


İsterseniz kontrolün "Metin" özelliğini çalışma zamanında da ayarlayabilirsiniz. Örnek sayfamızın geri-kod (code-behind) bölümü şu şekilde görünecektir.

    1 using System;

    2 using System.Data;

    3 using System.Configuration;

    4 using System.Web;

    5 using System.Web.Security;

    6 using System.Web.UI;

    7 using System.Web.UI.WebControls;

    8 using System.Web.UI.WebControls.WebParts;

    9 using System.Web.UI.HtmlControls;

   10 

   11 public partial class _Default : System.Web.UI.Page

   12 {

   13     protected void Page_Load(object sender, EventArgs e)

   14     {

   15         BasitKontrol1.Metin = "Burada metin özelliğini çalışma zamanında ayarlıyorum...";

   16     }

   17 }



Klavyeleriniz şen ola...

1 kişi tarafından 4.0 olarak değerlendirildi

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , , , , , | Categories: IDE, Programlama Posted by okutbay on 08.10.2007 12:37 | Yorumlar (0)
Kodunuzu daha okunaklı kılmak için öncelike yapmanız gereken kod bloklarınızdan önce /// (üç bölü) yazmanız ve visual studio 2005 editörünün sizin için oluşturacağı bölümleri doldurmak.

/// <summary>
/// Bu sınıf Kişi verisi ve bu veri üzerinde yapılacak işlemleri içerir.
/// </summary>

Böylece ilgili kodunuz (class, method, vb.) kullanırken Visual Studio 2005 Editörü geliştirmeyi yapan kişiye gösterdiği tooltiplerde daha fazla bilgi verebilir.

Not:İlgili Tanım bloğu ile tanımladığı kod bloğu arasında boş satır olmamalıdır. Açıklama ile kod peş peşe yer almalıdır.

Ayrıca bu oluşturduğunuz bölümleri XML dosyasına aktarabilirsiniz.

Bu işlem için derleme parametrelerinde oluşturulacak XML dosyasının adı belirtilmelidir. Bunu yapmak için proje özelliklerinde build sekmesinde XML documentation file özelliği ayarlanmalıdır.

Bu işlemden sonra derleme sonucu gerekli XML belgesi oluşur.

Bundan sonra bu XML belgesi ile ne yapacağınız size kalıyor...

Örneğin bu dosyayı piyasada bulabileceğiniz uygulamalar ile kullanıp kendi yardım dosyalarınızı oluşturabilirsiniz.

Bu programlara NDoc örnek olarak verilebilir.
http://sourceforge.net/projects/ndoc/

Ayrıca bir XSL yardımı ile XML dosyanızın daha anlamlı görüntülenmesini de sağlayabilirsiniz...
http://www.codeproject.com/soap/XMLDocStylesheet.asp


Klavyeler şen ola...

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , | Categories: Hata, IDE, Web Uygulaması Posted by okutbay on 06.07.2007 08:57 | Yorumlar (0)

Geçenlerde Bursa Datahouse eğitim firmasında bir eğitim sırasında web.config dosyasına eklemek istediğimiz bir elemanı yazmaya başladığımızda intellisense özelliği bize önerilerde bulunmamış ve yarı yolda bırakmıştı. Biz de klavyemize kuvvet yazmıştık. Akabinde eğitimi takip eden arkadaşlardan birisi bunun "Web Site Administration Tool (WSAT)" a girdikten sonra gerçekleştiğini söylemişti.

Figür 1: Kaybolan Intellisense
Not: Web Site Administration Tool, basit bir web arayüzü ile uygulamanızla ilgili ayarlarınızı yapabilmeniz için .NET Framework 2.0 ile sağlanan bir araçtır. Visual Studio 2005 içinde "Website > ASP.NET Configuration" menü seçeneği ile ulaşabilirsiniz.

Gerçekten de WSAT a girdikten sonra web.config dosyamda intellisense kullanarak düzenleme yapamamaya başlamıştım.

Varsayılan bir web.config ile karşılaştırma yaptıktan sonra sorunun aracın eklediği XML Namespace tanımından kaynaklandığını farkettim.

Sorunu düzeltmek için configuration elemanında tanımlanan xmlns özniteliğini (attribute) kaldırmak yeterli oldu.
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">

elemanını

<configuration>

şeklinde düzeltebilirsiniz...

Figür 2: Intellisense tekrar çalışıyor



Klavyeler şen ola...

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , | Categories: Hata, Programlama, Veritabanı Posted by okutbay on 10.05.2007 22:31 | Yorumlar (0)

Bu hatayı aldığınız zaman panik yapmayın.

Genellikle bir veritabanı tablosunun verilerini bir webform üzerine sürükle bırak ile listelemeye çalıştığınızda Visual Studio sizin için gerekli kontrolleri ve sorguları oluşturur. Burada Visual Studio nun bilmediği şey sizin veritabanınızda bu değerlerin nasıl oluşturulduğu konusudur.

Veritabanı tasarımı yaparken, genelde tablolar içinde veri satırını tanımakta kullanacağımız bir alan oluştururuz. Bu alanları genelde kayıt eklendiğinde otomatik olarak artacak şekilde ayarlarız ve veritabanı sisteminin bu işi bizim yerimize yapmasına izin veriririz. İyiki de veririz yoksa her seferinde bu alanın değerini de veritabanına göndermemiz gerekirdi.

İşte hatamız tam da bu konuyla ilgili. Visual studio tarafından oluşturulan INSERT cümlesine baktığınızda bu cümle içinde ilgili ID alanının da yeraldığını göreceksiniz. Hatayı gidermek için bu alanı sorgu cümlesi içinden çıkarmanız yeterli olacaktır.

Hatalı Sorgu:

INSERT INTO [Icerikler] ([Icerik_Id], [Baslik], [Icerik]) VALUES (?, ?, ?)

Düzeltilmiş Sorgu:

INSERT INTO [Icerikler] ([Baslik], [Icerik]) VALUES (?, ?)

Klavyeleriniz şen ola...!

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5