进行了牛腩新闻发布系统,运用到了许多之前没有学习过的新的控件,特此总结一下,以待后时之需
数据控件:Repeater
Repeater控件,可用来一次显示一组数据项,比如可以用它们显示一个数据表中的所有行。
优点:
Repeater控件完全由模板驱动,提供了最大的灵活性,可以任意设置它的输出格式。同时它的灵活性还体现在它不仅可以放到.net中,完全可以自由发挥,想怎么显示就怎么显示,还可以把它放在JavaScript代码中。
模板:
Repeater支持一下五种模板
- ItemTemplate:对每一个数据项进行格式设置【Formats each item from the data source】
- AlternatingItemTemplate:对交替数据项进行格式设置
- SeparatorTemplate:对分隔符进行格式设置
- HeaderTemplate:对页眉进行格式设置
- FooterTemplate:对页脚进行格式设置
以上,英文中使用了Formats item from datasource这样的话,就说明Repeater控件主要是用来对数据进行format的,控制数据怎么样排列,怎么样显示。
Repeater必须使用的是Itemtemplate,其他类型的模板按需添加
事件处理:
Repeater控件有以下事件
● DataBinding : Repeater控件绑定到数据源时触发
● ItemCommand : Repeater控件中的子控件触发事件时触发
● ItemCreated : 创建Repeater每个项目时触发
● ItemDataBound : Repeater控件的每个项目绑定数据时触发
实例:
前端代码:
<asp:Repeater ID="repNews" runat="server">
<ItemTemplate>
<tr>
<td><%#Eval("id") %></td>
<td><a href='../newscontent.aspx?newsid=<%#Eval("id") %>' target="_blank"><%#Eval("title") %></a></td>
<td><a href='modnews.aspx?newsid=<%#Eval("id") %>' target="_blank">修改</a></td>
<td>
<asp:LinkButton ID="lbtnDel" OnClientClick ="return confirm('删除新闻会连同其下评论一起删除,是否删除?')" OnClick="lbtnDel_Click" CommandArgument='<%#Eval("id") %>' runat="server">删除</asp:LinkButton>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
后端代码:
protected void Page_Load(object sender, EventArgs e)
{
//判断session里面是否存在管理员
if (Session["admin"] != null && Session["admin"].ToString() == "sa")
{
//已登录
if (!Page.IsPostBack)
{
BindNews();
//查询出了记录的总数
AspNetPager1.RecordCount = new NewsManager().SelectAll().Rows.Count;
}
}
else
{
//未登陆
Response.Redirect("/admin/login.aspx");
}
}
private void BindNews()
{
repNews.DataSource = new NewsManager().FenYeSelectALL (AspNetPager1.StartRecordIndex,AspNetPager1.StartRecordIndex +9);
repNews.DataBind();
}