15 Kasım 2009 Pazar

c# Asp.net GridView Sorting Sorting(Sıralama) İşlemleri

Merhaba arkadaslar,

Bu yazımızda C# Asp.Net GridView Sorting işlemini anlatmaya çalışacağım. Anlatma işlemini tamamen örnetk üzerinde yapacağım. Sayfamızın cs ve aspx taraflarını ayrı ayrı yazarak olayın daha iyi kavranmasını sağlayacağım.

Öncelikle sayfamıza bir adet dataGridView objesini sürükleyip bırakalım.

<asp:GridView ID="GridView1" runat="server"

asp:GridView>


GridView objemizi sürkleyip bıraktıktan sonra GridView imizin AllowSorting özelliğine True değerini atayalım.

AllowSorting="True"

Daha sonra GridView imizin Properties penceresini açıp Events Sekmesine geçelim. Events larından Sorting kısmına GridView1_Sorting degerini atayıp entere e basıp. Sayfamızın .cs tarafına geçelim.

Sayfamızın .cs tarafını vermeden önce .aspx sayfamızın son halini sizlere vermek istiyorum.


Default.aspx Sayfamız:
---------------------------

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

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 runat="server">

<title>GridView Sorting Örneği title>

head>

<body>

<form id="form1" runat="server">

<div>

<asp:GridView ID="GridView1" runat="server" AllowSorting="True"

OnSorting="GridView1_Sorting">

asp:GridView>

div>

form>

body>

html>




Şimdi de sayfamızın cs tarafı olan Default.aspx.cs e geçelim.

Öncelikle sıralama yapmakta sıralamanın yönünü belirtmemizde bize yardımcı olacak olan (sıralamanın asc. mi yoksa desc. mi olduğunu belirtmemiz için ) değişkenlerimizi tanımlayalım.

private const string A_Z_Sirali = " ASC";

private const string Z_A_Sirali= " DESC";


Değişkenlerimizi tanımladıktan sonra Connection Srting imizi tanımlayalım.


private string DB_Conn

{

get{

return @"Server=localhost;Database=Deneme_Uygulamalari;Trusted_Connection=true";

}

}



Connection String imizi de tanımladıktan sonra GridView imizi dolduracak olan methodumuzu yazalım. Methodumuzun adı InsetGrid

private void InsetGrid()

{

SqlConnection Conn = new SqlConnection(DB_Conn);

String v_sql_Grid="SELECT * FROM Kitaplar";

SqlDataAdapter Adp= new SqlDataAdapter(v_sql_Grid, Conn);

DataSet Ds = new DataSet();

Adp.Fill(Ds);

GridView1.DataSource = Ds;

GridView1.DataBind();

}



Gelen dataları gridview imize bind ettikten sonra yavaş yavaş sorting meselesine gelelim.

Bunun için yapmamız gereken yeni bir method oluşturmak. Merhodumuzun ismi :GView_Sorting
Bu method ile SortDirection methodunu kullanarak verileri ViewState e set ediyoruz. Daha sonra get methodu ile bunları geri çağırıyoruz.


public SortDirection GView_Sorting

{

get

{

if (ViewState["sortDirection"] == null)

ViewState["sortDirection"] = SortDirection.Ascending;

return (SortDirection) ViewState["sortDirection"];

}

set { ViewState["sortDirection"] = value; }

}



Şimdi gridview imizin GridView1_Sorting eventine geçelim. Burada yapılacak sorting işleminin nasıl yapılacağını belirtelim.


protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)

{

string sortExp = e.SortExpression;

if (GView_Sorting== SortDirection.Ascending)

{

GView_Sorting= SortDirection.Descending;

GView_sort(sortExp, Z_A_Sirali);

}

else

{

GView_Sorting= SortDirection.Ascending;

GView_sort(sortExp, A_Z_Sirali);

}

}



Şimdi de sort işleminin yapılağı methodumuzu yazalım. Bunu adı da GView_sort olsun.

private void GView_sort(string sortExp,string direction)

{

DataTable dt = GetData().Tables[0];

DataView dv = new DataView(dt);

dv.Sort = sortExp+ direction;

GridView1.DataSource = dv;

GridView1.DataBind();

}




