private void Page_Load(object sender, System.EventArgs e)
{
this.btnPreviousPage.Click += new System.EventHandler(this.NavigateToPage);
this.btnNextPage.Click += new System.EventHandler(this.NavigateToPage);
if(!IsPostBack)
{
StartIndex = 0;
SqlConnection MyConnection=new SqlConnection("Data Source=NGB-INTRATST-1;User ID=Winc;Password=123;initial catalog=Winc;");
SqlCommand MyCommand = new SqlCommand("Select num=COUNT(*) from Authors",MyConnection);
MyConnection.Open();
SqlDataReader dr = MyCommand.ExecuteReader(CommandBehavior.SingleRow);
if(dr.Read())
MyDataGrid.VirtualItemCount = (int)dr["num"];
dr.Close();
MyConnection.Close();
BindGridToSource(StartIndex,"上一頁");
}
}
------------------------------------------------------------------
private void BindGridToSource(int StartPosition,string GoToPage)
{
SqlConnection MyConnection=new SqlConnection("Data Source=NGB-INTRATST-1;User ID=Winc;Password=123;initial catalog=Winc;");
SqlCommand MyCommand = null;
switch(GoToPage)
{
case "上一頁":
MyCommand = new SqlCommand("Select Top 5 au_id,au_lname,au_fname," +
"phone,address,city,state,zip,contract from Authors" +" "+
"Where au_id >= @uid order by au_id",MyConnection);
if(StartPosition == 0)
MyCommand.Parameters.Add("@uid",SqlDbType.NVarChar,4).Value = "0";
else
MyCommand.Parameters.Add("@uid",SqlDbType.NVarChar,4).Value =
ViewState[(MyDataGrid.CurrentPageIndex+1).ToString()];
break;
case "下一頁":
MyCommand = new SqlCommand("Select Top 5 au_id,au_lname,au_fname," +
"phone,address,city,state,zip,contract from Authors" + " "+
"Where au_id>@uid order by au_id",MyConnection);
MyCommand.Parameters.Add("@uid",SqlDbType.NVarChar,4).Value =
MyDataGrid.Items[4].Cells[0].Text;
break;
}
MyConnection.Open();
SqlDataReader dr = MyCommand.ExecuteReader();
MyDataGrid.DataSource = dr;
MyDataGrid.DataBind();
dr.Close();
MyConnection.Close();
ViewState[(MyDataGrid.CurrentPageIndex+1).ToString()] =
MyDataGrid.Items[0].Cells[0].Text;
}
-----------------------------------------------------------------------
public void NavigateToPage(object sender,System.EventArgs e)
{
string pageInfo = ((Button)sender).CommandName;
switch (pageInfo)
{
case "上一頁":
if(MyDataGrid.CurrentPageIndex > 0)
MyDataGrid.CurrentPageIndex -= 1;
else
return;
break;
case "下一頁":
if(MyDataGrid.CurrentPageIndex < (MyDataGrid.PageCount - 1))
MyDataGrid.CurrentPageIndex += 1;
else
return;
break;
}
StartIndex = MyDataGrid.CurrentPageIndex * MyDataGrid.PageSize;
BindGridToSource(StartIndex,pageInfo);
}