为什么我翻页到下个10页,点击任一页都会跳回到第一个10页阿?

enlyse 2003-07-01 04:07:13

为什么我翻页到下个10页,点击任一页都会跳回到第一个10页阿?
-------------------
<asp:datagrid id="dgUser" runat="server" BorderWidth="1px" PageSize="20" BorderColor="#CC6600" GridLines="None" Width="500px" CellPadding="2" CellSpacing="1" EnableViewState="False" OnPageIndexChanged="DataGrid_Page" AutoGenerateColumns="False" AllowPaging="True">
<AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>
<HeaderStyle HorizontalAlign="Center" BackColor="#FFFFCC"></HeaderStyle>
<Columns>
<asp:TemplateColumn HeaderText="编号">
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
<ItemStyle Width="50px"></ItemStyle>
<ItemTemplate>
<div align="center">
<%# DataBinder.Eval(Container.DataItem,"UbID").ToString()%>
</div>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle HorizontalAlign="Right" Mode="NumericPages"></PagerStyle>
</asp:datagrid>

-----------------------

protected System.Web.UI.WebControls.DataGrid dgUser;

private void Page_Load(object sender, System.EventArgs e)
{
if (Session["username"]==null)
Response.Redirect("/admin/login.aspx");
//if (!IsPostBack)
binddata();
}

public void DataGrid_Page(object sender, DataGridPageChangedEventArgs e)
{

dgUser.CurrentPageIndex = e.NewPageIndex;
binddata();
}

public void binddata()
{
dgUser.DataSource=didadicom.Components.dbuser.GetAllUsers();
dgUser.DataBind();
}
...全文
194 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
enlyse 2003-07-01
  • 打赏
  • 举报
回复
谢谢,tomamax,果然是viewstate这个问题

折腾了一下午,就是自己作分页也做出来了,可就是越不明白越想不通
  • 打赏
  • 举报
回复
楼上的说的都有理,不过不是你的后台代码中的错误,而是html视图代码错误,把你定义datagrid里面的这个
EnableViewState="False"
去掉!datagrid翻页需要利用viewstate视图状态。

另:建议你不要用datagrid自带的翻页功能,如果datagrid内容太多,viewstate内容多会严重减慢浏览速度。目前懂的人都不用dg自带的翻页了。如果你不会自定义翻页的话,给你一个地址:
http://www.webdiyer.com/
一个服务器控件,专门翻页的,有详细的说明。很好用。
greystar 2003-07-01
  • 打赏
  • 举报
回复
dgUser.CurrentPageIndex = e.NewPageIndex;
enlyse 2003-07-01
  • 打赏
  • 举报
回复
如果这样dgUser.DataBind();放在if (!IsPostBack)下,则翻页会出现空白。
如果不放,1-20页内翻页正常,但点下20页后能看到30-40的页码,但点击任意页又会跳回1-20。。。。。。。

分页事件也加了阿,原来OnPageIndexChanged="DataGrid_Page" 就是,现在按你的方法加了还是不行。
-----------
private void Page_Load(object sender, System.EventArgs e)
{
//if (Session["username"]==null)
// Response.Redirect("/admin/login.aspx");

dgUser.DataSource=didadicom.Components.dbuser.GetAllUsers();

if (!IsPostBack)
//binddata();
dgUser.DataBind();
}

//public void binddata()
//{
// dgUser.DataSource=didadicom.Components.dbuser.GetAllUsers();
// dgUser.DataBind();
//}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.dgUser.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid_Page);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void DataGrid_Page(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
dgUser.CurrentPageIndex = e.NewPageIndex;
dgUser.DataBind();
}
birdxxxx 2003-07-01
  • 打赏
  • 举报
回复
其实你并没有为分页添加相应的事件。
选择dgUser,看属性中的事件栏,会有一个DataGridPageChanged事件,双击后,在代码中填写如下:
dgUser.CurrentPageIndex = e.NewPageIndex;
dgUser.DataBind();

具体可参考:ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vbcon/html/vbtskSpecifyingPagingBehaviorInDataGridWebControl.htm
coolnick 2003-07-01
  • 打赏
  • 举报
回复
将代码 dgUser.DataSource=didadicom.Components.dbuser.GetAllUsers();
放在Page_load中,但不放在if (!IsPostBack)里面。
然后将Page_load中的binddata放在if (!IsPostBack)
里面。
fuancld2 2003-07-01
  • 打赏
  • 举报
回复
gz
enlyse 2003-07-01
  • 打赏
  • 举报
回复
不行阿,如果是

if (!IsPostBack)
binddata();

那点下一页就会出现空白
birdxxxx 2003-07-01
  • 打赏
  • 举报
回复
必须把函数放在If (!IsPostBack)中

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