Aracılığıyla paylaş


Özelleştirilmiş Sıralama Kullanıcı Arabirimi Oluşturma (VB)

tarafından Scott Mitchell

PDF'i indirin

Sıralanmış verilerin uzun bir listesini görüntülerken, ayırıcı satırlar ekleyerek ilgili verileri gruplandırmak çok yararlı olabilir. Bu öğreticide, böyle bir sıralama kullanıcı arabiriminin nasıl oluşturulacağını göreceğiz.

Giriş

Sıralanmış sütunda yalnızca birkaç farklı değerin bulunduğu uzun bir sıralanmış veri listesi görüntülerken, son kullanıcı fark sınırlarının tam olarak nerede olduğunu ayırt etmek zor olabilir. Örneğin, veritabanında 81 ürün vardır, ancak yalnızca dokuz farklı kategori seçeneği vardır (sekiz benzersiz kategori artı NULL seçenek). Deniz Ürünleri kategorisine giren ürünleri incelemek isteyen bir kullanıcının durumunu düşünün. Tek bir GridView'daki tüm ürünleri listeleyen bir sayfadan, kullanıcı en iyi seçeneğinin sonuçları kategoriye göre sıralamak olduğuna karar verebilir ve bu da tüm Deniz Ürünleri ürünlerini birlikte gruplandıracaktır. Kategoriye göre sıraladıktan sonra, kullanıcının, deniz ürünleri grubundaki ürünlerin nerede başlayıp nerede bittiğini bulmak için listeyi incelemesi gerekir. Sonuçlar, Deniz Ürünleri ürünlerini bulmak kategori adına göre alfabetik olarak sıralandığından zor değildir, ancak yine de kılavuzdaki öğelerin listesini yakından taramayı gerektirir.

Sıralanmış gruplar arasındaki sınırları vurgulamak için birçok web sitesi, bu gruplar arasında ayırıcı ekleyen bir kullanıcı arabirimini devreye alır. Şekil 1'de gösterilenler gibi ayırıcılar, kullanıcının belirli bir grubu daha hızlı bulmasını, sınırlarını tanımlamasını ve verilerde hangi ayrı grupların mevcut olduğunu belirlemesini sağlar.

Her Kategori Grubu Açıkça Tanımlanmış