Şimdi de sayfamızın .cs tarafının son halini sizlere vermek istiyorum.


Default.aspx.cs Sayfamız:
------------------------------

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Data.SqlClient;



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

{


private const string A_Z_Sirali = " ASC";

private const string Z_A_Sirali= " DESC";



protected void Page_Load(object sender, EventArgs e)

{

if (!Page.IsPostBack)

BindData(); /*Sadece Sayfa ilk yuklenirken çalışır.*/

}




private string DB_Conn

{

get{ return @"Server=localhost;Database=Deneme_Uygulamalari;Trusted_Connection=true"; }

}


private void InsetGrid()

{

SqlConnection Conn = new SqlConnection(DB_Conn);

String v_sql_Grid="SELECT * FROM Kitaplar";

SqlDataAdapter Adp= new SqlDataAdapter(v_sql_Grid, Conn);

DataSet Ds = new DataSet();

Adp.Fill(Ds);

GridView1.DataSource = Ds;

GridView1.DataBind();

}


private DataSet GetData()

{

SqlConnection Conn = new SqlConnection(DB_Conn);

String v_sql="SELECT * FROM Kitaplar";

SqlDataAdapter Adp= new SqlDataAdapter(v_sql, Conn );

DataSet Ds = new DataSet();

Adp.Fill(Ds);

return Ds;

}



public SortDirection GView_Sorting

{

get

{

if (ViewState["sortDirection"] == null)

ViewState["sortDirection"] = SortDirection.Ascending;

return (SortDirection) ViewState["sortDirection"];

}

set { ViewState["sortDirection"] = value; }

}





/* Bu alan Sorting işleminin yapılacağı kolonun başlığına tıkladığı zaman çalışır. ----------------------------------------------------------------------------------*/

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)

{

string sortExp = e.SortExpression;

if (GView_Sorting== SortDirection.Ascending)

{

GView_Sorting= SortDirection.Descending;

GView_sort(sortExp, Z_A_Sirali);

}

else

{

GView_Sorting= SortDirection.Ascending;

GView_sort(sortExp, A_Z_Sirali);

}

}





private void GView_sort(string sortExp,string direction)

{

DataTable dt = GetData().Tables[0];

DataView dv = new DataView(dt);

dv.Sort = sortExp+ direction;

GridView1.DataSource = dv;

GridView1.DataBind();

}

}



28 Ekim 2009 Çarşamba

RegisterForEventValidation can only be called during Render(); Hatası

Merhaba arkadaslar,

Bu yazımda asp.net de karşılaşabileceğiniz bir hatadan ve çözümünden bahsetmeye çalışacağım.

Hatamızın adı :
RegisterForEventValidation can only be called during Render();

ya da
RegisterForEventValidation ancak Render() sırasında çağrılabilir ;

Yukarıdaki gibi bir hata alıyorsanız muhtemelen excel e export ya da word e bişeyler export etmeye çalışıyorsunuz. Ya da kodunuzun içinde RenderControl kullanıyorsunuz. Şimde gelelim bu hatadan nasıl kurtulabiliriz.

Bu hatadan kurtulmanın ve kodumuzun sağlıklı bir şekilde çalışmasına devam etmesi için sayfanızın .aspx tarafında küçük bir ekleme yapmamız yeterli olacaktır.

Language="C#" ifadesinin olduğu satıra EnableEventValidation="false" yazmanız yeterli olacaktır. EnableEventValidation="false" yazdıktan sonra yeniden build edin ve kodunuzun istediğiniz gibi çalışıyor olmasının tadını çıkarın. :)

Evet bir yazının daha sonuna geldik.

Faydalı olması dileği ile.

22 Ekim 2009 Perşembe

VS2008'de unable to connect asp.net development server Hatası

Merhaba arkadaşlar,

Bilgisayarınızda VS2008 ile bir uygulama geliştiryorsunuz. Çok da başalı bir uygulama :) E her insan gibi siz de eserinizi görmek istersiniz. Bi derleme yapayım ve o muhteşem eserimi göreyim dediniz diyelim. Derlemeye başladınız ve karşınızda çat diye bi hata.
unable to connect asp.net development server

