Hi again,
above example sorts a grid but there is also a better way(in most cases),
we could save all datasource to cache then use that instead of connecting to datasource every time there is a request for new sortition ...
see below example(just has a few changes from above example)
Code:
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<Script Runat="Server">
Sub Page_Load
If Not IsPostBack Then
' Bind to datagrid
dgrdProducts.DataSource = GetProducts()
dgrdProducts.DataBind()
End If
End Sub
Function GetProducts() As DataView
Dim dstProducts As DataSet
Dim conNorthwind As SqlConnection
Dim dadProducts As SqlDataAdapter
Dim dvwProducts As DataView
dvwProducts = Cache( "Products" )
If dvwProducts Is Nothing Then
dstProducts = New DataSet()
conNorthwind = New SqlConnection( "Server=localhost;UID=sa;PWD=secret;Database=Northwind" )
dadProducts = New SqlDataAdapter( "Select * from Products", conNorthwind )
dadProducts.Fill( dstProducts, "Products" )
dvwProducts = dstProducts.Tables( "Products" ).DefaultView()
Cache( "Products" ) = dvwProducts
End If
Return dvwProducts
End Function
Sub dgrdProducts_SortCommand( s As Object, e As DataGridSortCommandEventArgs )
Dim dvwProducts As DataView
' Sort DataView
dvwProducts = GetProducts()
dvwProducts.Sort = e.SortExpression
' Rebind to DataGrid
dgrdProducts.DataSource = dvwProducts
dgrdProducts.DataBind()
End Sub
</Script>
<html>
<head><title>CacheProducts.aspx</title></head>
<body>
<form Runat="Server">
<asp:DataGrid
ID="dgrdProducts"
AllowSorting="True"
OnSortCommand="dgrdProducts_SortCommand"
Runat="Server" />
</form>
</body>
</html>
_____________________________
Mehdi.
software engineering student.
Looking for a good job for summer 2005.