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/xugang/archive/2008/01/01/1022368.html,如需转载请自行联系原作者

相关文章
|
负载均衡 安全 中间件
Express——结合multer上传图片、EJS
Express——结合multer上传图片、EJS
167 0
hook+ant design实现文本Input多行编辑
hook+ant design实现文本Input多行编辑
120 0
|
前端开发
前端hook项目moblie总结笔记-ant design进行动态表单添加
前端hook项目moblie总结笔记-ant design进行动态表单添加
120 0
Winform控件优化之双层Form利用Opacity实现Layer遮罩层
对于完全由自己控制实现的桌面应用来说,则可以想办法实现遮罩整个窗体(窗口)的Layer层。下面介绍在Winform中利用Form做遮罩层的实现,推荐的还是第二种方式:双Form的遮罩层....
279 0
Winform控件优化之双层Form利用Opacity实现Layer遮罩层
React+hook+ts+ant design封装一个input和select搜索的组件
React+hook+ts+ant design封装一个input和select搜索的组件
286 0
React+hook+ts+ant design封装一个input和select搜索的组件
React+hook+ts+ant design封装一个input和select搜索的组件
React+hook+ts+ant design封装一个input和select搜索的组件
354 0
React+hook+ts+ant design封装一个input和select搜索的组件
|
存储 C#
[UWP]了解模板化控件(4):TemplatePart
原文:[UWP]了解模板化控件(4):TemplatePart 1. TemplatePart TemplatePart(部件)是指ControlTemplate中的命名元素。控件逻辑预期这些部分存在于ControlTemplate中,并且使用protected DependencyObject GetTemplateChild(String childName)获取它们后进行操作。
1262 0
[UWP]了解模板化控件(5.1):TemplatePart vs. VisualState
原文:[UWP]了解模板化控件(5.1):TemplatePart vs. VisualState 1. TemplatePart vs. VisualState 在前面两篇文章中分别使用了TemplatePart及VisualState的方式实现了相同的功能,其中明显VisualState的方式更灵活一些。
937 0