Forumlara baktınız bi suru yol denediniz ama nafile. Benim gibi kafayı yiyecek oldunuz :) Böyle bir hata aldığızda endişelenmenize gerek yok arkadaşlar çözümü oldukça basit.

Aşağıda ne yapmanız gerektiğini size sırası ile anlatmaya çalışacağım.

1- Oncelikle vs2008 in kurulu olduğu partition(harddiskinizdeki c ya da kurumu yaptığınız yer) a gidin. Ben C olduğunu kabul edip ona göre aktarım yapacağım.

2- http://www.upload.gen.tr/d.php/s4/l60o8k49/9.0.rar.html adresindeki dosayı indirin.

3- Dosyayı rar dan çıkarın.

4- C:\Program Files\Common Files\Microsoft Shared\DevServer\9.0 pathine girin.

5- rar dan çıkardanız klasor içindeki 2 adet dosyayı buradaki dosyalarla değiştirin.

6- Tercihen bi restart edin.

7- Artık eserinizi görebilirsiniz.

Umarım faydalı olmuştur. İyi çalışmalar.

30 Haziran 2009 Salı

Gridview i Excele Export Ederken UpdatePanel Hatası

Merhaba arkadaslar,

Daha oncesinde bir gridview i excel e nasıl export edeceğimizi vermiştim. (Buradan Ulaşabilirsiniz.) Eğer buton bir update panel içerisinde ise bir takım hatalar alabilirsiniz (javascript hatası gibi bazı anlamsız hatalar.) Bu durumda yapmanız gereken şey oldukca basit. Sayfamızın asp tarafına yer alan update panel başlangıcının hemen altına aşağıdaki kodları ekleyerek bunun üstesinden gelebilirsiniz.



triggers lar arası ifadede yer alan controlid hangi buton tarafından kontrol edileceğini belirtir. Buraya butonun id sini vermeniz gerekmektedir.

Evet.Hepsi bu kadar. Kolay gelsin.

18 Haziran 2009 Perşembe

VbScript ile İnternet Expoler sayfası (PopUp) açtırma

Merhaba arkadaslar,

Bugün vb script ile internet explorer sayfasını nasıl açacağımız konusuna değineceğim. Aslında birçok dilde bu iş java script ile yapılıyor. Fakat vbscript te olaylar biraz farklı. İsterseniz konuyu uzatmadan direkt olarak koda girelim :)

---------------------------------------------------
---------------------------------------------------

set ie = createobject("internetexplorer.application") 'Öncelikle gerekli objemizi tanımlayalım
ie.width = 800 'Sayfanın genişliği
ie.height = 600 'Sayfanın Yüksekliği
ie.navigate "www.google.com.tr" 'Yönleneceği sayfa
ie.visible = true


Eğer bunu sub olarak yazıp heryerden çağırmak isterseniz;
---------------------------------------------------------------------

sub ieOpenPopUpPage(url_1)
set ie = createobject("internetexplorer.application")
ie.width = 800
ie.height = 600
ie.navigate url_1
ie.visible = true
end sub

Çağrılması:
---------------
dim url
url="www.google.com.tr"

call ieOpenPopUpPage(url)



---------------------------------------------------
---------------------------------------------------


Evet arkadaslar. Kod bundan ibaret gördüğünüz gibi olay son derece basit. :) Bir başka yazıda görüşmek üzere.

17 Haziran 2009 Çarşamba

Anahtar sözcük desteklenmiyor: 'provider'. hatası

Merhaba arkadaslar,

Eğer db işlemleri yaparken aşağıdaki gibi bir hata aldıysanız muhtemelen Db bağlantı şeklini değiştirdiğinizden dolayı bu hatayı aldınız demektir.

Önceden oledb Connection kullanıyor ve daha sonra hız farkını farkedip oracle.client kullanmaya karar vermissiniz. Cs tarafındaki using System.Data.OleDb; ifadesini using System.Data.OracleClient; ile değiştirdiniz. Daha sonra kod içerisindeki Db bağlantılarında da gerekli değişikliği yaptınız. ve derleyince boyle bir hata aldıysanız bunun sebebi aşağıdaki durumdur.

