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

--Dolaşılacak tabloyla ilgili bilgileri atmak için önce bir temp tablo oluşturulur.

CREATE TABLE #OgrencilerTemp

(

KayitNo int IDENTITY(1, 1),

OgrenciID int

)

--İlgili bilgiler temp tabloya insert select yardımıyla atılır.

INSERT INTO #OgrencilerTemp

SELECT OgrenciID

FROM Ogrenciler

--Koyatıları dönmek için kullanılacak değişkenler

declare @KayitSayisi int

declare @KayitNo int

--Başlangıç verileri set edilir.

SET @KayitSayisi = @@ROWCOUNT

SET @KayitNo = 1

--Kullanılacak bilgiler değişkenlere aktarılır.

--Örnekte sadece 1 tane kullandım.

declare @OgrenciID int

--Tek tek kayıtlar dönmeye başlanır

WHILE @KayitNo <= @KayitSayisi

BEGIN

--İlgili veriler değişlenlere aktarılır

select @OgrenciID=OgrenciID from #OgrencilerTemp where KayitNo=@KayitNo

--Bilgi nerede kullanılacaksa kullanılır.

exec spBirseylerYap @KayitNo

--Sayac'ı 1 arttırır.

Set @KayitNo=@KayitNo+1

END

--Temp tablo silinir.

DROP TABLE #OgrencilerTemp

Thursday, July 31, 2008 4:42:08 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]    | 
 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]    | 
Copyright © 2008 Yalçın Uzun