sayfandaki kod yapısından biraz bahsetmen gerekecek sanırım..
Sayfa kendi içerisinden tekrar çağırılıyor. Sayfa ilk yüklendiğinde iki adet label var. Tekrar çağrıldığında bu labelların içerikleri kayboluyor. Bunu nasıl engelleyebilirim?
Label değerleri başka bir sayfadan QueryString ile alınıyor. her seferinde farklı bir değer gelebilir oradan.
Label1.Text = Request.QueryString.Get("x");
Label2.Text = Request.QueryString.Get("y");
x ürünün kategorisi y ise alt kategorisi. Bu değerlere göre datalistte listeleme yapıyorum. Buraya kadar sorun yok. Datalistte ürünler uzayıp gidiyor aşağıya doğru. Bunun için sayfalandırma işlemi yaptım. Sayfalandırmayı da yapıyorum.
if (!Page.IsPostBack)
{
int i;
for (i = 1; i <= ToplamSayfaSayisi; i++)
Label9.Text = Label9.Text + "<a href=urunler.aspx?sayfa=" + i + ">" + i + "</a> ";
try
{
Baslangic = int.Parse(Request.QueryString["sayfa"].ToString());
txtStart.Text = Baslangic.ToString();
DatayiDoldur();
}
catch
{
Baslangic = 1;
}
}
Sayfalandırmada böyle bir kod var.
Sorun şu: sayfa 1 den herhangi bir sayfaya gidildiğinde label içerikleri kayboluyor. Dolayısıyla veri sorgulaması yapılamıyor.
bu verdiğim kod parçası urunler.aspx e ait kodlar ise;
sayfaya querysting ile geldiğinden ve başka bir querystring ile yine aynı sayfaya yönlendirdiğinden dolayı , if(!Page.IsPostBack) kontrolü bir işe yaramayacaktır, her seferinde o if bloğunun içine girecektir. Bu yüzden viewstate ya da session kullanarak kontrol etmen gerekecek..
Evet bı kodlar urunler.aspx load olayında. Oradaki Label9 da sorun yok. Oraya 1 2 3 4 şeklinde sayfa numaraları linkli olarak geliyor. Örneğin 2 ye tıkladığında urunler aspx i tekrar çağırıyor. Label1 ve Label2 yi sabit yaparak denedim tamamı çalıştı. Ama sabit değil işte. QueryStringle geliyor.
cevabı yukarıda yazmıştım? ..viewstate ya da session kullanarak kontrol etmen gerekecek..
if (!Page.IsPostBack) bloğunu kaldır.
---------------------------------------------------
int i;
for (i = 1; i <= ToplamSayfaSayisi; i++)
Label9.Text = Label9.Text + "<a href=urunler.aspx?sayfa=" + i + ">" + i + "</a> ";
try
{
Baslangic = int.Parse(Request.QueryString["sayfa"].ToString());
txtStart.Text = Baslangic.ToString();
DatayiDoldur();
}
catch
{
Baslangic = 1;
}
@writeLine sanırım sorunu tam olarak anladığından şüphelisin benim gibi
label1 ve label2 if (!Page.IsPostBack) bloğunun içinde değilmiş zaten?
sorunu tam olarak anlatamamış, benim anladığım şu şekilde:
sayfaya üst ve alt kategori id leri ile geliniyor ve kayıt sayısına göre sayfalandırma sistemi ekleniyor ve bu sayfalandırma yaptığı linklerden birisine tıkladığında kategori id sini alamıyor?
Eğer doğru anladıysam,sorunu çözmenin yolları şöyle olabilir:
1. Sayfalama yaptırırken linklerde kategori id lerini de verirsin
...urunler.aspx?"<a href=urunler.aspx?kat1id="+Request.QueryString.Get ("x")+"&kat2id="+Request.QueryString.Get("y")+"&sa yfa=" + i + ">" + i + "</a> ";
2. bu sayfaya ilk gelindiği anda kategori id leri session a atılır ve datalisti doldururken select cümlesinde kategori id leri Session dan çekilir..
UuuR sorun tam olarak senin anlattığın gibi. Teşekkürler. Dediklerini deneyeceğim. Daha önce hiç sesion kullanmadım. Bu konuda kaynak bir makale türü birşey var mı? Ya da bir açıklama yapabilir misiniz kısaca?
Hele şükür. Halloldu. UuuR sağolasın kardeş. Sayende Sesionu da öğrenmiş oldum. İlk yüklendiğinde QueryStringle Label lara alıyorum. Label1 boş olmadığı için Sesionu yüklüyor. 2.sefer yüklendiğinde QueryString boş geliyor. Bu yüzden labellar boşalıyor. Sesionları tekrar geri yüklüyor. if (Label1.Text != "") bu if i kullanmadığımda Sesionların içi boşalıyor. O yüzden label boş değilken sadece bir defa sesionu yüklüyor.
Teşekkürler. Herkese iyi çalışmalar.
Label1.Text = Request.QueryString.Get("x");
Label2.Text = Request.QueryString.Get("y");
if (Label1.Text != "")
{
Session["x"] = Label1.Text;
Session["y"] = Label2.Text;
}
Label1.Text = Session["x"].ToString();
Label2.Text = Session["y"].ToString();
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks