<%
@
Page
Language
="C#"
%>
<%
@
Import
Namespace
="System.Data"
%>
<%
@
Import
Namespace
="System.Data.OleDb"
%>
<
script
runat
="server">
private
void
PopulatePublishersGridView()
{
string
connectionString = AccessConnectionString();
OleDbConnection
accessConnection =
new
OleDbConnection
(connectionString);
string
sqlQuery =
"SELECT [PubID], [Name], [Company Name], [Address], [City], [State], [Zip], [Telephone], [Fax], [Comments] FROM Publishers ORDER BY [Name] ASC;"
;
OleDbCommand
accessCommand =
new
OleDbCommand
(sqlQuery, accessConnection);
OleDbDataAdapter
publishersDataAdapter =
new
OleDbDataAdapter
(accessCommand);
DataTable
publishersDataTable =
new
DataTable
(
"Publishers"
);
publishersDataAdapter.Fill(publishersDataTable);
int
dataTableRowCount = publishersDataTable.Rows.Count;
if
(dataTableRowCount > 0)
{
gridViewPublishers.DataSource = publishersDataTable;
gridViewPublishers.DataBind();
}
}
private
string
AccessConnectionString()
{
string
accessDatabasePath = Server.MapPath(
"~/App_Data/biblio.mdb"
);
return
String
.Format(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};"
, accessDatabasePath);
}
private
string
GridViewSortDirection
{
get
{
return
ViewState[
"SortDirection"
]
as
string
??
"DESC"
; }
set
{ ViewState[
"SortDirection"
] =
value
; }
}
private
string
GridViewSortExpression
{
get
{
return
ViewState[
"SortExpression"
]
as
string
??
string
.Empty; }
set
{ ViewState[
"SortExpression"
] =
value
; }
}
private
string
GetSortDirection()
{
switch
(GridViewSortDirection)
{
case
"ASC"
:
GridViewSortDirection =
"DESC"
;
break
;
case
"DESC"
:
GridViewSortDirection =
"ASC"
;
break
;
}
return
GridViewSortDirection;
}
protected
void
gridViewPublishers_PageIndexChanging(
object
sender,
GridViewPageEventArgs
e)
{
gridViewPublishers.DataSource = SortDataTable(gridViewPublishers.DataSource
as
DataTable
,
true
);
gridViewPublishers.PageIndex = e.NewPageIndex;
gridViewPublishers.DataBind();
}
protected
DataView
SortDataTable(
DataTable
dataTable,
bool
isPageIndexChanging)
{
if
(dataTable !=
null
)
{
DataView
dataView =
new
DataView
(dataTable);
if
(GridViewSortExpression !=
string
.Empty)
{
if
(isPageIndexChanging)
{
dataView.Sort =
string
.Format(
"{0} {1}"
, GridViewSortExpression, GridViewSortDirection);
}
else
{
dataView.Sort =
string
.Format(
"{0} {1}"
, GridViewSortExpression, GetSortDirection());
}
}
return
dataView;
}
else
{
return
new
DataView
();
}
}
protected
void
gridViewPublishers_Sorting(
object
sender,
GridViewSortEventArgs
e)
{
GridViewSortExpression = e.SortExpression;
int
pageIndex = gridViewPublishers.PageIndex;
gridViewPublishers.DataSource = SortDataTable(gridViewPublishers.DataSource
as
DataTable
,
false
);
gridViewPublishers.DataBind();
gridViewPublishers.PageIndex = pageIndex;
}
protected
void
Page_Init(
object
sender,
EventArgs
e)
{
PopulatePublishersGridView();
}
script
>
DOCTYPE
html
PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html
xmlns
="http://www.w3.org/1999/xhtml">
<
head
runat
="server">
<
title
>
GridView Sorting/Paging without a DataSourceControl DataSource
title
>
head
>
<
body
>
<
form
id
="form"
runat
="server">
<
div
>
<
asp
:
GridView
ID
="gridViewPublishers"
AllowPaging
="true"
AllowSorting
="true"
AutoGenerateColumns
="false"
EmptyDataText
="No records found"
PagerSettings-Mode
="NumericFirstLast"
PageSize
="25"
OnPageIndexChanging
="gridViewPublishers_PageIndexChanging"
OnSorting
="gridViewPublishers_Sorting"
runat
="server">
<
AlternatingRowStyle
BackColor
="LightGray"
/>
<
HeaderStyle
BackColor
="Gray"
Font-Bold
="true"
Font-Names
="Verdana"
Font-Size
="Small"
/>
<
PagerStyle
BackColor
="DarkGray"
Font-Names
="Verdana"
Font-Size
="Small"
/>
<
RowStyle
Font-Names
="Verdana"
Font-Size
="Small"
/>
<
Columns
>
<
asp
:
BoundField
DataField
="PubID"
HeaderText
="Publisher ID"
SortExpression
="PubID"
/>
<
asp
:
BoundField
DataField
="Name"
HeaderText
="Name"
SortExpression
="Name"
/>
<
asp
:
BoundField
DataField
="Company Name"
HeaderText
="Company Name"
SortExpression
="Company Name"
/>
<
asp
:
BoundField
DataField
="Address"
HeaderText
="Address"
SortExpression
="Address"
/>
<
asp
:
BoundField
DataField
="City"
HeaderText
="City"
SortExpression
="City"
/>
<
asp
:
BoundField
DataField
="State"
HeaderText
="State"
SortExpression
="State"
/>
<
asp
:
BoundField
DataField
="Zip"
HeaderText
="Zip"
SortExpression
="Zip"
/>
<
asp
:
BoundField
DataField
="Telephone"
HeaderText
="Telephone"
SortExpression
="Telephone"
/>
<
asp
:
BoundField
DataField
="Fax"
HeaderText
="Fax"
SortExpression
="Fax"
/>
<
asp
:
BoundField
DataField
="Comments"
HeaderText
="Comments"
SortExpression
="Comments"
/>
Columns
>
asp
:
GridView
>
div
>
form
>
body
>
html
>