DataGrid分页问题,无法显示第二页数据

bizhan 2008-01-05 01:12:13
大家好,我程序中的DataGrid分页无法显示第二页数据。具体症状可以见如下链接地址:

http://www.infozobo.com/persons/1/2.html

代码如下:
.aspx文件
<atlas:UpdatePanel ID="upPostBack" runat="server"><Triggers><atlas:ControlEventTrigger ControlID="btnSend" EventName="Click"/></Triggers>
<ContentTemplate>
<table border="0" cellpadding="0" cellspacing="0" style="width: 920px;margin:auto" >
<tr><td>

<asp:DataGrid ID="dgPersonBack" runat="server" AllowPaging="True" AutoGenerateColumns="False" ShowHeader="False" Width="920px" OnItemDataBound="dgPersonBack_ItemDataBound" OnPageIndexChanged="dgPersonBack_PageIndexChanged" BorderColor="Silver" BorderStyle="Solid" BorderWidth="1" GridLines="None" >

<PagerStyle Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False"
Font-Underline="False" HorizontalAlign="Right" Mode="NumericPages" Position="TopAndBottom" />
<Columns>
<asp:BoundColumn DataField="id" ReadOnly="True" Visible="False"></asp:BoundColumn>

<asp:TemplateColumn>
<ItemTemplate>
<table border="0" cellpadding="0" cellspacing="0" class="bordercolor" style="width: 920px">
<tr style="background-color:darkgray;height:20px;color:darkblue">
<td style="width:10%"><asp:Label ID="lblLou" runat="server"></asp:Label>
</td><td style="width:30%">作者:<%#Eval("sender") %></td><td style="width:30%">时间:<%#Eval("sendtime") %></td>
<td align="right">
<a href="delete-<%#Eval("id")%>.html">删除</a></td>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="bordercolor" style="width: 920px">
<tr><td colspan="2" style="width: 100%; height: 30px;font-size:small" valign="middle">
<%#Eval("info") %>
</td>
</tr>

</table>
</ItemTemplate>
</asp:TemplateColumn>

</Columns>
</asp:DataGrid>
</td></tr>
</table>
</ContentTemplate>
</atlas:UpdatePanel>


.cs文件代码:
protected void BindGrid()
{
string sqlSelect = "select * from personback where personid='" + Request.QueryString["personid"] + "'";
DataSet ds = db.GetDs(sqlSelect);
dgPersonBack.DataSource = ds;
dgPersonBack.DataBind();
}
protected void dgPersonBack_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
{
dgPersonBack.CurrentPageIndex = e.NewPageIndex;
BindGrid();
}
...全文
127 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
dmhaifeng 2008-01-05
  • 打赏
  • 举报
回复
每次都要重新从数据库获取,实在太浪费资源!
请尝试下ViewState

string sqlSelect = "select * from personback where personid='" + Request.QueryString["personid"] + "'";
DataSet ds = db.GetDs(sqlSelect);
dgPersonBack.DataSource = ds;
dgPersonBack.DataBind();
this.ViewState["data"] = ds;


//DataGrid分页
protected void dgTemplet_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
{
//进行分页设置
this.dgTemplet.CurrentPageIndex = e.NewPageIndex;

this.dgTemplet.DataSource = ViewState["data"] as DataSet;
int CurrentPage = 0;
if (this.dgTemplet.CurrentPageIndex == this.dgTemplet.PageCount - 1)
{
if (this.dgTemplet.CurrentPageIndex == 0)
{
this.dgTemplet.CurrentPageIndex = this.dgTemplet.PageCount - 1;
}
else
{
if (this.dgTemplet.Items.Count % this.dgTemplet.PageSize == 1)
{
CurrentPage = 2;
}
else
{
CurrentPage = 1;
}
this.dgTemplet.CurrentPageIndex = this.dgTemplet.PageCount - CurrentPage;
}
}
this.dgTemplet.DataBind();
}

供参考!仅
bizhan 2008-01-05
  • 打赏
  • 举报
回复
谢谢各位兄弟的回复。teachman_999的指点是正确的。我去掉了!ispostback就可以了!
symbol441 2008-01-05
  • 打赏
  • 举报
回复
string sqlSelect = "select * from personback where personid='" + Request.QueryString["personid"] + "'";

----
当点击第二页的时候,貌似你根据就没有传递都有personid过去,你是怎么传参过去的,检查一下传参的过程
scjtswj 2008-01-05
  • 打赏
  • 举报
回复
弄错
是这个PageIndexChanged事件吗?反正GridView我记得是在PageChanging事件的,或者和teachman_999说的一样
scjtswj 2008-01-05
  • 打赏
  • 举报
回复
是这个PageIndexChanged事件吗?反正GridView我记得是在PageChanging事件的,或者和duoduo123 说的一样
godblessyU 2008-01-05
  • 打赏
  • 举报
回复
看看Request.QueryString["personid"] 的值是怎么传过去的
teachman_999 2008-01-05
  • 打赏
  • 举报
回复
BindGrid() 是不是写在!ispostback{}里面了?
duoduo123 2008-01-05
  • 打赏
  • 举报
回复
看一下PageIndexChanged事件发生的时候能否正常获得页面参数
paopaoyu2002 2008-01-05
  • 打赏
  • 举报
回复
不好意思,好像我搞错了。。。
paopaoyu2002 2008-01-05
  • 打赏
  • 举报
回复
原因:你的dgPersonBack_PageIndexChanged()函数中,只绑定了数据,没有指明数据源,即没有dataset,上面的DataSet ds = db.GetDs(sqlSelect); 是局部声明,在分页函数中得不到。。。
方法:将dataset 声明为全局变量,然后再分页函数中追加this.dgPersonBack.DataSource=ds.Tables["tablename"];
闲游四疯 2008-01-05
  • 打赏
  • 举报
回复
UP wait~

62,046

社区成员

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

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

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

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