读书人

小弟我的DataList分页有什么有关问题

发布时间: 2012-01-14 20:02:35 作者: rapoo

我的DataList分页有什么问题?
我把部分代码贴出来:
页面代码:
<asp:datalist id=DataList1 runat= "server " DataMember= "Message " DataSource= " <%# dataSet21 %> " ShowFooter= "False " DataKeyField= "M_ID " RepeatDirection= "Horizontal " RepeatColumns= "1 " Width= "800px " Height= "96px " CellPadding= "0 ">
<HeaderTemplate>
<FONT face= "宋体 "> 留言列表 </FONT>
</HeaderTemplate>
<EditItemStyle Font-Size= "9pt "> </EditItemStyle>
<ItemStyle Font-Size= "9px "> </ItemStyle>
<ItemTemplate>
<TABLE cellSpacing= "1 " cellPadding= "0 " bgcolor= "#00ccff " width= "800 " align= "center " border= "0 ">
<TR>
<td width= "100px " bgcolor= "#FFFFFF "> <%# DataBinder.Eval(Container, "DataItem.M_GuestName ") %> 的留言 </td>
<TD bgcolor= "#FFFFFF "> <%# DataBinder.Eval(Container, "DataItem.M_Title ") %> </TD>
<TD bgcolor= "#FFFFFF " align= "right ">
<asp:ImageButton id=ibtnDelete runat= "server " Visible= ' <%# bool.Parse(Session[ "flag "].ToString())%> ' ImageUrl= "img/delete.gif " AlternateText= "删除 " CommandName= "delete ">
</asp:ImageButton>
<asp:ImageButton id=ibtnReply runat= "server " Visible= ' <%# bool.Parse(Session[ "flag "].ToString())%> ' ImageUrl= "img/reply.gif " AlternateText= "回复 " CommandName= "edit ">
</asp:ImageButton> <%# DataBinder.Eval(Container, "DataItem.M_CreateTime ", "{0:d} ") %> </TD>
</TR>
<TR>
<td bgcolor= "#FFFFFF "> </td>
<TD bgcolor= "#FFFFFF " colSpan= "2 "> <%# DataBinder.Eval(Container, "DataItem.M_Content ") %> <FONT face= "宋体 "> </FONT> <BR>
</TD>
</TR>
<TR>
<td width= "100px " bgcolor= "#FFFFFF "> 站长回复: </td>
<TD bgcolor= "#FFFFFF " colSpan= "2 ">
<%# DataBinder.Eval(Container, "DataItem.M_AdminReply ") %>
<FONT face= "宋体 "> </FONT>
</TD>
</TR>
<TR>
<TD bgcolor= "#FFFFFF " colSpan= "3 ">
</TD>
</TR>
</TABLE>
</ItemTemplate>
<EditItemTemplate>
<FONT face= "宋体 ">
<%# DataBinder.Eval(Container, "DataItem.M_Content ") %>
<BR>
<BR>
<asp:TextBox id= "txtReply " runat= "server " TextMode= "MultiLine " Columns= "20 " Rows= "2 "> </asp:TextBox> <BR>
<asp:Button id= "btnReply " runat= "server " Text= "回复 " CommandName= "update "> </asp:Button>         


<asp:Button id= "btnNo " runat= "server " Text= "取消 " CommandName= "cancel "> </asp:Button> </FONT> <br>
</EditItemTemplate>
</asp:datalist>

codebehind:
private void Bind()
{
this.sqlDataAdapter1.Fill(dataSet21, "message ");
PagedDataSource pager = new PagedDataSource();
pager.DataSource=this.dataSet21.Tables[ "message "].DefaultView;
pager.AllowPaging=true;
int curPage = int.Parse(lblcurPage.Text);
pager.PageSize=2;
//CurrentPageIndex的值是从0开始的
pager.CurrentPageIndex=curPage-1;
int totalpage = pager.PageCount;
if(curPage==1)
{
lbtnLast.Enabled=false;
lbtnNext.Enabled=true;
}
if(curPage==pager.PageCount)
{
lbtnLast.Enabled=true;
lbtnNext.Enabled=false;
}
this.DataList1.DataSource=dataSet21.Tables[ "message "];
this.DataList1.DataBind();
}

//“上一页”按钮事件
private void lbtnLast_Click(object sender, System.EventArgs e)
{
this.lblcurPage.Text=Convert.ToString((int.Parse(lblcurPage.Text)-1));
Bind();
}

//“下一页”按钮事件
private void lbtnNext_Click(object sender, System.EventArgs e)
{
this.lblcurPage.Text=Convert.ToString((int.Parse(lblcurPage.Text)+1));
Bind();
}

现在的问题就是:数据库中有四行数据,我分为2页,当前是第一页,我点下一页,内容没变(始终是把数据库中四行数据都显示出来了)。

[解决办法]
分页不要这样分,一般数据量大了,很可能降低效率,给你一个好的方法。
在SQL中分页,每页只SELECT出需要那几条数据,你去Google搜索一下“分页SQL”,具体SQL的写法我就不一一列出了,祝你好运
[解决办法]
this.DataList1.DataSource=dataSet21.Tables[ "message "];
this.DataList1.DataBind()
-------------------------
你绑定应该绑定pager.DataSource吧!;绑定dataSet21.Tables[ "message "];不是全都绑出来了嘛。
[解决办法]
this.DataList1.DataSource=dataSet21.Tables[ "message "];

我寒死,你那个pager设了半天,没用上啊。笨

读书人网 >asp.net

热点推荐