• [导入]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


    钢钢 2008-01-01 18:54 发表评论

    文章来源:http://www.cnblogs.com/xugang/archive/2008/01/01/1022368.html
  • 相关阅读:
    Redis的高可用详解:Redis哨兵、复制、集群的设计原理,以及区别
    高并发架构系列:Redis为什么是单线程、及高并发快的3大原因详解
    Docker安装Zookeeper并进行操作
    org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1
    SpringBoot启动加载yml配置文件出现编码格式错误
    log4j:WARN No appenders could be found for logger ().解决方案
    SpringBoot&Dubbo&Zookeeper远程调用项目搭建
    Postman下载与安装
    echart 饼图图例legend支持滑动
    web app 开发必不可少的滑动插件 Flipsnap
  • 原文地址:https://www.cnblogs.com/kingkoo/p/1036810.html
Copyright © 2020-2023  润新知