<%@ Page Language="VB" Debug="False" Strict="True" Explicit="True" Buffer="True"%>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<html>
<head>
<title>Dynamic Column Sorting and Paging in ASP.NET</title>
</head>
<body bgcolor="#FFFFFF" topmargin="0" marginheight="0">
<script language="VB" runat="server">
Sub Page_Load (sender As Object, e As EventArgs)
If SortExp.Text = "" then
BindSQL ("title asc")
Else
BindSQL (SortExp.Text)
End If
End Sub
Sub BindSQL (SortField As String)
Dim MyConnection As SqlConnection
Dim MyCommand As SqlDataAdapter
Dim DS as Dataset
Dim sqlStr As String = "SELECT authors.au_fname, authors.au_lname, titles.title, titles.price FROM authors, titleauthor, titles WHERE titleauthor.au_id = authors.au_id AND titleauthor.title_id = titles.title_id ORDER BY title asc"
Dim strConn As String = "server=(local);uid=sa;pwd=;database=pubs;Trusted_Connection=yes;"
Dim RcdCount As Integer
SortExp.Text = SortField
MyConnection = New SqlConnection(strConn)
MyCommand = New SqlDataAdapter(sqlStr, MyConnection)
DS = new Dataset()
MyCommand.Fill(DS, "pubs")
Dim Source As DataView = DS.Tables(0).DefaultView
Source.Sort = SortField
Pubs.DataSource = Source
Pubs.Databind()
End Sub
Function SortOrder (Field As String) As String
Dim so As String = SortExp.Text
If Field = so Then
SortOrder = Replace (Field,"asc","desc")
Else
SortOrder = Replace (Field,"desc","asc")
End If
End Function
Sub BookList_Sort (Sender As Object, E As DataGridSortCommandEventArgs)
pubs.CurrentPageIndex = 0 'To sort from top
BindSQL (SortOrder (E.SortExpression).ToString()) 'Rebind our Datagrid
End Sub
Sub BookList_PageChange (Source As Object, E As DataGridPageChangedEventArgs)
pubs.CurrentPageIndex = E.NewPageIndex
BindSQL (SortExp.Text)
End Sub
</script>
<BR><BR>
<H2>Dynamic Column Sorting and Paging in ASP.NET</H2>
<BR><BR>
<form runat="server">
<ASP:Datagrid id="Pubs" runat="server"
Pagesize="10"
AllowSorting="True"
AllowPaging="True"
AllowCustomPaging="False"
PagerStyle-Visible = "True"
PagerStyle-Mode = "NumericPages"
HeaderStyle-BackColor="Blue"
HeaderStyle-ForeColor="White"
OnSortCommand="BookList_Sort"
OnPageIndexChanged="BookList_PageChange"
AutoGenerateColumns="false"
>
<Columns>
<asp:BoundColumn HeaderText="Title" SortExpression="title asc" DataField="title" Headerstyle-Horizontalalign="Center" ItemStyle-Wrap="false"/>
<asp:BoundColumn HeaderText="Last Name" SortExpression="au_lname asc" DataField="au_lname" Headerstyle-Horizontalalign="Center" ItemStyle-Wrap="false"/>
<asp:BoundColumn HeaderText="First Name" SortExpression="au_fname asc" DataField="au_fname" Headerstyle-Horizontalalign="Center" ItemStyle-Wrap="false"/>
<asp:BoundColumn HeaderText="Price" SortExpression="price asc" DataField="price" Headerstyle-Horizontalalign="Center" ItemStyle-Wrap="false"/>
</Columns>
</ASP:DataGrid>
<asp:Label id="SortExp" runat="server" Visible="False" />
</form>
</body>
</html>
------
Pagesize="10"
AllowPaging="True"
AllowCustomPaging="False"
PagerStyle-Visible = "True"
PagerStyle-Mode = "NumericPages"
OnPageIndexChanged="BookList_PageChange"
-----
Sub BookList_PageChange (Source As Object, E As DataGridPageChangedEventArgs)
pubs.CurrentPageIndex = E.NewPageIndex 'Set datagrid to current page index
BindSQL (SortExp.Text) ' Rebind Datagrid with sort order
End Sub
- G Kopparam