Blog Home  Yalcomania'n�n Yeri Feed your aggregator (RSS 2.0)  
Yalçın Uzun - Monday, July 28, 2008
Kişisel Blog
 
 Monday, July 28, 2008

İki de bir unutup durduğum bir şey olduğu için buraya yazayım dedim. En azından her seferinde makale okumak zorunda kalmam.

Aktif hale getirmek için:

ALTER DATABASE Database SET ENABLE_BROKER

C# kodları: (Unutulmaması gereken şey sorguda mutlaka sütun adları kullanılmalı ve from kısmı FQN (dbo.Hede) olmalı)

Global değişkenler:

SqlConnection con = new SqlConnection("server=.;database=Northwind;trusted_connection=true");

SqlCommand com;

SqlDependency dep;

SqlDataAdapter da;

DataTable dt;

 

 

private void Form1_Load(object sender, EventArgs e)

{

   Control.CheckForIllegalCrossThreadCalls = false;

   VeriCek();

}

void VeriCek()

{

   com = new SqlCommand("select ogrenciId,ogrenciAd,OgrenciSoyad from dbo.ogrenciler", con);

   dep = new SqlDependency(com);

   dep.OnChange += new OnChangeEventHandler(dep_OnChange);

   SqlDependency.Start(con.ConnectionString);

   da = new SqlDataAdapter(com);

   dt = new DataTable();

   da.Fill(dt);

   dgVeriler.DataSource = dt;

}

void dep_OnChange(object sender, SqlNotificationEventArgs e)

{

   VeriCek();

}

 

Monday, July 28, 2008 5:29:08 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]    | 
 Wednesday, July 23, 2008

Sayfalar arası veri transferinde QueryString ve Session’a güzel bir alternatif ASP.NET 2.0’da gelen CrossPage Posting’dir. Bu makalede cross page posting kullanarak DatagridView üzerinden başka bir sayfaya post yapmayı inceleyeceğiz.

Eğer cross page posting hakkında bir bilginiz yoksa bu makaleyi okumadan önce Ekin Özçiçekçiler’in makalesini okumanız faydalı olacaktır. ( http://www.yazilimuzmani.com/Articles/Details.aspx?aId=1000000795 )

Öncelikle iki sayfaya ihtiyacımız olacak:

1- Post yapacak sayfa. (Örnekte bir datagridview barındıran AktifBildirimlerim.aspx)

2- Post edilerek gönderilen datayı kullanacak sayfa. (Örnekte BildirimDetay.aspx)

AktifBildirimlerim.aspx sayfasında bulunan gridview’e post yapması için her satıra bir düğme eklememiz gerekiyor. (Buton,ImageButton vb..) OnClick olayını da ShowDetay adlı bir metoda bağlıyoruz.

<asp:TemplateField>

      <ItemTemplate>

        <asp:ImageButton ImageUrl="../Resimler/search.png" ID="MyGridLinkButton" runat="server" OnClick="ShowDetay"/>

       </ItemTemplate>

</asp:TemplateField>

 

Daha sonra ShowDetay metodunu yazmaya başlıyoruz.

    public void ShowDetay(object sender, EventArgs e)

    {

        //Grid'in hangi satırından geldiğini anlıyorum

        ImageButton btnEdit = sender as ImageButton;

        GridViewRow row = (GridViewRow)btnEdit.NamingContainer;

 

        //O satıra ait ID'yi DataKeys’den yakalıyorum

        int bildirimId= Convert.ToInt32(this.GridView1.DataKeys[row.DataItemIndex].Value);

       

        //Bu sayfada öbür tarafa göndermek istediğim veriyi bu class’ta oluşturduğum bir property’e aldım.

        //Bu değer istenirse bir label'a veya başka bir kontrole de atılabilir.

        //Böylelikle diğer sayfadan PreviousPage.FindControl diyerek değeri de alınabilir.

        this.BildirimId = bildirimId;

 

        //Sayfayı diğer bir sayfaya post etmek için Server.Transfer metodunu kullanıyorum.

        Server.Transfer("BildirimDetay.aspx", true);

    }

 

Bu sayfayla işimiz bitti. Şimdi BildirimDetay.aspx sayfasında yapmamız tek şey kaldı:

AktifBildirim.aspx sayfasında property kullandığım için bunu BildirimDetay.aspx’te class olarak göstermemiz gerekir. Çünkü PreviousPage özelliği geriye Page tipi döndürür.  Böyle olunca da onun üzerinden sayfadaki property’e erişemeyiz.    Bunun için BildirimDetay.aspx’e reference directive’ini eklemek gerekir.

<%@ Reference Page="~/BackOffice/AktifBildirimlerim.aspx" %>

Eğer bir sayfaya sadece tek bir sayfadan post geleceğinden eminseniz Reference yerine PreviousPageType directive’ini kullanmanız daha doğru olur. Bunu yaptığınızda  PreviousPage özelliği Page tipi değil, PreviousPageType’da belirttiğiniz sayfa tipinde döner. Böylelikle cast işlemine gerek kalmaz. Ancak bu yaptığımız örnekte, BildirimDetay.aspx’e birden fazla sayfadan post geleceği için ben Reference kullandım.

Eğer AktifBildirim.aspx sayfasında veriyi tutmak için property değil de kontrol kullansaydık buna gerek kalmayacaktı. PreviousPage.FindControl metodu ile veriye erişebilecektik.

Bütün hazırlıklarımız bittiğine göre artık kodumuzu yazabiliriz:

    protected void Page_Load(object sender, EventArgs e)

    {

        //Diğer sayfadan post olarak gelmişse gerekli işlemleri yapıyor.

        if (PreviousPage!=null)

        {

            //PreviousPage'den gelen sayfaya cast edip BildirimId'yi yakalıyorum.

            int bildirimId=(PreviousPage as BackOffice_AktifBildirimlerim).BildirimId;

           

            //Buralarda yakaladığım Id'yi kullanıyorum

            ucBildirimDetayAll1.BildirimId = bildirimId;

            ViewState["myID"] = ucBildirimDetayAll1.BildirimId;

            ucBildirimDetayAll1.Update();   

        }

    }

 

Her türlü sorunuz ve görüşünüz için çekinmeden yalcin.uzun@bilgeadam.com a mail atabilirsiniz.

Wednesday, July 23, 2008 1:50:15 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]    | 
 Wednesday, July 09, 2008

AJAX Tool Kit'te bulunan Modal PopUp kontrolünü kullanmışsanız bilirsiniz ki, göstermek istediğiniz panel kontrolü (veya div, artık ne kullanmışsanız) sayfa yüklenirken bir kaç saniye ekranda kalır. Bu da kötü bir görüntüye sebep olur. Bu durumdan kurtulmanın çözümü gayet basit:

Tek yapmanız gereken panel'e style="display:none" attribute'unu eklemek.

Cümle içinde kullanmak gerekirse:

<asp:Panel style="display:none" ID="myModalPop" runat="server">Burası artık açılışta gözükmeyecek</asp:Panel>

 

Wednesday, July 09, 2008 1:38:10 AM (GTB Standard Time, UTC+02:00)  #    Comments [0]    | 
 Tuesday, June 03, 2008

Vatani görevimi tamamladım ve tekrar Bilge Adam'daki görevime geri döndüm.

Sorularınız ve görüşleriniz için yeniden yalcin.uzun@bilgeadam.com a mail atabilirsiniz...

Tuesday, June 03, 2008 5:58:04 PM (GTB Standard Time, UTC+02:00)  #    Comments [2]    | 
 Tuesday, October 09, 2007

İlk Visual Studio AddIn Projem.

Oracle JDeveloper ‘da bulunup gıpta etttiğim bir özelliğin addin’ini yazdım.

Kod sayfasında addini çalıştırdığınızda tüm global değişkenleri listeliyor.
Daha önce property’ye dönüşmüş olanlar varsa onları listeden çıkartıyor.

Siz sadece set ve get’lerden istediklerinizi seçiyorsunuz. Propertylerini addin yazıyor.

