分页无法正常显示,求救现场高手!
我用DataGrid来显示数据库new.mdb中的aa表内容,并要进行分页,假如有记录7条,每页显示3条,分页按钮如下:
首页 上一页 下一页 尾页 页2/3 共7 条 3条记录/页
但这些按钮不能正常操作,选首页和尾页都可正常显示。不正常:(1)若当前页是第1页,选下一页可正常显示,即页2/3,但现在按下一页则内容和页2/3都没改变。(2)选尾页,现在显示页3/3,现在若选上一页,则会跳到第1页,而不是跳到第2页。
这个问题迷惑了我很久,到底错在哪里,恳请高手费心看一下,非常感激!!!(源代码new.aspx和new.cs如下:)
new.aspx:
<%@ Page Inherits="www.MyCodeBehind" Src="new.cs" %>
<html>
<head>
<title>新闻网站自动发布</title>
<body>
<form runat="server">
<table width="90%" border="0" align="center">
<tr>
<td width="608">
<div align="center"> <ASP:DataGrid id="MyList"
AllowPaging="True"
PageSize="3"
OnPageIndexChanged="MyList_Page"
EnableViewState="false"
AutoGenerateColumns="false"
DataKeyField="id"
OnDeleteCommand="MyDataGrid_Delete"
> </asp:DataGrid> </div>
</td>
</tr>
<tr>
<td width="53" height="11">
<div align="center"><asp:LinkButton id="btnFirst" runat="server"
Text="首 页"
CommandName="Pager"
CommandArgument="First"
OnCommand="PagerButtonClick"
/></div>
</td>
<td width="53" height="11">
<div align="center"> <asp:LinkButton id="btnPrev" runat="server"
Text="上一页"
CommandName="Pager"
CommandArgument="Prev"
OnCommand="PagerButtonClick"
/></div>
</td>
<td width="53" height="11">
<div align="center"><asp:LinkButton id="btnNext" runat="server"
Text="下一页"
CommandName="Pager"
CommandArgument="Next"
OnCommand="PagerButtonClick"
/></div>
</td>
<td width="53" height="11">
<div align="center"> <asp:LinkButton id="btnLast" runat="server"
Text="尾 页"
CommandName="Pager"
CommandArgument="Last"
OnCommand="PagerButtonClick"
/></div>
</td>
<td width="54" height="11">
<div align="center">页<%#CurrentPage.ToString()%> / <%#PageCount.ToString()%>
</font></div>
</td>
<td width="73" height="11">
<div align="center">共<%# RecordCount.ToString()%> 条</div>
</td>
<td width="72" height="11">
<div align="center"><%# MyList.PageSize.ToString()%>条记录/页</div>
</td>
</tr>
</table>
</form>
</body>
</html>
new.cs:
namespace www
{
public class MyCodeBehind : Page
{
public DataGrid MyList;
public LinkButton btnFirst;
public LinkButton btnPrev;
public LinkButton btnNext;
public LinkButton btnLast;
public int PageCount,RecordCount,CurrentPage;
//PageCount为总页数,RecordCount为总记录数,CurrentPage为当前页
private void Page_Load(Object sender, EventArgs e)
{ DataBind1();
}
DataView CreateDataSource()
{
OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+ Server.MapPath("new.mdb"));
OleDbDataAdapter myCommand = new OleDbDataAdapter("select * from aa ", myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds, "tt");
return ds.Tables["tt"].DefaultView;
}
void DataBind1()
{
DataView source=CreateDataSource();
RecordCount=source.Count;
PageCount=RecordCount/MyList.PageSize;
if((RecordCount%MyList.PageSize)!=0) PageCount++;
CurrentPage=MyList.CurrentPageIndex+1;
DataBind();
MyList.DataSource = source;
MyList.DataBind();
}
public void MyList_Page(Object sender, DataGridPageChangedEventArgs e)
{
MyList.CurrentPageIndex = e.NewPageIndex;
DataBind1();
}
public void PagerButtonClick(Object sender, CommandEventArgs e)
{
btnFirst.Enabled=true;
btnPrev.Enabled=true;
btnNext.Enabled=true;
btnLast.Enabled=true;
//由外部分页 UI 使用
String arg = e.CommandArgument.ToString();
switch(arg)
{
case "Next":
if (CurrentPage<PageCount)
CurrentPage++;
break;
case "Prev":
if (CurrentPage>1)
CurrentPage--;
break;
case "Last":
CurrentPage= PageCount;
break;
case "First":
CurrentPage=1;
break;
}
if(CurrentPage==1)
{
btnFirst.Enabled=false;
btnPrev.Enabled=false;
}
else if(CurrentPage==PageCount)
{
btnLast.Enabled=false;
btnNext.Enabled=false;
}
MyList.CurrentPageIndex=(CurrentPage-1);
DataBind1();
}
}
}