----------------------------------------------
Önceki connection string iniz:
----------------------------------------------

Web Config Tarafı:
------------------------
connectionString="Provider=MSDAORA;Data Source=Your data source;Persist Security Info=True;Password=sifre;User ID=deneme" providerName="System.Data.OleDb"

Cs tarafında kullandığınız:
--------------------------------
DB_Conn = "Provider=MSDAORA;Data Source=Your data source;Persist Security Info=True;Password=sifre;User ID=deneme";

---------------------------------------------------------------------

Şimdi bu bağlantıları aşağıdaki gibi değiştirelim.
---------------------------------------------------------------------

Web Config Tarafı:
--------------------------
connectionString="Data Source=Your data source;Persist Security Info=True;Password=sifre;User ID=deneme" providerName="System.Data.OracleClient"

Cs tarafında kullanacağınız:
-------------------------------
DB_Conn = "Data Source=Your data source;Persist Security Info=True;Password=sifre;User ID=deneme";

Bu değişiklikleri yaptıktan sonra sorunun düzeleceğini rahatlıkla söyleyebilirim.

Evet bir hata mesajının daha sonuna geldik. :) Herkese Kolay gelsin...

4 Haziran 2009 Perşembe

VB Script ile Oracle Veri tabanından Kayıt çekme

Merhaba arkadaslar

VB Script ile veri tabanında var olan bir kayıdı nasıl çakabileceğimiz konusunda bir soru ile karşılaştım yakın zamanlarda. Ben de bir başkasının daha işine yarayabiir düşüncesi ile Kodu burada paylaşmak istedim.

'********************************************************
'********************************************************
'Bağlantıyı sağlamamıza yarayan Sub
Sub getDBConnection(databaseName,user,pswrd)

'Şimdi Conn diyerek Connection String imizi tanımlayalım. Conn da User ID ve Password u parametre olarak dışardan yollayalım
Conn = "Provider=MSDAORA.1; " & _
"Data Source="&databaseName&"; " & _
"User ID="&user&"; Password="&pswrd&";"

Set Cn = CreateObject("ADODB.Connection") 'Cn diyerek Connection u set edelim

With Cn
.ConnectionString = Conn
.Open
End With

End Sub

'Bağlantıyı kapatan sub
Sub closeDBConnection(Cn,CP)

Cn.Close
Set Cn = Nothing
Set CP = Nothing

End Sub

'********************************************************
'********************************************************

Şimdi fonksiyonlarımızı yazdıktan sonra kod kısmına geri dönelim :)

'********************************************************
'********************************************************
Dim Conn, Rs, CP,v_sql, Cn,number1,number2,number3

call getDBConnection("dbl_deneme","deneme","deneme") 'Bağlantı aç

v_Sql =("select BG_STATUS from spd_db.bug where bg_bug_id='24156' ")
Set Rs = Cn.Execute(v_Sql)

Do until Rs.EOF=True
number1 = Rs.Fields("BG_STATUS").Value
Rs.Movenext
loop

call closeDBConnection(Cn,CP)
'********************************************************
'********************************************************


Umarım faydalı olmuştur. Bir başka yazıda görüşmek üzere...

4 Nisan 2009 Cumartesi

C# da Regular Expressions - 3

Merhaba arkadaşlar daha once regular exspressions larla ilgili olarak iki yazı yazmıştım. Bunlardan ilkinde konu ile ilgili temel bilgileri(buradan) ikinci yazıda da bir tarih deseni ile ilgili örnek verdik(buradan)

Şimdi ilgili fonksiyonumuzu yazalım isterseniz...

public static bool Date_FormatKontrol(ref string tarih )
{
string tarihDeseni = @"(((0?[1-9])|([12][0-9])|(3[01]))(.)(0?[1-9]|1[0-2])(.)([12][0-9][0-9][0-9]))"; //tarih desenimizi tanımladık...

Regex regex_Tarih=new Regex(tarihDeseni) ; //reg. exp ifademizi tanımlayalım.

bool return_value= regex_Tarih.IsMatch(tarih) ; //tarih ifadesindeki formatın istediğimiz formata uyup uymadığını kontrol eder. True false değer döndürür.

return return_value; //Fonksiyonumuz geriye ifade doğru ise true değilse false değer döndürür..

}

