Repater 控件的传统应用

翻译|其它|编辑:郝浩|2008-01-02 13:22:57.000|阅读 961 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

<asp:Repeater ID="normalArticleList" runat="server">
    <ItemTemplate>
        <div class="textbox">
            <div class="textbox-title">
                <h4><a 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"]%>: <a 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">
<a href="articleManage.aspx?act=edit&id=<%# Eval("ArticleID") %>" title="<%=lang["edit"]%>">
                    <img src="/styles/default/images/icon_edit.gif" alt="<%=lang["edit"]%>" />
                </a>| <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>
<a onclick="<%# urlFormats.ArticleCategoryUrl(Convert.ToInt32(Eval("categoryID").ToString()))%>" href="#"><%=lang["category"]%>:<%# Eval("CategoryName")%></a> | <a href="?id=<%# Eval("ArticleID") %>"><%=lang["permalink"]%></a> | <a onclick="<%# urlFormats.ArticleConent(Convert.ToInt32(Eval("ArticleID").ToString()))%>" href="#commentbox" title="评论"><%=lang["comments"]%>:<%# Eval("CommentCount") %></a> | <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);
               
            }
        }

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


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:.NET博客园

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP