GridView Sorting
I discovered that the GridView lacks afeature when it comes to sorting. What if you are using a DataSourcesuch as SqlDataSource, but you don't want to sort the GridView usingthe same SelectCommand statement that was used to bind the GridView toits datasource? Using the OnSorting event of the GridView, you can addthe below to execute when the OnSorting event is fired:
VB.NET
Protected Sub
gridview_Sorting(
ByVal
sender
As Object
,
ByVal
e
As
GridViewSortEventArgs
)
Dim
strSortDir
As String
=
Nothing
Select Case
e.SortDirection
Case
SortDirection
.Ascending
strSortDir =
"ASC"
Case
SortDirection
.Descending
strSortDir =
"DESC"
End Select
sqlDataSource.SelectCommand =
"SET NOCOUNT ON;SELECT Row FROM Table WHERE SomeCondition='Something' ORDER BY "
& e.SortExpression &
" "
& strSortDir
End Sub
C#
protected
void
gridview_Sorting(
object
sender,
GridViewSortEventArgs
e)
{
string
strSortDir =
null
;
switch
(e.SortDirection)
{
case
SortDirection
.Ascending:
strSortDir =
"ASC"
;
break
;
case
SortDirection
.Descending:
strSortDir =
"DESC"
;
break
;
}
sqlDataSource.SelectCommand =
"SET NOCOUNT ON;SELECT Row FROM Table WHERE SomeCondition='Something' ORDER BY "
+ e.SortExpression +
" "
+ strSortDir;
}
Note:
sqlDataSource is the ID of the SqlDataSource control.
R