Şekil 1: Her Kategori Grubu Açıkça Tanımlanmıştır (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Bu öğreticide, böyle bir sıralama kullanıcı arabiriminin nasıl oluşturulacağını göreceğiz.

1. Adım: Standart, Sıralanabilir GridView Oluşturma

Gelişmiş sıralama arabirimini sağlamak için GridView'u nasıl geliştirebileceğinizi keşfetmeden önce, önce ürünleri listeleyen standart, sıralanabilir bir GridView oluşturalım. Öncelikle CustomSortingUI.aspx klasöründeki PagingAndSorting sayfasını açarak başlayın. Sayfaya bir GridView ekleyin, özelliğini ID olarak ProductList ayarlayın ve yeni bir ObjectDataSource'a bağlayın. ObjectDataSource'ı kayıtları seçmek için ProductsBLL sınıfını ve GetProducts() yöntemini kullanacak şekilde yapılandırın.

Ardından, GridView'ı yalnızca ProductName, CategoryName, SupplierName, UnitPrice BoundFields ve Sonlandırılan CheckBoxField içerecek şekilde yapılandırın. Son olarak, GridView'ın akıllı etiketinde Sıralamayı Etkinleştir onay kutusunu işaretleyerek (veya AllowSorting özelliğini true olarak ayarlayarak) GridView'ı sıralamayı destekleyecek şekilde yapılandırın. Sayfaya CustomSortingUI.aspx bu eklemeleri yaptıktan sonra bildirim temelli işaretleme aşağıdakine benzer görünmelidir:

<asp:GridView ID="ProductList" runat="server" AllowSorting="True"
    AutoGenerateColumns="False" DataKeyNames="ProductID"
    DataSourceID="ObjectDataSource1" EnableViewState="False">
    <Columns>
        <asp:BoundField DataField="ProductName" HeaderText="Product"
            SortExpression="ProductName" />
        <asp:BoundField DataField="CategoryName" HeaderText="Category"
            ReadOnly="True" SortExpression="CategoryName" />
        <asp:BoundField DataField="SupplierName" HeaderText="Supplier"
            ReadOnly="True" SortExpression="SupplierName" />
        <asp:BoundField DataField="UnitPrice" DataFormatString="{0:C}"
            HeaderText="Price" HtmlEncode="False" SortExpression="UnitPrice" />
        <asp:CheckBoxField DataField="Discontinued" HeaderText="Discontinued"
            SortExpression="Discontinued" />
    </Columns>
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
    OldValuesParameterFormatString="original_{0}" SelectMethod="GetProducts"
    TypeName="ProductsBLL"></asp:ObjectDataSource>

Şu ana kadarki ilerleme durumumuzu bir tarayıcıda görüntülemek için biraz zaman ayırın. Şekil 2'de verileri kategoriye göre alfabetik düzende sıralandığında sıralanabilir GridView gösterilmektedir.

Sıralanabilir GridView Verileri Kategoriye Göre Sıralanmış

Şekil 2: Sıralanabilir GridView Verileri Kategoriye Göre Sıralandı (Tam boyutlu görüntüyü görüntülemek için tıklayın)

2. Adım: Ayırıcı Satır Ekleme Tekniklerini Keşfetme

Genel, sıralanabilir GridView tamamlandıktan sonra kalan tek şey, her benzersiz sıralanmış gruptan önce GridView'a ayırıcı satırları ekleyebilmektir. Ancak bu tür satırlar GridView'a nasıl eklenebilir? Temel olarak GridView satırları arasında yineleme yapmamız, sıralanmış sütundaki değerler arasındaki farkların nerede olduğunu belirlememiz ve ardından uygun ayırıcı satırını eklememiz gerekir. Bu sorunu düşünürken, çözümün GridView RowDataBound olay işleyicisinde bir yerde olması doğal görünüyor. Verilere Dayalı Özel Biçimlendirme öğreticisinde ele aldığımız gibi, bu olay işleyicisi genellikle satır verilerine göre satır düzeyi biçimlendirme uygulanırken kullanılır. Ancak, RowDataBound bu olay işleyicisinden program aracılığıyla GridView'a satır eklenemediğinden, olay işleyicisi burada çözüm değildir. GridView Rows koleksiyonu gerçekte salt okunur.

GridView'a başka satırlar eklemek için üç seçeneğimiz vardır:

  • Bu meta veri ayırıcı satırlarını GridView'a bağlı gerçek verilere ekleyin
  • GridView verilere bağlandıktan sonra GridView denetim koleksiyonuna ek TableRow örnekler ekleyin
  • GridView denetimini genişleten ve GridView yapısını oluşturmakla sorumlu olan yöntemleri geçersiz kılan özel bir sunucu denetimi oluşturma

Bu işlev birçok web sayfasında veya çeşitli web sitelerinde gerekliyse, özel bir sunucu denetimi oluşturmak en iyi yaklaşım olacaktır. Bununla birlikte, gridView'un iç çalışmalarının derinliklerine yönelik kapsamlı bir inceleme ve biraz kod gerektirir. Bu nedenle, zaten bu seçenek bu eğitimde dikkate alınmayacaktır.

GridView'e bağlı olan gerçek verilere ayırıcı satırlar ekleyen ve GridView'in kontrol koleksiyonunu bağlandıktan sonra manipüle eden diğer iki seçenek, soruna farklı şekillerde yaklaşır ve bir tartışmayı hak eder.

GridView'a Bağlı Verilere Satır Ekleme

GridView bir veri kaynağına bağlandığında, veri kaynağı tarafından döndürülen her kayıt için bir GridViewRow oluşturur. Bu nedenle, GridView'a bağlamadan önce veri kaynağına ayırıcı kayıtlar ekleyerek gerekli ayırıcı satırları ekleyebiliriz. Şekil 3'de bu kavram gösterilmektedir.

Bir Teknik, Veri Kaynağına Ayırıcı SatırLar Eklemeyi Içerir

Şekil 3: Bir Teknik, Veri Kaynağına Ayırıcı SatırLar Eklemeyi Içerir

Özel ayırıcı kayıt olmadığından tırnak içinde ayırıcı kayıtları terimini kullanıyorum; bunun yerine, bir şekilde veri kaynağındaki belirli bir kaydın normal veri satırı yerine ayırıcı olarak hizmet ettiğini işaretlememiz gerekir. Örneklerimizde, bir ProductsDataTable örneğini ProductRows tarafından oluşturulan GridView'a bağlıyoruz. Böyle bir değerin normalde mevcut olmayacağından, CategoryID özelliğini -1 olarak ayarlayarak kaydı ayırıcı satır şeklinde işaretleyebiliriz.

Bu tekniği kullanmak için aşağıdaki adımları gerçekleştirmemiz gerekir:

  1. GridView'a bağlanacak verileri program aracılığıyla alma (örnek ProductsDataTable )
  2. GridView s SortExpression ve SortDirection özelliklerine göre verileri sıralama
  3. ProductsRows ProductsDataTableiçinde içinde yineleme yapın ve sıralanmış sütundaki farklılıkların nerede yer aldığına bakın
  4. Her grup sınırında, DataTable'a bir ayırıcı kayıt ProductsRow örneği yerleştirin, bu örneğin CategoryID değeri -1 olarak ayarlanmış (veya bir kaydı ayırıcı kayıt olarak işaretlemek için kararlaştırılan belirtilen değere göre).
  5. Ayırıcı satırları ekledikten sonra, verileri program aracılığıyla GridView'a bağlayın

Bu beş adıma ek olarak GridView RowDataBound olayı için bir olay işleyicisi de sağlamamız gerekir. Burada, her DataRow'yi denetler ve ayarının CategoryID-1 olduğu bir ayırıcı satır olup olmadığını belirleriz. Öyleyse, biçimlendirmesini veya hücrelerde görüntülenen metni ayarlamak isteyebiliriz.

Sıralama grubu sınırlarını eklemek için bu tekniği kullanmak, yukarıda belirtilenden biraz daha fazla çalışma gerektirir. Ayrıca GridView Sorting olayı için bir olay işleyicisi sağlamanız ve SortExpression ve SortDirection değerlerini takip etmeniz gerekir.

GridView Denetim Koleksiyonunu Veriye Bağlandıktan Sonra Düzenleme

Verileri GridView'a bağlamadan önce mesajlaşmak yerine, veriler GridView'a bağlandıktan sonra ayırıcı satırları ekleyebiliriz. Veri bağlama işlemi GridView denetim hiyerarşisini oluşturur. Bu hiyerarşi gerçekte her Table biri bir hücre koleksiyonundan oluşan bir satır koleksiyonundan oluşan bir örnektir. Özellikle, GridView'un denetim koleksiyonu kökünde bir Table nesne, GridView'a bağlı her kayıt GridViewRow için bir TableRow (sınıfından DataSource türetilir) ve TableCell içindeki her veri alanı GridViewRowiçin her DataSource örnekte bir nesne içerir.

Her sıralama grubuna ayırıcı satır eklemek için, oluşturulduktan sonra bu kontrol hiyerarşisini doğrudan manipüle edebiliriz. Sayfa işlenirken, GridView denetim hiyerarşisinin son kez oluşturulduğundan emin olabiliriz. Bu nedenle, bu yaklaşım sınıf s Page yöntemini geçersiz kılar Render ve bu noktada GridView'un son denetim hiyerarşisi gerekli ayırıcı satırları içerecek şekilde güncelleştirilir. Şekil 4'de bu işlem gösterilmektedir.

Alternatif Bir Teknik GridView Denetim Hiyerarşisini manipüle eder

Şekil 4: Alternatif Bir Teknik GridView Denetim Hiyerarşisini Denetler (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Bu öğreticide, sıralama kullanıcı deneyimini özelleştirmek için bu ikinci yaklaşımı kullanacağız.

Uyarı

Bu öğreticide sunduğum kod, Teemu Keiski'nin, GridView Sıralama ve Gruplama Üzerine Denemeler başlıklı blog girdisinde sağlanan örneği temel alır.

3. Adım: GridView Denetim Hiyerarşisine Ayırıcı Satırları Ekleme

Kılavuz Görünümü denetim hiyerarşisine yalnızca denetim hiyerarşisi oluşturulduktan ve bu sayfa ziyaretinde son kez oluşturulduktan sonra ayırıcı satırları eklemek istediğimizden, bu ekleme işlemini sayfa yaşam döngüsünün sonunda, ancak gerçek GridView denetim hiyerarşisi HTML olarak işlenmeden önce gerçekleştirmek istiyoruz. Bunu gerçekleştirebileceğimiz en son olası nokta, Page sınıfı ve Render olayıdır. Aşağıdaki yöntem imzasını kullanarak arka plandaki kod sınıfımızda bunları geçersiz kılabiliriz.

Protected Overrides Sub Render(ByVal writer As HtmlTextWriter)
   ' Add code to manipulate the GridView control hierarchy
   MyBase.Render(writer)
End Sub

Sınıfın Page özgün Render yöntemi çağrıldığında base.Render(writer) sayfadaki denetimlerin her biri işlenir ve denetim hiyerarşisine göre işaretleme oluşturulur. Bu nedenle, hem sayfanın işlenmesi için base.Render(writer) çağrılmasının, hem de base.Render(writer) çağrılmadan önce GridView kontrol hiyerarşisinin işlenmesi ve böylece ayırıcı satırların GridView kontrol hiyerarşisine eklenmiş olması ve ardından işlenmesi gereklidir.

Sıralama grubu üst bilgilerini eklemek için önce kullanıcının verilerin sıralanmasını istediğinden emin olmamız gerekir. Varsayılan olarak, GridView içeriği sıralanmaz ve bu nedenle herhangi bir grup sıralama üst bilgisi girmemiz gerekmez.

Uyarı

Sayfa ilk yüklendiğinde GridView'un belirli bir sütuna göre sıralanmasını istiyorsanız, ilk sayfa ziyaretinde GridView s Sort yöntemini çağırın (ancak sonraki geri göndermelerde çağırmayın). Bunu yapmak için, bu çağrıyı bir Page_Load koşullu içinde if (!Page.IsPostBack) olay işleyicisine ekleyin. Yöntem hakkında daha fazla bilgi için Sayfalama ve Rapor Verilerini Sıralama öğretici bilgilerine Sort geri bakın.

Verilerin sıralandığını varsayarsak, sonraki görevimiz verilerin hangi sütuna göre sıralandığını belirlemek ve sonra bu sütunun değerlerindeki farkları bulmak için satırları taramaktır. Aşağıdaki kod, verilerin sıralanmasını sağlar ve verilerin sıralandığı sütunu bulur:

Protected Overrides Sub Render(ByVal writer As HtmlTextWriter)
    ' Only add the sorting UI if the GridView is sorted
    If Not String.IsNullOrEmpty(ProductList.SortExpression) Then
        ' Determine the index and HeaderText of the column that
        'the data is sorted by
        Dim sortColumnIndex As Integer = -1
        Dim sortColumnHeaderText As String = String.Empty
        For i As Integer = 0 To ProductList.Columns.Count - 1
            If ProductList.Columns(i).SortExpression.CompareTo( _
                ProductList.SortExpression) = 0 Then
                sortColumnIndex = i
                sortColumnHeaderText = ProductList.Columns(i).HeaderText
                Exit For
            End If
        Next
        ' TODO: Scan the rows for differences in the sorted column�s values
End Sub

GridView henüz sıralanmadıysa GridView s SortExpression özelliği ayarlanmamıştır. Bu nedenle, yalnızca bu özelliğin değeri varsa ayırıcı satırları eklemek istiyoruz. Varsa, bir sonraki adımda verilerin sıralandığı sütunun dizinini belirlememiz gerekir. Bu, GridView s Columns koleksiyonunda döngü yaparak, özelliği GridView s SortExpression özelliğine eşit olan SortExpression sütunu arayarak gerçekleştirilir. Sütun dizinine ek olarak, ayırıcı satırları görüntülerken kullanılan HeaderText özelliğini de elde ederiz.

Verilerin sıralandığı sütunun diziniyle, son adım GridView satırlarını numaralandırmaktır. Her satır için sıralanmış sütun değerinin önceki satırdaki sıralanmış sütun değerinden farklı olup olmadığını belirlememiz gerekir. Öyleyse, denetim hiyerarşisine yeni GridViewRow bir örnek eklememiz gerekir. Bu, aşağıdaki kodla gerçekleştirilir:

Protected Overrides Sub Render(ByVal writer As HtmlTextWriter)
    ' Only add the sorting UI if the GridView is sorted
    If Not String.IsNullOrEmpty(ProductList.SortExpression) Then
        ' ... Code for finding the sorted column index removed for brevity ...
        ' Reference the Table the GridView has been rendered into
        Dim gridTable As Table = CType(ProductList.Controls(0), Table)
        ' Enumerate each TableRow, adding a sorting UI header if
        ' the sorted value has changed
        Dim lastValue As String = String.Empty
        For Each gvr As GridViewRow In ProductList.Rows
            Dim currentValue As String = gvr.Cells(sortColumnIndex).Text
            If lastValue.CompareTo(currentValue) <> 0 Then
                ' there's been a change in value in the sorted column
                Dim rowIndex As Integer = gridTable.Rows.GetRowIndex(gvr)
                ' Add a new sort header row
                Dim sortRow As New GridViewRow(rowIndex, rowIndex, _
                    DataControlRowType.DataRow, DataControlRowState.Normal)
                Dim sortCell As New TableCell()
                sortCell.ColumnSpan = ProductList.Columns.Count
                sortCell.Text = String.Format("{0}: {1}", _
                    sortColumnHeaderText, currentValue)
                sortCell.CssClass = "SortHeaderRowStyle"
                ' Add sortCell to sortRow, and sortRow to gridTable
                sortRow.Cells.Add(sortCell)
                gridTable.Controls.AddAt(rowIndex, sortRow)
                ' Update lastValue
                lastValue = currentValue
            End If
        Next
    End If
    MyBase.Render(writer)
End Sub

Bu kod, GridView denetim hiyerarşisinin Table kökünde bulunan nesneye program aracılığıyla başvurarak ve adlı lastValuebir dize değişkeni oluşturarak başlar. lastValue geçerli satırın sıralanmış sütun değerini önceki satır s değeriyle karşılaştırmak için kullanılır. Ardından GridView koleksiyonu Rows numaralandırılır ve her satır için sıralanmış sütunun değeri değişkende currentValue depolanır.

Uyarı

Belirli bir satırdaki sıralanmış sütunun değerini belirlemek için hücre Text özelliğini kullanıyorum. Bu, BoundFields için iyi çalışır, ancak TemplateFields, CheckBoxFields vb. için istenen şekilde çalışmaz. Kısa süre sonra alternatif GridView alanlarının nasıl hesaplanacağını inceleyeceğiz.

Ve currentValuelastValue değişkenleri daha sonra karşılaştırılır. Bunlar farklıysa, denetim hiyerarşisine yeni bir ayırıcı satırı eklememiz gerekir. Bu, GridViewRow dizininin Table nesnesinin Rows koleksiyonundaki indeksini belirleyerek, yeni GridViewRow ve TableCell örnekleri oluşturarak ve ardından TableCell ve GridViewRow'yı denetim hiyerarşisine ekleyerek gerçekleştirilir.

GridView'in tüm genişliğine yayılacak şekilde biçimlendirilmiş ve TableCell CSS sınıfı kullanılarak biçimlendirilmiş tek bir ayırıcı satıra sahip olduğunu ve SortHeaderRowStyle özelliğinin hem sıralama grubu adını (Kategori gibi) hem de grup değerini (İçecekler gibi) gösterebileceği şekilde ayarlandığını unutmayın. Son olarak, lastValue değeri currentValue olarak güncellenir.

Sıralama grubu üst bilgi satırını SortHeaderRowStyle biçimlendirmek için kullanılan CSS sınıfının dosyada Styles.css belirtilmesi gerekir. Size hitap eden stil ayarlarını kullanmaktan çekinmeyin; Aşağıdakileri kullandım:

.SortHeaderRowStyle
{
    background-color: #c00;
    text-align: left;
    font-weight: bold;
    color: White;
}

Geçerli kodla, sıralama arabirimi herhangi bir BoundField'a göre sıralama yaparken sıralama grubu üst bilgileri ekler (sağlayıcıya göre sıralama yaparken ekran görüntüsü gösteren Şekil 5'e bakın). Ancak, başka bir alan türüne göre (CheckBoxField veya TemplateField gibi) sıralama yaparken, sıralama grubu üst bilgileri hiçbir yerde bulunmaz (bkz. Şekil 6).

Sıralama Arabirimi, BoundFields'e göre sıralarken grup üst bilgilerini içerir

Şekil 5: Sıralama Arabirimi, BoundFields'a Göre Sıralarken Grup Üst Bilgilerini Sıralamayı Içerir (Tam boyutlu görüntüyü görüntülemek için tıklayın)

CheckBoxField Sıralanırken Grup Üst Bilgileri Eksik

Şekil 6: CheckBoxField sıralanırken grup başlıkları eksik (Tam boyutlu görüntüyü görüntülemek için tıklayın)

CheckBoxField ölçütüne göre sıralama yaparken sıralama grubu üst bilgilerinin eksik olmasının nedeni, kodun şu anda her satır için sıralanmış sütunun değerini belirlemek için yalnızca TableCell s Text özelliğini kullanmasıdır. CheckBoxFields için TableCell s Text özelliği boş bir dizedir; bunun yerine, değer s TableCell koleksiyonunda Controls bulunan bir CheckBox Web denetimi aracılığıyla kullanılabilir.

BoundFields dışındaki alan türlerini işlemek için değişkenin atandığı currentValue kodu genişleterek s TableCell koleksiyonunda Controls bir CheckBox olup olmadığını denetlememiz gerekir. "currentValue = gvr.Cells(sortColumnIndex).Text'yi kullanmak yerine, bu kodu aşağıdakilerle değiştirin:"

Dim currentValue As String = String.Empty
If gvr.Cells(sortColumnIndex).Controls.Count > 0 Then
    If TypeOf gvr.Cells(sortColumnIndex).Controls(0) Is CheckBox Then
        If CType(gvr.Cells(sortColumnIndex).Controls(0), CheckBox).Checked Then
            currentValue = "Yes"
        Else
            currentValue = "No"
        End If
        ' ... Add other checks here if using columns with other
        '      Web controls in them (Calendars, DropDownLists, etc.) ...
    End If
Else
    currentValue = gvr.Cells(sortColumnIndex).Text
End If

Bu kod, geçerli satır için sıralanmış olan TableCell sütununu inceleyerek Controls koleksiyonunda kontrol olup olmadığını belirler. Varsa ve ilk denetim bir CheckBox ise, currentValue CheckBox s Checked özelliğine bağlı olarak değişken Evet veya Hayır olarak ayarlanır. Aksi takdirde, değer TableCell s Text özelliğinden alınır. Bu mantık, GridView'da mevcut olabilecek tüm TemplateField'lar için sıralamayı işlemek üzere çoğaltılabilir.

Yukarıdaki kod eklemesiyle, artık Devam Etmeyen CheckBoxField'a göre sıralama yaparken sıralama grubu üst bilgileri mevcuttur (bkz. Şekil 7).

CheckBoxField Sıralanırken Grup Üst Bilgileri Artık Mevcut

Şekil 7: CheckBoxField Sıralanırken Grup Üst Bilgilerini Sırala Özelliği Artık Var (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Uyarı

NULL, CategoryID, veya SupplierID alanları için UnitPrice veritabanı değerlerine sahip ürünleriniz varsa, bu değerler GridView'da varsayılan olarak boş dizeler olarak görünür; bu da, NULL değerine sahip ürünler için ayırıcı satır metninin Kategori: şeklinde okuyacağı anlamına gelir (Kategori: İçecekler gibi, Kategori'den sonra bir ad yoktur). Burada bir değerin görüntülenmesini istiyorsanız BoundFields NullDisplayText özelliğini görüntülenmesini istediğiniz metne ayarlayabilir veya ayırıcı satır s currentValue özelliğine atarken Render yöntemine Text koşullu bir deyim ekleyebilirsiniz.

Özet

GridView, sıralama arabirimini özelleştirmek için birçok yerleşik seçenek içermez. Ancak, biraz düşük düzeyli kodla, daha özelleştirilmiş bir arabirim oluşturmak için GridView denetim hiyerarşisinde ince ayar yapmak mümkündür. Bu öğreticide, ayrı grupları ve bu grupların sınırlarını daha kolay tanımlayan sıralanabilir GridView için sıralama grubu ayırıcı satırının nasıl ekleneceğini gördük. Özelleştirilmiş sıralama arabirimlerine ek örnekler için Scott Guthrie'ninA Few ASP.NET 2.0 GridView Sorting Tips and Tricks blog girdisine bakın.

Mutlu Programlama!

Yazar Hakkında

Yedi ASP/ASP.NET kitabının yazarı ve 4GuysFromRolla.com kurucusu Scott Mitchell, 1998'den beri Microsoft Web teknolojileriyle çalışmaktadır. Scott bağımsız bir danışman, eğitmen ve yazar olarak çalışır. Son kitabı Sams Teach Yourself ASP.NET 24 Hours 2.0'dır. Ona adresinden mitchell@4GuysFromRolla.comulaşabilirsiniz.