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的資料綁定控件雖然用起來簡單,但有時并不靈活,而且有些複雜的操作一般書上都不會介紹,如資料綁定控件的嵌套,内嵌控件的事件操作等,需要自己深入研究。
原文連結 http://blog.sina.com.cn/s/blog_541f0c810100mtgq.html