我按照帮助,做了个分页但是,加入了一下的代码后,就出现了问题<Columns>
<asp:TemplateColumn HeaderText="ID">
<ItemTemplate>
<a href="#">
<%# DataBinder.Eval(Container.DataItem,"ID")%>
</a>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="UserName" HeaderText="用户名"></asp:BoundColumn>
<asp:BoundColumn DataField="Passwd" HeaderText="密码"></asp:BoundColumn>
<asp:ButtonColumn HeaderText="操作" Text="<div onclick="javascript:return confirm('确定删除吗?')">删除</div>" CommandName="Delete">
</asp:ButtonColumn>
</Columns>经过测试, 如果没有下面的代码,还是可以显示的 <asp:TemplateColumn HeaderText="ID">
<ItemTemplate>
<a href="#">
<%# DataBinder.Eval(Container.DataItem,"ID")%>
</a>
</ItemTemplate>
</asp:TemplateColumn>有了上面的代码后,第一页显示正常,第二页也正常,但到了第三页,就出现错误,以后随便按那个按钮都出现同样的错误:System.Web.HttpException: 未能加载视图状态。正在向其中加载视图状态的控件树必须与前一请求期间用于保存视图状态的控件树相匹配。例如,当以动态方式添加控件时,在回发期间添加的控件必须与在初始请求期间添加的控件的类型和位置相匹配。
<asp:TemplateColumn HeaderText="ID">
<ItemTemplate>
<a href="#">
<%# DataBinder.Eval(Container.DataItem,"ID")%>
</a>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="UserName" HeaderText="用户名"></asp:BoundColumn>
<asp:BoundColumn DataField="Passwd" HeaderText="密码"></asp:BoundColumn>
<asp:ButtonColumn HeaderText="操作" Text="<div onclick="javascript:return confirm('确定删除吗?')">删除</div>" CommandName="Delete">
</asp:ButtonColumn>
</Columns>经过测试, 如果没有下面的代码,还是可以显示的 <asp:TemplateColumn HeaderText="ID">
<ItemTemplate>
<a href="#">
<%# DataBinder.Eval(Container.DataItem,"ID")%>
</a>
</ItemTemplate>
</asp:TemplateColumn>有了上面的代码后,第一页显示正常,第二页也正常,但到了第三页,就出现错误,以后随便按那个按钮都出现同样的错误:System.Web.HttpException: 未能加载视图状态。正在向其中加载视图状态的控件树必须与前一请求期间用于保存视图状态的控件树相匹配。例如,当以动态方式添加控件时,在回发期间添加的控件必须与在初始请求期间添加的控件的类型和位置相匹配。
try
{
MyDataGrid2.DataBind();
}
catch
{
int i=MyDataGrid2.CurrentPageIndex;
while(i>=MyDataGrid2.PageCount)
{
i--;
}
MyDataGrid2.CurrentPageIndex=i;
MyDataGrid2.DataBind ();
}
DataSet ds = CarsSelector.DBServlet.selectQuery(strSQL);
DataGrid1.DataSource = ds.Tables[0];
DataGrid1.DataBind();
DataGrid1.CurrentPageIndex = 0;
Session["sessionDS"] = ds;
DataSet ds = CarsSelector.DBServlet.selectQuery(strSQL);
DataGrid1.DataSource = ds.Tables[0];
DataGrid1.DataBind();
DataGrid1.CurrentPageIndex = 0;
Session["sessionDS"] = ds;以后从session读出DataSet :DataSet ds1 = (DataSet)Session["sessionDS"];
DataGrid1.DataSource = ds1.Tables[0];
DataGrid1.DataBind();
DataGrid1.CurrentPageIndex =
Math.Min(DataGrid1.CurrentPageIndex + 1, DataGrid1.PageCount - 1);
时删除时页面的CurrentPageIndex判断不正确String strSQL = "select ID,UserName,Passwd,tmp from T_user";
DataSet ds = CarsSelector.DBServlet.selectQuery(strSQL);
DataGrid1.DataSource = ds.Tables[0];
try
{
DataGrid1.DataBind();
}
catch
{
int i=DataGrid1.CurrentPageIndex;
while(i>=DataGrid1.PageCount)
{
i--;
}
DataGrid1.CurrentPageIndex=i;
DataGrid1.DataBind ();
}
{
string direction = ((Button)sender).CommandName; DataSet ds1 = (DataSet)Session["sessionDS"];
DataGrid1.DataSource = ds1.Tables[0];
try
{
DataGrid1.DataBind();
}
catch
{
int i = DataGrid1.CurrentPageIndex;
while( i >= DataGrid1.PageCount )
{
i--;
}
DataGrid1.CurrentPageIndex = i;
DataGrid1.DataBind();
}
switch (direction.ToUpper())
{
case "FIRST" :
DataGrid1.CurrentPageIndex = 0;
break;
case "PREVIOUS" :
DataGrid1.CurrentPageIndex =
Math.Max(DataGrid1.CurrentPageIndex -1, 0);
break;
case "NEXT" :
DataGrid1.CurrentPageIndex =
Math.Min(DataGrid1.CurrentPageIndex + 1, DataGrid1.PageCount - 1);
break;
case "LAST" :
DataGrid1.CurrentPageIndex = DataGrid1.PageCount - 1;
break;
default :
Label1.Text = "error";
break;
}
Session["sessionDS"] = ds1;
}