Postback olan sayfaya yeni değer göndermek

Kodla Büyü

mavi85

Seçkin Üye
Seçkin Üye
Mesajlar
1,085
Asp.net uzmanları yardımlarınızı bekliyorum:
Önceki ana sayfadan bu sayfanın(HaberDetay.aspx) haber linkine tıklayınca veritabanından haberin HaberId'sini alıp global.asax üzerinden bu sayfaya yolluyor ve bu sayfada RouteData.Values ile çekilip ilgili haber HaberId ile sorgulanıp sayfaya getiriliyor. Buraya kadar sorun yok. Ama sayfanın altında bu habere yorum bilgilerini textbox'lara girip butona tıklatığımda yeni eklediğim yorumun da Response.Redirect("HaberDetay.aspx"); yani postback olduğunda sayfada görünmesini istiyorum. Bu sefer postback işleminden sonra HaberId'yi global.asax'tan alamayacağım için ben de en altta Response.Redirect("HaberDetay.aspx?deger="+HaberId); ile sayfaya aynı değeri tekrar gönderip bu sefer Request.Querystring ile aldım ve bunu postback kontrol döngüsünün içinde yaptım.

Yorumm bilgilerini textboxlara yazıp tıkladığımda veri tabanına veri ekleniyor ama sayfayı yeniden yüklemiyor ve şu şekilde hata alıyorum:
Incorrect syntax near '='.(Select * from Haberler Where HaberId=) sanırım geri döndürdüğüm HaberId'yi tanımıyor.
Yeni yaptığım yorumu sayfadaki önceki yorumların yanına eklemek için(postback olduktan sonra Yorumlar tablosunu bi daha yüklemek için) geriye HaberId'yi dğru şekilde nasıl göndermeliyim? nerede yanlış yapıyorum?

---------------------------------------------------------------------------------------------------------------------------
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class HaberDetay : System.Web.UI.Page
{
kaynak metot = new kaynak();
public static string HaberId = "";
public static string HaberAdi = ""; //google SEO için h1 etiketinin içinde Response.Write ile direkt çekmek için public string diye tanımlıyoruz.
protected void Page_Load(object sender, EventArgs e)
{



//hangi haber başlığına tıklandıysa varsayılan.aspx'te a href ile o haber başlığının HaberId'si global.asax'a gidiyor,
//global.asax'tan da HaberId'yi çekiyoruz, böylece tıklanan haberin bilgilerini bu sayfadaki Literal'lere yüklüyoruz.
if (Page.IsPostBack == false)
{
HaberId = Ayarlar.sayikontrol(Ayarlar.Temizle(RouteData.Values["HaberId"].ToString())); //sayfa ilk yüklenirken global.asax'tan gelen HaberId
}
else
{
HaberId= Request.QueryString["deger"];//sayfa postback olduğunda geri gönderdiğim HaberId
}
DataRow dr = metot.satirim("Select * from Haberler Where HaberId=" + HaberId); //hatayı bu satırda veriyor butona tıklayına
if (dr != null)
{
HaberAdi = dr["Baslik"].ToString(); //h1'in içinden çektiğimiz de mouse ile üzerinde bekleyince gelecek. SEO için.
LiteralBaslik.Text = HaberAdi;
LiteralDetay.Text = "<img src=\"HaberResimleri/150/" + dr["Resmi"].ToString() + "\"align=\"left\"hspace=\"5\"/>" + dr["Detay"].ToString();
LiteralEklenmeTarihi.Text = dr["EklenmeTarihi"].ToString();
LiteralOkunmaSayısı.Text = dr["Hit"].ToString();
metot.guncelle("update Haberler set Hit=Hit+1 where HaberId=" + HaberId);


DataTable yorum = metot.tablom("select * from Yorumlar where HaberId=" + HaberId);
if (yorum.Rows.Count > 0)
{
DataList1.DataSource = yorum;
DataList1.DataBind();
}
else LiteralBilgi.Text = "Henüz yorum yapılmadı";


}



}


protected void btngonder_Click(object sender, EventArgs e)
{
SqlConnection baglantim = metot.baglan();
SqlCommand ekle = new SqlCommand("Insert into Yorumlar(HaberId,AdSoyad,Yorumu,Tarih,Onay) values(@HaberId,@AdSoyad,@Yorumu,@Tarih,@Onay)", baglantim);
ekle.Parameters.AddWithValue ("HaberId", HaberId);
ekle.Parameters.AddWithValue("AdSoyad", Txtbx1.Text);
ekle.Parameters.AddWithValue("Yorumu", txtbx2.Text);
ekle.Parameters.AddWithValue("Tarih", DateTime.Now.ToString());
ekle.Parameters.AddWithValue("Onay", "0");
ekle.ExecuteNonQuery();
ekle.Dispose();
baglantim.Close();


Response.Redirect("HaberDetay.aspx?deger="+HaberId); //Burada HaberId'yi geri gönderdim ama tanımıyor.


}
}
 

Ekli dosyalar

  • yorum.JPG
    yorum.JPG
    37.7 KB · Görüntüleme: 922
fotoğrafta gördüğünüz yorumlar sayfa ilk yüklenirken haberin linkine tıklanmasıyla global.asax'tan gelen HaberId ile yüklenen yorumlar, bana yorumlar butonuna tıklayınca yorumları yükleyecek HaberId lazım.
 
hocam bulunduğun sayfada iken neden response.redirect ile tekrar aynı sayfaya gönderdin ki,
gördüğüm kadarı ile yorumlar gridde zaten,
girid.databind() diyerek gridi yenileyebilirsin
şeöyle yapsan hocam

Kod:
void yorumyukle
{
DataTable yorum = metot.tablom("select * from Yorumlar where HaberId=" + HaberId);
 if (yorum.Rows.Count > 0)
 {
 DataList1.DataSource = yorum;
 DataList1.DataBind();
 }
 else LiteralBilgi.Text = "Henüz yorum yapılmadı";
}
load olayındada
butonun clik olayındada bunu çağırsan ve response.redirect i kaldırsan sanırım sıkıntın çözülür
 
HaberId'yi string olarak tanımlamışsınız.
SQL'de string göndermek için, HaberId nin iki tarafına ' ' işaretleri koymanız gerekiyor.
Hata veren satırı aşağıdaki şekilde değiştirmek sorunu çözebilir:
Kod:
DataRow dr = metot.satirim("Select * from Haberler Where HaberId='" + HaberId+"'");
 
celikumit' Alıntı:
hocam bulunduğun sayfada iken neden response.redirect ile tekrar aynı sayfaya gönderdin ki,
gördüğüm kadarı ile yorumlar gridde zaten,
girid.databind() diyerek gridi yenileyebilirsin
şeöyle yapsan hocam

Kod:
void yorumyukle
{
DataTable yorum = metot.tablom("select * from Yorumlar where HaberId=" + HaberId);
 if (yorum.Rows.Count > 0)
 {
 DataList1.DataSource = yorum;
 DataList1.DataBind();
 }
 else LiteralBilgi.Text = "Henüz yorum yapılmadı";
}
load olayındada
butonun clik olayındada bunu çağırsan ve response.redirect i kaldırsan sanırım sıkıntın çözülür
ümit hocam sonuç başarılı...daha pratik oldu böyle düşünememiştim. çok teşekkür ederim
 
BBNET
Geri
Üst