asp.net 做网页,怎么做分页啊,是Datalist

 我来答
勿说心想
2012-03-28 · TA获得超过291个赞
知道大有可为答主
回答量:2104
采纳率:50%
帮助的人:1473万
展开全部
AllowCustomPaging 获取或设置一个值,指示是否在数据绑定控件中启用自定义分页。
AllowPaging 获取或设置一个值,指示是否在数据绑定控件中启用分页。
AllowServerPaging 获取或设置一个值,指示是否启用服务器端分页。
Count 获取要从数据源使用的项数。
CurrentPageIndex 获取或设置当前页的索引。
DataSource 获取或设置数据源。
DataSourceCount 获取数据源中的项数。
FirstIndexInPage 获取页面中显示的首条记录的索引。
IsCustomPagingEnabled 获取一个值,该值指示是否启用自定义分页。
IsFirstPage 获取一个值,该值指示当前页是否是首页。
IsLastPage 获取一个值,该值指示当前页是否是最后一页。
IsPagingEnabled 获取一个值,该值指示是否启用分页。
IsReadOnly 获取一个值,该值指示数据源是否是只读的。
IsServerPagingEnabled 获取一个值,指示是否启用服务器端分页支持。
IsSynchronized 获取一个值,该值指示是否同步对数据源的访问(线程安全)。
PageCount 获取显示数据源中的所有项所需要的总页数。
PageSize 获取或设置要在单页上显示的项数。
SyncRoot 获取可用于同步集合访问的对象。
VirtualCount 获取或设置在使用自定义分页时数据源中的实际项数。

ps.AllowPaging = true;
//每页显示10条数据
ps.PageSize = 10;
//设置当前页的索引
ps.CurrentPageIndex = nPage - 1;

if (nPage == 1) //等于第一页
{
this.First.Enabled = false;//不显示第一页按钮
this.Front.Enabled = false;//不显示上一页按钮
}
if (nPage == ps.PageCount) //等于最后一页
{
this.Next.Enabled = false;//不显示下一页
this.Last.Enabled = false;//不显示最后一页
}
this.lPage.Text = Convert.ToString(ps.PageCount);
this.dl2.DataSource = ps;
//设置数据源的关键字段
this.dl2.DataKeyField = "ID";
dl2.DataBind();

}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
}
}

protected void First_Click(object sender, EventArgs e)
{
laPage.Text = "1";//设置当前页为1

}
protected void Front_Click(object sender, EventArgs e)
{
//设置当前页减1
labPage.Text = Convert.ToString(Convert.ToInt32(laPage.Text) - 1);

}
protected void Next_Click(object sender, EventArgs e)
{
//设置当前页加1
lab.Text = Convert.ToString(Convert.ToInt32(laPage.Text) + 1);

}
protected void Last_Click(object sender, EventArgs e)
{
//设置当前页为最后一页
laPage.Text = labBackPage.Text;

}
}

http://hi.baidu.com/lieut_sniper/blog/item/be16a8f2037eee18b07ec5b5.html

前一段时间做了一个网站,网站不是很大,开始用的SQL Server数据库系统做的,完成后考虑到网站本来不大,没有什么必要再单独买个SQL数据库空间,就在快要上传的前一天拿出三个小时将代码全部改成了access数据库代码,其实也不是太复杂,涉及到数据库连接的地方稍微一修改就可以,读写代码都差不多,改动不需要很大。有一个问题不是太好解决,那就是本来用sql数据库用存储过程读取返回数据数量来显示页数,用access没有法用存储过程,datalist控件的分页也不能和整个页面做好协调,于是找了找网上高手的代码,学习了一下,稍微改动下,用着还不错,在此记录一下,对自己以后使用提供点方便,也希望能为大家带来方便。

在html中代码是这样的,一列,行数在后台代码控制,这里用到了一个公共类,就是sysBLL.SystemTools.getstring(20, DataBinder.Eval(Container.DataItem,"title").ToString()) 在取文章标题的时候控制了一下数字,不让它显示太多防止破坏整体效果。而用黄色背景标记的就是分页显示部分。

<asp:DataList ID="DataList1" runat="server" OnItemDataBound="Datalist1_ItemDataBound" RepeatColumns="1" Width="556px">
<ItemTemplate>
<div><table border="0">
<tr style="width: 300px;">
<td style="width: 8px; padding-left: 5px; height: 21px;">
<img src="images/news.jpg" />
</td>
<td style="width: 362px; text-align: left; height: 21px;">
<asp:HyperLink ID="HyperLink" runat="server" NavigateUrl='<%# "~/shownew.aspx?wzid="+Eval("wzid") %>'
Target="_blank" Text='<%# sysBLL.SystemTools.getstring(20, DataBinder.Eval(Container.DataItem,"title").ToString()) %>'
ToolTip='<%# DataBinder.Eval(Container.DataItem,"title").ToString() %>'></asp:HyperLink>
<span style="color: darkgray">(作者:
<%#DataBinder.Eval(Container.DataItem, "author")%>
)</span>
</td>
<td style="width: 170px; height: 21px;">
<span style="color: darkgray"></span>
<%#((DateTime)DataBinder.Eval(Container.DataItem, "addtime")).ToShortDateString()%>
</td>
</tr>
</table>
</div>
<div>
 </div>
</ItemTemplate>
<FooterTemplate>
<tr>
<td colspan="2">
当前页:<asp:Label ID="lbl_cur" runat="server"></asp:Label> 总页数:<asp:Label ID="lbl_all" runat="server"></asp:Label>
<asp:HyperLink ID="lbt_f" runat="server"><<</asp:HyperLink > <asp:HyperLink ID="lbt_p" runat="server"><</asp:HyperLink ><%--此处为HyperLink,不是LiknButton。方便后面的HyperLink的NavigateURL的传值--%>
<asp:HyperLink ID="lbt_n" runat="server">></asp:HyperLink > <asp:HyperLink ID="lbt_l" runat="server">>></asp:HyperLink >
</td>
</tr></table>
</FooterTemplate>
</asp:DataList>

代码效果是这样的:

后台代码是这样的:

protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = " 今天是: " + DateTime.Today.ToLongDateString() + " " + "星期" + "日一二三四五六".Substring((int)System.DateTime.Now.DayOfWeek, 1);
if (!IsPostBack)
{
DataList1.DataSource = pag();
DataList1.DataBind();
}
}
private PagedDataSource pag()//定义一个返回值为PagedDataSource的私有方法
{
string Strload = Server.MapPath("/test.mdb");
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.jet.OLEDB.4.0;Data Source=" + Strload + ";");
conn.Open();
OleDbDataAdapter sda = new OleDbDataAdapter("select * from article where typeid='新闻' order by wzid desc", conn);
DataSet ds = new DataSet();
sda.Fill(ds, "article");
PagedDataSource ps = new PagedDataSource();
ps.DataSource = ds.Tables["article"].DefaultView;
ps.AllowPaging = true;
ps.PageSize = 8;

ps.CurrentPageIndex = Convert.ToInt32(Request.QueryString["page"]);//当前页的索引的通过传过来的page。
return ps;
}
protected void Datalist1_ItemDataBound(object sender,DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Footer)//当前列类型为footer的时候
{
int c = pag().CurrentPageIndex;
int a = pag().PageCount;

Label lbl_c = (Label)e.Item.FindControl("lbl_cur");//先通过Repeater的Item的FindControl方法找到内部控件,然后用()进行强制转换。然后对转换过来的控件进行属性设置
lbl_c.Text = Convert.ToString(c + 1);
Label lbl_a = (Label)e.Item.FindControl("lbl_all");
lbl_a.Text = a.ToString();

HyperLink lbt_f = (HyperLink)e.Item.FindControl("lbt_f");
lbt_f.NavigateUrl = "?page=0";//这里别忘记给找到的HyperLink控件设置NavigateURL属性,保证page的传值。
HyperLink lbt_l = (HyperLink)e.Item.FindControl("lbt_l");
lbt_l.NavigateUrl = "?page=" + Convert.ToString(a - 1);

HyperLink lbt_p = (HyperLink)e.Item.FindControl("lbt_p");
HyperLink lbt_n = (HyperLink)e.Item.FindControl("lbt_n");

if (c <= 0)
{//如果是第一页,下一页可以用
lbt_f.Enabled = false;
lbt_p.Enabled = false;
lbt_n.Enabled = true;
// lbl_l.Enabled = true;
}
else
{ //不是第一页,上一页可以用
lbt_p.NavigateUrl = "?page=" + Convert.ToString(c - 1);
}
if (c > a - 2)//这里是如果当前页数的索引大于总页数-2.即达到最后一页了
{//最后一页,
lbt_p.Enabled = true;
lbt_l.Enabled = false;
lbt_n.Enabled = false;
}
else
{//不是最后一页,下一页可以用
lbt_n.NavigateUrl = "?page=" + Convert.ToString(c + 1);
}
}
}

在页面上在丢几个按钮, 那个ps是数据源。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式