private void Page_Load(object sender, System.EventArgs e)
{
if ( !Page.IsPostBack )
{
BindData();
}
CreateLinks();
}
// The BindData method constructs a SQL query that uses nested SELECT TOP
// statements (as described earlier) to retrieve a specified page of data.
//
public void BindData()
{
SqlConnection myConnection = new SqlConnection(_connStr);
String strCmd = "";
StringBuilder sb = new StringBuilder();
sb.Append("select top {0} CustomerID,CompanyName,ContactName,ContactTitle from (select top {1} CustomerID,CompanyName,ContactName,ContactTitle from Customers ");
sb.Append("as t1 order by contactname desc) ");
sb.Append("as t2 order by contactname asc");
strCmd = sb.ToString();
sb = null;
// Set pseudoparameters: TableName, KeyField and RowIndex
strCmd = String.Format(strCmd, _pageSize,
_currentPageNumber * _pageSize);
// Prepare the command
SqlCommand myCommand = new SqlCommand(strCmd,myConnection);
SqlDataAdapter sa = new SqlDataAdapter(myCommand);
DataSet searchData = new DataSet("SearchData");
try
{
myConnection.Open();
sa.Fill(searchData);
MyDataGrid.DataSource = searchData;
MyDataGrid.DataBind();
}
finally
{
myConnection.Close();
}
CurrentPage.Text = _currentPageNumber.ToString();
if ( !Page.IsPostBack )
{
using (SqlConnection conn = new SqlConnection(_connStr))
{
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT Count(*) FROM Customers";
conn.Open();
_totalRecords = (int)cmd.ExecuteScalar();
_totalPages = _totalRecords / MyDataGrid.PageSize;
TotalPages.Text = _totalPages.ToString();
}
}
else
{
_totalPages = int.Parse ( TotalPages.Text );
}
if (_currentPageNumber == 1)
{
PreviousPage.Enabled = false;
if (_totalPages > 1)
NextPage.Enabled = true;
else
NextPage.Enabled = false;
}
else
{
PreviousPage.Enabled = true;
if (_currentPageNumber == _totalPages)
NextPage.Enabled = false;
else
NextPage.Enabled = true;
}
}