Girdview'da sorting yapmak ..
Eğer gridview'da datasource'u sql datasource yada object datasource gibi bir nesne kullanıyorsanız sorting için extra bir şey yapmanıza gerek kalmayacaktır. Sadece kolonları tanımlarken sortexpression alanına data sourcedaki kolon adını yazmak yeterli olur.
Ancak eğer datasource'u runtime da oluşturup set ediyorsanız bu durumda kolonlarda sıralama biraz uğraşmanız gerekecek.
Protected Sub GridView1_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs)
Dim VarolanDeger As String = Me.ViewState("Sort")
Dim YeniDeger As String = e.SortExpression
Dim EskiDeger As String = ViewState("Sort")
Dim AscDesc As String = ""
If Not VarolanDeger Is Nothing AndAlso (EskiDeger.IndexOf(YeniDeger) >= 0) Then
If (EskiDeger.IndexOf(" ") <>
AscDesc = "DESC"
Else
AscDesc = EskiDeger.Substring(EskiDeger.IndexOf(" ") + 1)
If (AscDesc = "ASC") Then
AscDesc = "DESC"
Else
AscDesc = "ASC"
End If
End If
Else
AscDesc = "ASC"
End If
YeniDeger += " " + AscDesc
Me.ViewState.Add("Sort", YeniDeger)
'buradan sonra datatable oluşturup gridview'a bind ettiğiniz kod yeniden çağrılacak
End Sub
Ancak eğer datasource'u runtime da oluşturup set ediyorsanız bu durumda kolonlarda sıralama biraz uğraşmanız gerekecek.
Protected Sub GridView1_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs)
Dim VarolanDeger As String = Me.ViewState("Sort")
Dim YeniDeger As String = e.SortExpression
Dim EskiDeger As String = ViewState("Sort")
Dim AscDesc As String = ""
If Not VarolanDeger Is Nothing AndAlso (EskiDeger.IndexOf(YeniDeger) >= 0) Then
If (EskiDeger.IndexOf(" ") <>
AscDesc = "DESC"
Else
AscDesc = EskiDeger.Substring(EskiDeger.IndexOf(" ") + 1)
If (AscDesc = "ASC") Then
AscDesc = "DESC"
Else
AscDesc = "ASC"
End If
End If
Else
AscDesc = "ASC"
End If
YeniDeger += " " + AscDesc
Me.ViewState.Add("Sort", YeniDeger)
'buradan sonra datatable oluşturup gridview'a bind ettiğiniz kod yeniden çağrılacak
End Sub
Yorumlar