aspx页代码:
<asp:Repeater ID="rptBlog" runat="server" DataSourceID="objBlog" OnItemDataBound="rptBlog_ItemDataBind">
<ItemTemplate>
<div id="rptBlogTitle">
<h3><a><%#eval_r("blogTitle") %></a></h3>
(<%#eval_r("blogDate") %>)
</div>
<div id="divBlogEditDel" runat="server" visible="false">
<a href="EditBlog.aspx">[编辑]</a>
<a href="#">[删除]</a>
</div>
<div id="rptBlogTypeName">
</div>
<div id="rptBlogContent">
<%#eval_r("blogContent") %>
</div>
<div id="rptBlogFooter">
<a href="blogContent.aspx">查看全文</a>
</div>
</ItemTemplate>
</asp:Repeater>
<asp:ObjectDataSource ID="objBlog" runat="server" TypeName="BlogGet" SelectMethod="GetBlog"/>
后台代码:
protected void rptBlog_ItemDataBind(object sender, RepeaterItemEventArgs e)
{
if (Session["UserName"] != null)
{
if (Session["UserName"].ToString() == this.bc_UserName.GetBlog_UserName())
{
e.Item.FindControl("divBlogEditDel").Visible = true;
}
}
}
注意事项:
1。首先,不能将处理Repeater找子控件的代码放入Page_Load()的if(!Page.IsPostBack){}中,会找不到Item项,原理还没完全搞明白;
2。需要先判断Session[“UserName”] != null,否则,如果是匿名访问的话,会因为这一句:
Session[“UserName”].ToString()而提示“未将对象引用设置到对象实例”的错误。
感想:ASP.NET的数据绑定控件虽然用起来简单,但有时并不灵活,而且有些复杂的操作一般书上都不会介绍,如数据绑定控件的嵌套,内嵌控件的事件操作等,需要自己深入研究。