Daha önce AddIn projesi yapmamış olanlar için ve DTE namespace’i  (macrolarda da kullanılan) için güzel bir örnek.
Ayrıca regular expression kullanımı için de örnek teşkil edebilir. (değişken tanımlamalarını ve property’leri bulmak için kullandım)

Şu an üşengeçlikten desteklemediğim şeyler:
VB dili
int x=4; gibi bir değişken tanımlama.
hede x=new hede(); gibi bir değişken tanımlama.


Onun dışında gayet güzel çalışıyor. (En azından bende)

Kolay gelsin...
Yalçın








İndirmek için tıklayınız: YalcomaniaPropertyBuilderAddIn.rar (62,38 KB)
Tuesday, October 09, 2007 4:10:34 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]    | 
 Monday, October 08, 2007

Bir projemde Regular Expression kullanmam gerekti. Ancak piyasadaki uygulamalar tüm diller için yazıldığı için orada düzgün çalışan expression'lar .net'e gelince çalışmıyordu. Bunun üzerine oldukça basit olan bu uygulamayı yazdım.



İndirmek için tıklayınız: Yalcomania_RegEx_Editor.rar (44,51 KB)
Monday, October 08, 2007 1:27:06 PM (GTB Standard Time, UTC+02:00)  #    Comments [1]    | 
 Monday, October 01, 2007

Eğlencesine yazdığım bir oyun. (Kantina'daki makina çok paramı yedi de)

İncelemek için güzel bir örnek olabilir. Kapsadığı konular:

Temel OOP
Eventler'le çalışmak
IComparable Interface'i
User Controllerle çalışmak
Gerçekten Random çalışan class
Gömülü kaynaklarla çalışmak
Backgroundworker nesnesi ile çalışmak
Gradient Form
Hazır İskambil kağıdı kütüphanesi (Kart, EldekiKartlar ve Deste classları)
Web Cam (veya bir capture device ile) görüntü capture etmek
Observer Design Pattern

İndirmek için: YalcomaniaHorseRacePoker.rar (1,32 MB)

Screen Shotlar:





İndirmek için : YalcomaniaHorseRacePoker.rar (1,32 MB)
Monday, October 01, 2007 9:24:25 AM (GTB Standard Time, UTC+02:00)  #    Comments [1]    | 
 Wednesday, September 19, 2007

İki adet formula field'a ihtiyacımız olacak:
Adlarını koymak size kalmış.

Birincisi:
WhilePrintingRecords;
Global numberVar total;
total:=total+{Orders.Freight} Burada toplamını istediğimiz alanı yazıyoruz. Ben orders tablosundaki Freight'i aldım.

Türkçe meail:
Her kayıtta "total" adlı global bir değişkene, freight'tan gelen değeri ekle.

Bu formülü kaydedip kapattıktan sonra Details kısmına bırakıyoruz.  Böylelikle her kayıt geldiğinde sürekli artan bir değişkenimiz var.
Şöyle bir şey oluyor:

Order Id:   Freight:    BenimFormul:
1                 10                10
2                 25                35
3                 100               135

Tabi, bu formülün ekranda gözükmesini istemeyiz, o yüzden alanı seçip suppress özelliğini true yapıyoruz.

Görecekseniz ki kaç sayfa olursa olsun alanımız giderek artacak. Bu yüzden sayfa başında sayac'ı sıfırlamamız lazım.

İşte ikinci formül kodlarımız:

WhilePrintingRecords;
Global numberVar total;
numberVar geciciDegisken:=total;
total:=0;
geciciDegisken;

Türkçe meail:
total adlı global değişkendeki değeri, geciciDegisken adlı bir değişkene aktar.
global değişkeni sıfırla
ekrana geciciDegiskenin değerini bas

Bu formülü de Page Header'a koymamız lazım. Böylelikle her sayfa oluşturuluken burası sadece bir kere çalışacak. değeri de sıfıladığımız için bir önceki formül toplamaya 0'dan başlayacak.


 

Wednesday, September 19, 2007 11:53:02 PM (GTB Standard Time, UTC+02:00)  #    Comments [1]    | 
Copyright © 2008 Yalçın Uzun