Repeater控件的使用
ascx的文件主要代码
<div>
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
<HeaderTemplate>
<table style="background-color:Gray;width:100%; color:ThreeDface;">
<tr>
<td style="width:20%;" align="center">新闻标题</td><td style="width:20%;" align="center">新闻提供</td><td style="width:60%;" align="center">新闻内容</td>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<table style="width:100%;">
<tr>
<td style="width:20%;"><%#Eval("News_Title") %></td><td style="width:20%;" align="center"><%#Eval("News_Provider") %></td><td style="width:60%;"><%#Eval("News_Contant") %></td>
</tr>
</table>
</ItemTemplate>
<SeparatorTemplate>
<hr style="size:1px;" />
</SeparatorTemplate>
<AlternatingItemTemplate>
<table style="width:100%;">
<tr>
<td style="width:20%;background-color:#dcdcdc;"><%#Eval("News_Title") %></td><td style="width:20%;background-color:#dcdcdc;" align="center"><%#Eval("News_Provider") %></td><td style="width:60%;background-color:#dcdcdc;"><%#Eval("News_Contant") %></td>
</tr>
</table>
</AlternatingItemTemplate>
<FooterTemplate>
<table style="width:100%;background-color:Gray;">
<tr>
<td valign="middle" align="center" style="width:100%; color:ThreeDface; font-size:small;">当前为第
<asp:Label ID="PageNow" runat="server" Text="1"></asp:Label> 页,总共
<asp:Label ID="PageTotal" runat="server" Text="1"></asp:Label> 页
<asp:HyperLink ID="FrPage" runat="server" Text="首页"></asp:HyperLink>
<asp:HyperLink ID="PrPage" runat="server" Text="上一页"></asp:HyperLink>
<asp:HyperLink ID="NePage" runat="server" Text="下一页"></asp:HyperLink>
<asp:HyperLink ID="LaPage" runat="server" Text="末页"></asp:HyperLink>
</td>
</tr>
</table>
</FooterTemplate>
</asp:Repeater>
</div>
ascx.cs文件的主要代码
public partial class NewsShowTable : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Repeater1.DataSource = RepeaterBind();
Repeater1.DataBind();
}
}
private PagedDataSource RepeaterBind()
{
string sqlstring, TableName;
int temp;
sqlstring = "select News_ID,News_Title,News_Provider,News_Contant from [News] ORDER BY News_ID DESC";
TableName = "News";
DataSet ds = GetDataSource.FillData(sqlstring, TableName);
PagedDataSource pds = new PagedDataSource();
pds.DataSource = ds.Tables["News"].DefaultView;
pds.AllowPaging = true;
if (Request.QueryString["page"] == null)
temp = 0;
else temp = int.Parse(Request.QueryString["page"]);
pds.CurrentPageIndex = temp;
pds.PageSize = 5;
return pds;
}
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Footer)
{//判断当前项是页脚模板
int n = RepeaterBind().PageCount;//将分页总数赋给变量n
int i = RepeaterBind().CurrentPageIndex;//将当前分页码赋给i
Label lblpc = (Label)e.Item.FindControl("PageTotal");
lblpc.Text = n.ToString();
//找到lblpc这个Label,将总页码赋给他
Label lblp = (Label)e.Item.FindControl("PageNow");
lblp.Text = Convert.ToString(RepeaterBind().CurrentPageIndex + 1);
//找到lblp这个Label,将当前页码赋给他,但是注意,因为页码从0开始,这里要直观的话就得加1
HyperLink FrPage = (HyperLink)e.Item.FindControl("FrPage");
FrPage.NavigateUrl = "?page=0";
HyperLink LaPage = (HyperLink)e.Item.FindControl("LaPage");
LaPage.NavigateUrl = "?page=" + Convert.ToInt32(n - 1);
//找到表示最前页和末页的Label,为他们的NavigateUrl属性赋为第0页和最大页码减1
HyperLink PrPage = (HyperLink)e.Item.FindControl("PrPage");
HyperLink NePage = (HyperLink)e.Item.FindControl("NePage");
//找到表示上页和下页这两个控件
if (i <= 0)
{//如果当前页已经是第0页
PrPage.Enabled = false;
FrPage.Enabled = false;
NePage.Enabled = true;
}
else
{
PrPage.NavigateUrl = "?page=" + Convert.ToInt32(i - 1);
}
if (i > n - 2)
{//如果当前项已经是最末页
NePage.Enabled = false;
LaPage.Enabled = false;
PrPage.Enabled = true;
}
else
{
NePage.NavigateUrl = "?page=" + Convert.ToInt32(i + 1);
}
}
}
}
但是不知道如何做成可以复用的用户控件,不知道怎么动态生成所需要的列..^_^可惜
浙公网安备 33010602011771号