Osman KURT

Yazılım Uzmanı

ASP.Net de DataList ve Repeater için Class Oluşturmak

Arkadaşlar asp.net projemizde en çok kullandığımız şeylerdir. DataList ve Repater kullanmak. Normal yollardan bu araçları kullnarak verileri listelemek için veritabanına bağlanmak sorgumuzu yazmak datatable kullanmak gibi türlü türlü işlem yapmaktayız.Tabiki bunu bütün bağlantılarda yapıyoruz birde. Ama yacağamız bir class la bunu tamamen ortadan kaldırabiliriz. Şimdi bu yazımda size 2 adet class göstreceğim. ve bu class ları yazdıktan sonra işimizin nasıl kolaylaştığını gösreceksiniz. İlk olarak veritabanı bağlantımızı sağlamak için baglan adında bir class oluşturalım. ve içine şu kodlarımızı yazalım.

public static SqlConnection baglanti = new SqlConnection("server=loclahost;uId=kullaniciadi;database=dbadi;pwd=sifre;multipleactiveresultsets=true");

Bu classımız bu kadar artık veritabanımıza bağlanırken Connection yerine bu classımızı kullanacağız.

Şimdi sıra verileri listelememiz için kullanacağımzı classımıza geldi. Gelin onuda yazalım. Bu classımızın adıda DataListDoldur olsun.

static public DataTable DataTableAl(string sqlcumle)
{
if (baglan.baglanti.State == ConnectionState.Closed)
{
baglan.baglanti.Open();
}
SqlDataAdapter adap = new SqlDataAdapter(sqlcumle, baglan.baglanti);
DataTable dt = new DataTable();
adap.Fill(dt);
return dt;
}

Bu classımız da bu kadar arkadaşlar. Şimdiki işlemimiz bu classı kullanarak verilerimizi listelemek.

Ön sayfamızda <%#Eval("alanadi") şeklinde Datalist <ItemTemplate> içinda tanımlamalarımızı tamamldıktan sonra cs tarafında yacağımız kod şöyle;

Repeater1.DataSource = datalistDoldur.DataTableAl("select * from Sayfalar where AktifMi=1 and root=0");
Repeater1.DataBind();

DataList2.DataSource = datalistDoldur.DataTableAl("select * from Haberler where AktifMi=1 order by HaberId desc");
DataList2.DataBind();

2 yapımız daaynı şekilde kullanılmaktadır. Siz hangisini tercih ederseniz bilemem kullanmakta özgürsünüz.

Görüşmek Üzere

Osman KURT

Yazılım Geliştirici ve Grafiker

XML İçinden Şartlı Veri Çekme

Arkadaşlar artık web projelerinde xml kullanmama gibi bir şansımız kalmadı gibi birşey. Daha önceki yazılarımda xml veri oluşturmayı sizlere göstermiştim şimdi ise xml verilerinin içinden istediğimiz veriyi çekmeyi göstereceğim.

Kodlarımızı aşşağıda ki gibi kısa ve öz;

XDocument documnet = XDocument.Load(@"d:\osmankurt.xml");
            var query = from q in documnet.Element("Rehber").Elements()
                        where q.Attribute("TCNo").Value == "123456789"
                        select q;
            query.Remove();
            documnet.Save(@"d:\osmankurt.xml");

İlk olarak belirlediğimiz noktadaki xml dosyamızı load ediyoruz yani yüklüyoruz. Daha sonra içinde ki istediğimiz veriyi where  ile çekiyoruz. Mantık konusunda herhangi bir sıkıntı çekeceğinizi zannetmiyorum. Ve son aşama olarakta yeni xml verilerimizi kaydediyoruz. Tabi ister üzerine yazarsınız isterseniz yeni bir hedef oluşturabilir oaraya da yazdırabilirsiniz.

Yararlı olması dileğiyle görüşmek üzere

Osman KURT

Yazılım Geliştirici ve Grafiker 

Asp.Net de İç İçe Repeater Kullanımı

 

Genel de menu yaparken yada bir listeleme yapacağımız zaman kullanacağımız bir özelliktir. Bende daha öncelerden brojelerimde kullandım ve faydası oluyor.

Üstelik kullanımı da çok basit. İsterseniz lafı uznatmadan koldalrımızı vereyim ben.

Veritabanımız;
SayfaId
SayfaAd_tr
root

Veritabanımız bu kadar arkadaşlar ister mssql ister access kullanın fark etmez.

İlk olarak default.aspx sayfamızı tasarlmaya başlayalım.

 

<asp:Repeater ID="Repeater1" runat="server" onitemdatabound="Repeater1_ItemDataBound">
        <ItemTemplate>
            <%#Eval("SayfaAd_tr") %>
            <br />
            <asp:Repeater ID="Repeater2" runat="server">
                <ItemTemplate>
                    <%#Eval("SayfaAd_tr")%><br />
                </ItemTemplate>
            </asp:Repeater>
        </ItemTemplate>
    </asp:Repeater>

Default.aspx sayfamızda ki kodlarımız bu kadar arkadaşlar.

Şimdi ise Default.aspx.cs tarafında yzacağımız kodları görelim.

 

protected void Page_Load(object sender, EventArgs e)
{
        Repeater1.DataSource = datalistDoldur.DataTableAl("Select * from Sayfalar Where root=0");
        Repeater1.DataBind();
    }
    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        Repeater rp = (Repeater)e.Item.FindControl("Repeater2");
        rp.DataSource = datalistDoldur.DataTableAl("select * from Sayfalar where root=" + Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "SayfaId").ToString()));
        rp.DataBind();
    }

Öncelikle ilk Repater'mızı load olayında dolduruyoruz. Ben kendim daha önceden yazdığım claslarımı kullandım sizin yapmanız gereken eğer class ınız yoksa object orianted bilginiz de yoksa önce connection sağlayıp sonra command la sorgu oluşturup bağlantıyı açarak datatable yardımıyla repeater imizi doldurabilirsiniz. yanlış hatılamıyorsam daha önceki yazılarımda bulunmakta.

Daha sonra ana repaterimizin ItemDataBound olayına üst kısımda bulunan diğer kodlarımızı yazıyorsunuz. 
İşlem bu kadar basit arkadaşlar. İsterseniz oluşturduğunuz repeater lara style verebilir görünümü daha güzel hale getirebilirsiniz.

 

Görüşmek üzere
Osman KURT
Yazılım Geliştrici Ve Grafiker