Repeater Kontrolü İle Veri Sıralama

25 Nisan Pazar, 2010 | Asp.net C# Ado.Net /*Yorumlar (0)*/

Repeater, veri kontrolleri içinde en sevdiğimdir. Onu esnek hale getiren basit yapısı da ben en cezbeden özelliğidir. Basit olduğundan dolayı görevi sadece veri göstermek. Peki sıralama yapmak istersek ne yapmalıyız?
Aslında cevap basit;
HeaderTemplate içine LinkButton kontrolü yerleştirip, sıralama bilgilerini de ViewState içinde tutacağız.

Burada tablotable başlıklarına birer LinkButton ve Image kontrolü koyuyoruz. LinkButton sıralama komutunu işlerken, Image kontrolleri de sıralama yapılan satırları işaret edecek.

<HeaderTemplate>
    <table>
        <tr class="head">
            <th style="width: 65%">
                <asp:LinkButton ID="h1" runat="server" Text="Product Name"
                    CommandName="name" CommandArgument="ProductName" />
                <asp:Image ID="ProductName" runat="server" ImageAlign="AbsMiddle" />
            </th>
            <th style="width: 20%">
                <asp:LinkButton ID="h2" runat="server" Text="Unit Price"
                    CommandName="price" CommandArgument="UnitPrice" />
                <asp:Image ID="UnitPrice" runat="server" ImageAlign="AbsMiddle" />
            </th>
            <th style="width: 15%">
                <asp:LinkButton ID="h3" runat="server" Text="Unit Stok"
                    CommandName="stock" CommandArgument="UnitsInStock" />
                <asp:Image ID="UnitsInStock" runat="server" ImageAlign="AbsMiddle" />
            </th>
        </tr>
</HeaderTemplate>

Sıralama sırasından iki adet bilgiye ihtiyaç var. Sıralanacak veri kolonu ve sıralama yönü. Bu bilgileri ViewState içinde saklıyoruz. Kullanım kolaylığı olması için Propertyözellik olarak tanımlıyoruz.

public string SortOrder
{
    get
    {
        if (ViewState["SortOrder"] == null)
            ViewState["SortOrder"] = "Asc";
        return ViewState["SortOrder"].ToString();
    }
    set
    {
        ViewState["SortOrder"] = value;
    }
}
 
public string SortColumn
{
    get
    {
        if (ViewState["SortColumn"] == null)
            ViewState["SortColumn"] = "ProductName";
        return ViewState["SortColumn"].ToString();
    }
    set
    {
        ViewState["SortColumn"] = value;
    }
}

Sıralama komutu için yazılacak Ado.Net kodları.

"Kolon adı parametre olmadığı için String nesnedinin Format metotunu kullandım."

void GetData()
{
    SqlConnection con = new SqlConnection(
        "Data Source=.;Initial Catalog=Northwind;Integrated Security=True");
    string query = string.Format(
        "Select ProductName,UnitPrice,UnitsInStock From Products Order by {0} {1}",
            SortColumn, SortOrder);
    SqlCommand com = new SqlCommand(
        query, con);
    con.Open();
    rpt1.DataSource = com.ExecuteReader();
    rpt1.DataBind();
    con.Close();
}

Uygulama sonunda elde edeceğimiz veri listesi.

Repeater Sort

Kalan detaylara projeyi indirip bakabilirsiniz.

Projeyi indir.

Yorum Yaz

Ad

Email (sahte adresli yorumlar silinir.)

Yorum