Cevap Geçmişi
«« Soruya geri dön
21.03.17 16:15
Eğer Repeater içindeki bir Label'e yazdırmak istiyorsan Repeater'in ItemDataBound olayını kullanman lazım. Bununla ilgili bir örnek şurada var: http://turkegitim.net/Ders_Notlari_Ve_Ornekler/ASP.NET/Tek_Sayfada_Veritabani_Kayit_Islemleri_Listeleme_Ekleme_Degistirme_Silme Bunun haricinde sorgunda kategori isimleri alınmıyor. Herhalde kodun devamında birşeyler var. Ayrıca, eğer bir Repeater kullanıyorsan ve amaç sadece kayıtları yazdırmaksa kayıtları bir DataSet'e almana gerek yok. DataSet bu iş için ağır gelir. Kayıtları değiştirmeyeceksen DataSet kullanma. Bunun yerine SqlDataReader kullanmalısın. Eğer doğru anladıysam senin istediğini aşağıdaki kod yapar (çalıştırmadım, bazı hatalar olabilir, alan adlarını ve bağlantı dizesini kendine göre düzenlemen gerekir). <%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<!DOCTYPE html>
<script runat="server">
void Page_Load(Object o, EventArgs e)
{
SqlConnection baglanti = new SqlConnection("BağlantıDizesiBuraya");
SqlCommand cmd = new SqlCommand("SELECT COUNT(SayfaId) AS SayfaAdet, KategoriAdi FROM Sayfalar GROUP BY KategoriAdi", baglanti);
baglanti.Open();
rpt1.DataSource = cmd.ExecuteReader();
rpt1.DataBind();
baglanti.Close();
}
protected void rpt1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Label kategoriAdi = (Label)e.Item.FindControl("lblKategoriAdi");
Label sayfaSayisi = (Label)e.Item.FindControl("lblSayfaSayisi");
kategoriAdi.Text = DataBinder.Eval(e.Item.DataItem, "KategoriAdi").ToString();
sayfaSayisi.Text = DataBinder.Eval(e.Item.DataItem, "SayfaAdet").ToString();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<ul>
<asp:Repeater ID="rpt1" runat="server" OnItemDataBound="rpt1_ItemDataBound">
<ItemTemplate>
<asp:Label ID="lblKategoriAdi" runat="server" />
<asp:Label ID="lblSayfaSayisi" runat="server" />
</ItemTemplate>
</asp:Repeater>
</ul>
</form>
</body>
</html>
Ekleyen: cevapsitesi
Değiştiren: cevapsitesi
21.03.17 13:13
Eğer Repeater içindeki bir Label'e yazdırmak istiyorsan Repeater'in ItemDataBound olayını kullanman lazım. Bununla ilgili bir örnek şurada var: http://turkegitim.net/Ders_Notlari_Ve_Ornekler/ASP.NET/Tek_Sayfada_Veritabani_Kayit_Islemleri_Listeleme_Ekleme_Degistirme_Silme Bunun haricinde sorgunda kategori isimleri alınmıyor. Herhalde kodun devamında birşeyler var. Ayrıca, eğer bir Repeater kullanıyorsan ve amaç sadece kayıtları yazdırmaksa kayıtları bir DataSet'e almana gerek yok. DataSet bu iş için ağır gelir. Bunun yerine SqlDataReader kullanmalısın. Eğer doğru anladıysam senin istediğini aşağıdaki kod yapar (çalıştırmadım, bazı hatalar olabilir). <%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<!DOCTYPE html>
<script runat="server">
void Page_Load(Object o, EventArgs e)
{
SqlConnection baglanti = new SqlConnection("BağlantıDizesiBuraya");
SqlCommand cmd = new SqlCommand("SELECT COUNT(SayfaId) AS SayfaAdet, KategoriAdi FROM Sayfalar GROUP BY KategoriAdi", baglanti);
baglanti.Open();
rpt1.DataSource = cmd.ExecuteReader();
rpt1.DataBind();
baglanti.Close();
}
protected void rpt1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Label kategoriAdi = (Label)e.Item.FindControl("lblKategoriAdi");
Label sayfaSayisi = (Label)e.Item.FindControl("lblSayfaSayisi");
kategoriAdi.Text = DataBinder.Eval(e.Item.DataItem, "KategoriAdi").ToString();
sayfaSayisi.Text = DataBinder.Eval(e.Item.DataItem, "SayfaAdet").ToString();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<ul>
<asp:Repeater ID="rpt1" runat="server" OnItemDataBound="rpt1_ItemDataBound">
<ItemTemplate>
<asp:Label ID="lblKategoriAdi" runat="server" />
<asp:Label ID="lblSayfaSayisi" runat="server" />
</ItemTemplate>
</asp:Repeater>
</ul>
</form>
</body>
</html>
Ekleyen: cevapsitesi
En fazla 3 eski durum gösterilir.