ASP.NET ‘ te YOLLADIĞIMIZ QUERY STRİNGLERİN
ADINI ÖĞRENME
Bazı durumlarda tek sayfa üzerinde, yolladığımız query
string in adına göre işlem yapmak isteyebiliriz. Benim bunu en çok kullandığım
alanlardan biride arama işlemleridir. Örneğin, bir kişinin hangi sınavlara
girdiğini TCKimlik Numarasını yada adını soyadını girerek sorgulatmak istiyorsunuz. Bu gibi durumlarda
tckimlikno için ayrı bir sayfa adsoyad aramaları için ayrı bir sayfa
tasarlamanız gerekli. Ayrıca iki sorgulama sonucunda aynı sonuçlar geleceği
için ve tasarımındaki sayfada aynı olması gerekeceği için bu çok zahmetli bir iş olacaktır. Bunun
yerine aynı sayfa üzerinden gelen query string in adina gore sql sorgunuzu
değiştirmek yeterli olacaktır.
Örneğimiz için Ogrencisonuclari.aspx adında bir sayfamız
olduğunu varsayalım ve TCNo girerek yaptığımız sorgulamalarda
ogrencisonuclari.aspx?tcno=28846499621 adında bir query string yollayalım. Ad
soyad sorgulamalarında ise
ogrencisonuclari.aspx?adsoyad=SalihDemirog adında qs yolladığımızı düşünelim. Bu durumda querystring imizin adını bilmek
işimizi çözecektir.
Query String imizin adından
kastım yukarıdaki örnek için tcno ve
adsoyad dır. Query string in adını, değeri ile karıştırmayalım. Yukarıda örnek
için tcno adlı qs mizin degeri “28846499621”, adsoyad adlı qs mizin degeri ise
“SalihDemirog” dur.
Belirtilen querystringin
degerini ekrana yazdırmak için
|
Response.Write(Request.QueryString["tcno"].ToString());
//yukarıdaki için örnek sayfaya 28846499621 yazar
|
Querystring in adını öğrenmek
için
|
HttpContext.Current.Request.QueryString.GetKey(0);
//index numarası 0 olan query string in adını
getirir
//index numarası 0 olan query string ilk yolladığımız query string dir
|
|
Ogrencisonuclari.aspx?tcno=12345678901&durum=aktif örneği için
Response.Write(HttpContext.Current.Request.QueryString.GetKey(0));
//sayfaya tcno yazar
Response.Write(HttpContext.Current.Request.QueryString.GetKey(1));
//sayfaya durum yazar
|
Daha
iyi anlamak için bir örnek üzerinde açıklayalım.
Default.aspx
için sayfa tasarımımız aşağıdaki gibi olsun

Kod
bloğumuzda aşağıdaki gibi olsun
|
protected void
butonadsoyad_Click(object sender, EventArgs e)
{
Response.Redirect("ogrencisonuclari.aspx?adsoyad="+TextBox1.Text);
}
protected void
butontckimlikno_Click(object sender, EventArgs e)
{
Response.Redirect("ogrencisonuclari.aspx?tcno="
+ TextBox2.Text);
}
|
Öğrencisonuclari.aspx
sayfasının page_load eventine sadece konuyu anlamanız adına şöyle bir örnek
yapabiliriz.
|
protected void
Page_Load(object sender, EventArgs e)
{
string sorgu;
if (!IsPostBack)
{
if (HttpContext.Current.Request.QueryString.GetKey(0)=="tcno")
{
sorgu
= "select * from sinavlar where tcno="
+ Request.QueryString["tcno"].ToString();
}
else if (HttpContext.Current.Request.QueryString.GetKey(0)
== "adsoyad")
{
sorgu
= "select * from sinavlar where
adsoyad=" + Request.QueryString["adsoyad"].ToString();
}
else
{
Response.Write("Hata oluştu");
return;
}
}
}
|
Sonuç
olarak gelen qs adına göre sorgumuzu değiştirerek sorgu sonucuna göre
kayıtların gelmesini sağlayabiliriz.
Umarım
yararlı olmuştur.
Yazan: Salih DEMİROĞ