天天看點

在Repeater中添加runat="server"的div,并控制其是否顯示

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>
                                         &nbsp;
                                       <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

繼續閱讀