您的位置:首页 > 其它

Repater 控件的应用(学习)

2008-01-01 18:54 267 查看
Repater 控件的传统应用


<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)

{

{

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);

}

}

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

学习来源:/article/4625159.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: