Yazılım.
CevapSitesi.com Beta!
Çözüm Noktası
Facebook, Twitter, Google+ veya e-posta ile paylaşın.
| Sorular | Makaleler | Üyeler | Etiketler  | İletişim
Soru sormak ya da cevap vermek için;
giriş yapın veya üye olun.

Sosyal medya hesaplarınızla da giriş yapabilirsiniz.

Yazılım Soruları

0

repeaterle kategori başlıkların yanına kategori içindeki başlık sayısını yazdırma

repeaterle kategori adını çekiyorum
bir bölümdeki id ye göre istediğim şartları ekleyerek içerisindekiler saydırabiliyorum. yalnız aşağıdaki kodla elde ettiğim sonucu dinamik olarak her kategori için yapamıyorum.

...     SqlDataAdapter da = new SqlDataAdapter("select COUNT(SayfaId)as SayfaAdet from Sayfalar where SayfaKategoriId='"+SayfaKategoriId+"'", system.baglan());

        DataSet ds = new DataSet();
        da.Fill(ds);
        string sayfaadet = ds.Tables[0].Rows[0]["SayfaAdet"].ToString();
        Label LblSayfaAdet = new Label();
        PlaceHolder1.Controls.Add(LblSayfaAdet);
        LblSayfaAdet.Text = sayfaadet;
ama Sayfa kategorilerini çektiğimde o kategoriye ait içerisindeki kategori sayısını yazdıramıyorum.
Sanırım iç içe repeaterle yapılabilri ama bunu bir türlü yapamadım bir örnekle enbasitçe nasıl yapılabilir?

örn:
Eğitim     (25) 
gibi.

Soran:15.03.17 22:48
misafir  

1 Cevap

0
Eğer Repeater içindeki bir Label'e yazdırmak istiyorsan Repeater'in ItemDataBound olayını kullanman lazım.


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>




Cevaplayan: 21.03.17 13:13
cevapsitesi
102,035p 16ü