XuGang

记录一个程序员的成长

 

Repater 控件的应用(学习)


Repater 控件的传统应用

<asp:Repeater ID="normalArticleList" runat="server">
    
<ItemTemplate>
        
<div class="textbox">
            
<div class="textbox-title">
                
<h4><onclick="<%# urlFormats.ArticleConent(Convert.ToInt32(Eval("ArticleID").ToString()))%>" href="#"><span runat=server visible=<%# Eval("IsTop")%>>[置顶]</span><%Eval("Title")%></a>
                
</h4>
                
<div class="textbox-label">
                    [
                    
<%Eval("PostTime")%>
                    | 
<%=lang["author"]%><onclick="<%# urlFormats.UserDetail(int.Parse(Eval("AuthorID").ToString()))%>" href="#"><%Eval("Author"%></a> ]</div>
            
</div>
            
<div class="textbox-content">
                
<%# GetContent(Eval("Content0").ToString(), Eval("Content1").ToString())%><%--<%# Eval("Content1"%>--%></div>
            
<div class="textbox-bottom">
                
<asp:PlaceHolder ID="actionLinkPanel" runat="server">
<href="articleManage.aspx?act=edit&id=<%# Eval("ArticleID") %>" title="<%=lang["edit"]%>">
                    
<img src="/styles/default/images/icon_edit.gif" alt="<%=lang["edit"]%>" />
                
</a><href="/articleManage.aspx?act=delete&id=<%# Eval("ArticleID") %>" title="<%=lang["delete"]%>">
                    
<img src="/styles/default/images/icon_del.gif" alt="<%=lang["delete"]%>" /></a> | 
                
</asp:PlaceHolder>
<onclick="<%# urlFormats.ArticleCategoryUrl(Convert.ToInt32(Eval("categoryID").ToString()))%>" href="#"><%=lang["category"]%>:<%Eval("CategoryName")%></a> | <href="?id=<%# Eval("ArticleID") %>"><%=lang["permalink"]%></a> | <onclick="<%# urlFormats.ArticleConent(Convert.ToInt32(Eval("ArticleID").ToString()))%>" href="#commentbox" title="评论"><%=lang["comments"]%>:<%Eval("CommentCount"%></a> | <href="#"><%=lang["trackbacks"]%>:<%Eval("TrackbackCount"%></a> | <%=lang["views"]%>:<%Eval("ViewCount"%>
            
</div>
        
</div>
    
</ItemTemplate>
</asp:Repeater>


上面的代码通过数据绑定语法,能很好的完成了工作。可这界面太烦,字段多,金黄色语法就更多,看上去很烦,但我们却无法逃避这个问题,而且有时候还需要对一些字段进行逻辑判断。

Repater 控件的友好应用

Literal 控件代替绑定语法,在 ItemDataBound 事件中完成数据的填充。

前端代码:

<asp:Repeater ID="normalArticleList" runat="server">
<ItemTemplate>
<div class="textbox">
    
<div class="textbox-title">
        
<asp:Literal ID="articleTitle" runat="server"></asp:Literal>
        
<div class="textbox-label">
            
<asp:Literal ID="articleLabel" runat="server"></asp:Literal>
        
</div>
    
</div>
    
<div class="textbox-content">
        
<asp:Literal ID="articleContent" runat="server"></asp:Literal>
    
</div>
    
<div class="textbox-bottom">
    
<asp:Literal ID="articleBottom" runat="server"></asp:Literal>
    
</div>
</div>
</ItemTemplate>
</asp:Repeater>


后端代码:

        void normalArticleList_ItemDataBound(object sender, RepeaterItemEventArgs e)
        
{
            
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            
{
                Article item 
= (Article)e.Item.DataItem;
              
                Literal title 
= (Literal)e.Item.FindControl("articleTitle");
                Literal articleLabel 
= (Literal)e.Item.FindControl("articleLabel");
                Literal articleContent 
= (Literal)e.Item.FindControl("articleContent");
                Literal articleBottom 
= (Literal)e.Item.FindControl("articleBottom");
                
                title.Text 
= RenderNormalTitle(item);
                articleLabel.Text 
= RenderNormalLabel(item);
                articleContent.Text 
= RenderNormalContent(item);
                articleBottom.Text 
= RenderNormalBottom(item);
                
            }

        }


这样的写法会漂亮很多,而且数据绑定是通过反射机制的,但是听说会损失性能!

学习来源:http://www.cnblogs.com/Clingingboy/archive/2007/12/31/1021611.html

posted on 2008-01-01 18:54  钢钢  阅读(1444)  评论(0编辑  收藏  举报

导航