asp.net sayfa yenileme sorunu

Kodla Büyü

desouza82

Aktif Üye
Mesajlar
237
arkadaşlar asp.net üzerinde birşeylerle uğraşıyorum. bir sayfada veritabanındaki kayıtları görüntülüyorum. bu kayıtları başka bir sayfada örneğin sil.aspx 'te siliyorum. bu silme sayfasından tekrar eski sayfaya yönlendirme yapıyorum. normalde benim seçtiğim kayıt veritabanından siliniyor. ama ben sayfayı yenile demeden o kayıt ekrandan gitmiyor. bunu nasıl yapabilirim.
 
Yönlendirmeyi nasıl yapıyorsun. Sayfayı baştan çağırmıyorsan cache den çağırıyordur. o yüzden değişmiyordur.
 
yetsin' Alıntı:
Yönlendirmeyi nasıl yapıyorsun. Sayfayı baştan çağırmıyorsan cache den çağırıyordur. o yüzden değişmiyordur.

evet ön bellekleme sorun yaratabilir . Yönlendirmeyi nasıl yapıyorsun sorusunun cevabıda önemli

Response.redirect diye birşeyler hatırlıyorum

kolay gelsin
 
hocam kodları görmem lazım ama x.aspx sayfasında düğmeye bastığında sil.aspx sayfasına gidiyor ordan x.aspx e geri dönüyor.

yönlendirmeyi response.redirect ile mi yapıyorsun yoksa postback url ile mi onu da bilmiyoruz.

öneri x.aspx in page_load duna

Repeater.DataBind() veya ne kullanıyorsan Detailview.DataBind() yaz. bir dene olmassa kodların ana mantığını paylaş bir bakalım
 
Ben kayıtlarımı şu şekilde herhangi bir sayfaya yönlendirmeden siliyorum.

.ASPX kısmı

<asp:DataList ID="dlKayıtlar"
Width="100%">
<ItemTemplate>
<table width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="30%"><%#Eval ("AdiSoyadi") %></td>
<td width="20%"><%#Eval ("Gorevi") %></td>
<td align="right">
<a href="Kayıtlar.aspx?KayıtId=<%#Eval("KayıtId") %>&islem=Sil"><img border="0" align="absmiddle" src="images/stopicon.jpg" /></a></td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>


.CS kısmı

protected void Page_Load(object sender, EventArgs e)
{
KayıtId = Request.QueryString["KayıtId"];
islem = Request.QueryString["islem"];

if (islem == "Sil")
{
*VeriGorevleri.cmd("Delete from Kayıtlar Where KayıtId=" + KayıtId);
Response.Redirect("Kayıtlar.aspx");
}
}
void KayıtCek ()
{
DataTable dtKayıtlar = VeriGorevleri.GetDataTable("Select * from Kayıtlar");
dlKayıtlar.DataSource = dtKayıtlar.DefaultView;
dlKayıtlar.DataBind();
}

* Not : VeriGorevleri bir class komutudur.
 
Hocam vallaha hocam asıl load'un en altına DataList1.DataBind() yazın Çözemezseniz. bence işlem sıralarında bi sıkıntı var yoksa response.redirect dediğinizde yenilenmesi lazım.

madem yönlendirme yok.

a tagı yerine button veya linkbutton kullanın

<asp:DataList ID="dlKayıtlar"
Width="100%">
<ItemTemplate>
<table width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="30%"><%#Eval ("AdiSoyadi") %></td>
<td width="20%"><%#Eval ("Gorevi") %></td>
<td align="right">
<asp:buuton id="dugme1" Commandargument='<%#Eval("KayıtId") %>'><img border="0" align="absmiddle" src="images/stopicon.jpg" /></asp:buuton></td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>


protected void Datalist_ItemCommand(object source, DataListCommandEventArgs e)
{

if (e.CommandName == "dugme1")
{

VeriGorevleri.cmd("Delete from Kayıtlar Where KayıtId=" + e.commandargument);
Datalist1.DataBind()

}
}

page_lodu kendine göre düzenle

bide nacizene öğüt "Delete from Kayıtlar Where KayıtId=" + KayıtId böyle komutlar kullanmayın bunun yerine sqlParameter kullanın yada OleDbParameter kullan nasıl kullanacağın basit bir araştırma ile öğrenirsin. yada yardımcı oluruz
 
Page Load'da tanımlaması lazım. Yoksa sayfa postback olmadan class komutlarıyla veritabanından kayıtlar silinmez!
 
refleto' Alıntı:
hocam kodları görmem lazım ama x.aspx sayfasında düğmeye bastığında sil.aspx sayfasına gidiyor ordan x.aspx e geri dönüyor.

yönlendirmeyi response.redirect ile mi yapıyorsun yoksa postback url ile mi onu da bilmiyoruz.

öneri x.aspx in page_load duna

Repeater.DataBind() veya ne kullanıyorsan Detailview.DataBind() yaz. bir dene olmassa kodların ana mantığını paylaş bir bakalım

hocam <a href="uye_sil.aspx?bilgi=<%response.write(veriler("okul_no"))%>">Sil</a> şeklinde bir kodla sil.aspx sayfasına okul_no gönderiyorum. diğer sayfada veritabanına bağlanıp siliyorum. response.redirect kullanarak geri dönüyorum. dil olarak vb .
 
silme page_loadsuz. sqlinjection karşı korumalı sqlParameter ile

hocam bir buna bakın.
 

Ekli dosyalar

hocam bende çok yeniyim. şöyle birşey. gereksiz bölümleri çıkardım. mesela burda yenile demeden silinen kayıt ekrandan gitmiyor.
 
Bind olayı silme olayında önce oluyordur belkide
önce silme olayı gerçekleşsin sonra verileri listelediğin control u bind() et
 
Kodlara baktım geyet temiz ve anlaşılır. verileri litelemek için bir control de kullanmamışsın. :?
break point brakıp kodları adımlamayı deneyin birde. yönlendirmeden sonra neler oluyor adım adım inceleyin.

sonra şunlarda aklıma geliyor
response.Redirect("kayit_islemleri.aspx?bos=1")%> maksat önbellekleme yapıyorsa tarayıcı onu devredışı bırakmak

response.Redirect("http:\\www.site.com\kayit_islemleri.aspx")%>
 
hocam yanlış anlama bunu yermek amacıyla söylemiyorum hatta iyi olarak söylüyorum. hiç .Net gibi yazmamışsın kodu sanki sade asp ama bu yüzden hızlı sanırım access işini bitirmeden sen sayfaya yönleniyorsun yani senin sayfa access den hızlı.

sadece araya bir system.Threading.Thread.Sleep(1000) kodu attım. yani silme sayfasında 1 sn beklettim herşey tamam oldu.

aşşağıdaki de kodu senin koddan 1 satır fazlası var.

Bir nevi Access .Net uyumsuzluğu olmuş (Bug) senin yazdığın herşey doğru yoksa bence sqlserver ile çalış.
 

Ekli dosyalar

refleto' Alıntı:
hocam yanlış anlama bunu yermek amacıyla söylemiyorum hatta iyi olarak söylüyorum. hiç .Net gibi yazmamışsın kodu sanki sade asp ama bu yüzden hızlı sanırım access işini bitirmeden sen sayfaya yönleniyorsun yani senin sayfa access den hızlı.

sadece araya bir system.Threading.Thread.Sleep(1000) kodu attım. yani silme sayfasında 1 sn beklettim herşey tamam oldu.

aşşağıdaki de kodu senin koddan 1 satır fazlası var.

Bir nevi Access .Net uyumsuzluğu olmuş (Bug) senin yazdığın herşey doğru yoksa bence sqlserver ile çalış.

hocam çok teşekkür ederim. senin yazdığın satırı ekledim ve bu şekilde oldu. ayrıca kodlar konusunda haklısın. daha önceden asp biliyordum. asp bilgim fena sayılmazdı. tabii kullanmaya kullanmaya unutulmuş. şimdide asp.net öğrenmeye başlıyorum. ve gerçekten çok yeniyim. yazılanlardan sende anlamışsın zaten. asp.net için önerebileceğin kaynak varmı hocam?
 
kod-Lab'ın Asp.Net 3.5 Kitabı ile başla. sonra Ado.net(.NET SQL bağlantı elemanlarını) anlatan bir kitap bul.
 
Sayın hocalarım,

Bu konu bitmiş olabilir ama konuya bakanlara faydalı olması dileğiyle şunları belirteyim dedim.

- Web sunucularında çok özel bazı durumlarda Sleep metodu kullanılmalı. Web sunucusu gibi bir çok isteğe cevap veren bir bilgisayarda istekleri (burada çalıştırılan sayfayı) kasten bekletmek doğru değildir.
- Sayfadaki hata silme sayfasında bağlantının kapatılmamış olmasındandır. Response.Redirect'den önce Baglanti_Nesnesi_Adi.Close() ile bağlantı kapatılmalı.
- Bağlantı demişken, bağlantı havuzunun çalışabilmesi için (bağlantıyı kapatsanızda başka istekler tarafından aynı bağlantının kullanılabilmesi) bağlantı için kullanılan dizenin (Connection String) her bağlantı oluşturulduğunda aynı olması gerekir. Buna dikkat ederek havuzun nimetlerinden faydalanın.
- ASP.NET sayfalarını eski ASP veya PHP sayfaları gibi kullanmayın. Buradaki örnekteki gibi HTML içinde
Kod:
<% %>
ile kod blokları oluşturup yazdığınız kodlar derlenmez. Dolayısıyla daha yavaş çalışırlar. Bunun yerine
Kod:
<script runat="server">
...
</script>
bloğu içine yordam (Sub) ve fonksiyonlar yazarak ve HTML içinde hafif sıklet web kontrollerini (Label veya buradaki örneğe uygun olarak DataGrid yerine Repeater) eklemek suretiyle nesneye yönelik programlama yeteneklerini ve avantajlarını kullanmak (ki ASP.NET nesneye yöneliktir) çok daha doğrudur. Bu şekilde kodlama yapacaksanız PHP kullanın. Stilinize daha uygun olur ve bence daha hızlı çalışır.

Eğer yapabilirseniz StringBuilder ile bir yordam içinde çıktı olacak stringi (verileri listeleyen tabloyu) oluşturun ve bir Label kontrolünün Text özelliğine atayın ya da kendi hafif sıklet web kontrolünüzü yazın. Daha hızlı sayfalarınız olur.

- Access MDB veya SQL Server MDF gibi tek dosya halinde veritabanları kullanacaksanız bunları App_Data klasörü içine koyun.

- Silme sayfasındaki gibi, sayfayı PHP'de kullanılan include sayfalarına benzer şekilde eksik etiketlerle yazmayın. HTML, HEAD, TITLE ve BODY mutlaka olsun. (ASP.NET'de sayfalar birer nesnedir. Bir sayfa çağırıldığında Page isimli bir nesne oluşturulur.) Bu tür sayfalar yerine ASP.NET'de kendi web kontrollerinizi veya User Control denilen (Kullanıcı kontrolleri / ASCX dosyaları) kontrolleri kullanın.

İyi çalışmalar.
 
ajax ile yapabilirsin bunu. Aklıma gelen en basit bileşen updatepanel'dir. 2 yıl kadar önce benzer bir uygulama yapmıştım.
 
BBNET
Geri
Üst