Evet arkadaşlar. Böylece fonksiyomuzu da tamamlamış olduk. Bir önceki yazılarda konuyu detaylıca anlattığım için burada fazla detay vermek istemedim...

C# da Regular Expressions - 2

Merhaba arkadaşlar;

Bir önceki yazımda
Regular Expressions ile ilgili bilmemiz gereken temel bilgileri vermiştik. Şimdi ise bunu örnek üzerinde göreceğiz.

İlk Örnek olarak bir tarih deseni oluşturalım.

Desenimiz GG/AA/YYYY formatlarındaki tarihleri kapsayacak formatta olsun...

Önce desenimizin GG kısmını yani gün kısmını tanımlayalım :

"(0?[1-9])"
// 0 dan sonra 1-9 arası değerler alabildiğini gösterir. 01,02,...09 gibi

"([12][0-9])"
// [12]ilk değer ya 1 ya da 2 olabilir. [0-9] ikinci değer ise 0-9 arasında değer alabilir...

“(3[01])”
// 30, 31 günlerini tanımlar.

// Bu üç tanımı OR (|) işlemiyle birleştirirsek gün tanımını elde etmiş oluruz.

// Elimizdeki ifade ise;
“((0?[1-9])|([12][0-9])|(3[01]))”


Şimdi desenimizin AA yani tarihin ay belirtilen kısmını tanımlayalım :

“(0?[1-9])”
// 0 dan sonra 1-9 arası değerler alabildiğini gösterir. 01,02,...09 gibi

“(1[0-2])”
// 10, 11, 12 aylarını tanımlar.

// Bu iki tanımı OR işlemiyle birleştirirsek ay tanımını elde ederiz.

// Ay Tanımı :
“((0?[1-9])|(1[0-2]))”


Şimdi desenimizin YYYY yani tarihin yıl belirtilen kısmını tanımlayalım :

“([12][0-9][0-9][0-9])”
//1000 ile 2999 yılları arasındaki tüm yılları içerir.


Ve son olarak tanımladığımız gün, ay ve yıl desenlerini “/” ile birleştirirsek :

“((0?[1-9])|([12][0-9])|(3[01]))(/)(0?[1-9]|1[0-2])(/)([12][0-9][0-9][0-9]))”

Evet arkadaşlar. tarih desenimizi tamamlamış olduk.

Bir sonraki yazımda regular expressions ifadesini fonksiyon olarak kullanımı anlatmaya çalışacağım...

2 Nisan 2009 Perşembe

Ms Chart Uygulamasının Yüklenmesi ve Kullanıma Hazırlanması

Merhaba arkadaşlar;

Bu yazımda çok önemli olduğunu düşündüğüm chart ları başlangıç aşamasında anlatmaya çalışacağım. İnternette bu konu ile ilgili detaylı bir çalışma pek yok. Var olan çalışmaların çoğu ise İngilizce. İngilizce sıkıntısı olan arkadaşlar olabileceğini düşündüğüm için böyle bir karar aldım. Bakalım bu geniş konuyu ne kadar sürede bitirebileceğim.. :)

Yavaş yavaş başlayalım isterseniz... IDE olarak Visual Studio 2008 idesini kullanacağız. Bu 2005 kullanan arkadaşların .net framework 3.5 i indirmeleri gerekmektedir.

.net Framework 3.5'u buradan indirebilirsiniz...

Kurulumun başarılı olabilmesi için .net 3.5 servicepack1 in yüklü olması gerekmekte.

3.5 ServisPack -1 i buradan indirebilirsiniz...


Şimdi her şey tamamlandığına göre Programımızı indirelim.
Buradan indirebilirsiniz...

İndirme işlemi tamamlandıktan sonra kurulumu yaptıktan sonra Data menüsünün altında aşağıdaki resimde olduğu gibi Chart seçeneği gelecektir.



Şimdi Bir grafiği inceleyelim.

Kaydı Yayınla



Bu resmi bir kaynaktan aldım :) Üzerindeki ifadeleri Türkçe'ye çevirmedim. Çünkü program içerisinde bu şekilde kullanacağımız için İngilizce kalmasının daha faydalı olacağını düşündüm.




27 Mart 2009 Cuma

C# da Regular Expressions - 1

Merhaba arkadaşlar;

Bugünkü konumuz regular expressions. Son derece önemli olan buu konuya genel bir giriş yapıp ilerleyen zamanlarda bir iki örnek vererek pekişmesini sağlayacağız. Öncelikle regular expressions dan genel anlamda biraz bahsettikten sonra nerelerde kullanıldığına ve nasıl kullanıldığına değineceğim. Başka bir yazıda da bir iki örnek vereceğim. Yol haritamızı çizdikten sonra yavaş yavaş başlayalım isterseniz...

Once
regular expressions ın ne olduğu ile ie başlayalım.

Regular expressions, bir metni düzenlemek ya da metin içerisinden belli kurallara uyan alt metinler elde etmek için kullanılan bir dildir.

Kullanımı:
-----------------
Regular expressions, uzunluk sınırlaması olmaksızın string tipindeki karakter topluluğuna uygulanır. Sonuçta iki olasılık vardır. Ya substringler oluşur ya da orjinal metnin bir kısmını içeren değiştirilmiş yeni metinler elde edilir.
Bu işlem kendine has bir method ile yapılır. Şimdi gelin bu işi nasıl yaptığına ve hangi ifadeleri kullandığına bakalım...


Regular Expressions da Kullanılan Özel karakterler ve İşlevleri :
-------------------------------------------------------------------------------------

"." Karakteri
------------------

Tek bir karakteri temsil eder(yeni satır karakteri hariç).

ör: blogger.om ifadesindeki . yerine her karakter yazılabilir. Yani
blogger.om ifadesi bloggercom, bloggertom, bloggerkom gibi versiyonlara dönüşebilir..


" [ ] " Karakterleri
-------------------------

Bir dizi (array) ya da aralık temsil eder.

ör: "blogger[ctk]om" ifadesi bloggercom, bloggertom, bloggerkom stringine dönüşebilir.

ör-2 : Aralığın tüm alfanumerik karakterleri kapsamasını istiyorsak;
blogger[a-z]om ifadesini kullanmamız yeterli olacatır.
ör-3 : Aralığın numerik değerler almasını istiyorsak;
blogger[0-9]om ifadesini kullanmamız yeterli olacaktır.



" ? " Karakteri
----------------------
Kendinden önceki karakterin string'de olması ya da olmamasının sorun teşkil etmemesini sağlar.

ör :
blogger?com ifadesi bloggercom ya da bloggecom olabilir.



" \ " Karakteri
--------------------
Kendinden sonra kullanılan /*%& gibi özel karakterin stringe dahil edilmesini sağlar.

ör :
blogger\.com ifadesinin blogger.com şeklinde algılanmasını sağlar. Eğer \ ifadesini kullanmasak bunu en başta söz ettiğimiz özel karakter olarak algılayacak ve bloggertom, bloggermom, bloggerrom, gibi ifadeleri de doğru kabul edecekti...


" * " Karakteri
--------------------

Kendinden önceki karakterin ya da stringin hiç olmaması ya da istediği sayıda olmasını sağlar.

ör :blogger.com* ifadesi
blogger.co veya blogger.comm ya da blogger.commmm şeklinde olabilir...


ör-2 : blogger.(com)* şeklindeki ifade ise blogger. veya blogger.com veya blogger.comcom şeklinde olabilir...


" { } " Karakterleri
--------------------------

Kendinden önce gelen karakterin belirtilen sayıda tekrar etmesini sağlar.

ör :
blogger.com{4} deseni blogger.commmm şeklinde değer döndürür.



" ^ " Karakteri
------------------------

Satır başını ifade eder.

ör :
^blogger.com ifadesi satır başında blogger.com stringi varsa bunu döndürür...


" $ " Karakteri
------------------------
Satır sonunu ifade eder.

ör : blogger.com$ ifadesi satır sonunda blogger.com stringi varsa bunu döndürür...