在园子里转了好久了,今天也把自己在应用中遇到的点点滴滴记录下来,大都是比较简单的,写的不对的地方还请大家多多指点。

闲话少说,还是说说今天要谈的:Reteater,做asp.net的朋友可能都很喜欢的好东西,先插句,不是说GridView,DataList这类不好,看在什么地方什么情况下应用了,不过在前台页面显示来说,还是比较喜欢Repeater,性能好,而且很灵活,今天就举个我在刚进公司时遇到的关于Repeater在小问题。

先说下问题,在一个UL,LI显示图片列表中,要求每行显示四个图片,本以为是一个超简单的,也很有自信,拿过Repeater就编辑模板,可是我没有注意到,每行的LI应用的样式不同,所以问题也来了,经过一翻“折腾”,终于找着了解决办法。

先看下写完的模板:

Code
                <asp:Repeater ID="Repeater1" runat="server" OnItemCreated="Repeater1_ItemCreated">
                    <HeaderTemplate>
                        <ul class="healweek">
                    </HeaderTemplate>
                    <ItemTemplate>
                        <li id="rep" runat="server"><a href="health_idea_detail.aspx?id=<%#Eval("id") %>&type=3">
                            <asp:Image ID="Image3" runat="server" ImageUrl='<%#Eval("Defaultimage","~/img/small/health/{0}") %>'
                                AlternateText='<%#Eval("idearname") %>' Width="160" Height="120" /></a> <span><a
                                    href="health_idea_detail.aspx?id=<%#Eval("id") %>&type=3">
                                    <%#Eval("idearname") %></a></span></li>
                    </ItemTemplate>
                    <FooterTemplate>
                        </ul>
                    </FooterTemplate>
                </asp:Repeater>

(为了完整性,把UL也添加在了头部)

除了普通的方式编写模板及内部的绑定数据外,在ItemTemplate内在li改为了<li id="rep" runset="server">

关键就在这,这样就可以在CS文件里对LI进行动态操作,其他的都是再普通不过的绑定数据了。

在Repeater1_ItemCreated事件中对它进行了操作,如下:

Code
protected void Repeater1_ItemCreated(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            if ((e.Item.ItemIndex + 1) % 4 == 0)
            {
                HtmlControl divContent = e.Item.FindControl("rep") as HtmlControl;
                divContent.Attributes.Add("class", "lastChild");
            }
        }
    }

解释下:

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

大家非常熟悉,判断模板内容项的

if ((e.Item.ItemIndex + 1) % 4 == 0)

这个就是进行判断哪一项是要进行更改样式,上例中是对每行最后一项也就是第4,8..进行更新样式,所以在这里当ItemIndex=3,7..时就执行下面的操作:

HtmlControl divContent = e.Item.FindControl("rep") as HtmlControl;
                divContent.Attributes.Add("class", "lastChild");

查找出REP,对其样式修改为lastChild就OK了!

这只是一个非常简单的应用,多了解控件的运行周期感觉挺有用。

当然也有别的方法可以实现,也可以在HTML页面进行<%%>来动态输出(asp.net mvc中常用)。

转载于:https://www.cnblogs.com/quluqi/archive/2009/01/30/1381426.html

Repeater简单应用(动态改变内部样式)相关推荐

  1. 使用CAShapeLayer实现一个音量大小动态改变的控件

    一.案例演示 对于实时显示语音音量大小的需求,发现很多人的实现方式通过预放置多张图进行切换进行完成的.这样的处理,不但会浪费App的资源存储空间,而且效率也不高.对于符合某一定规律动态改变的图形,我们 ...

  2. WEUI picker组件无法js动态改变选项

    功能需求 设备号和摄像头都可以下拉选择,但是具体的摄像头下拉选项是根据设备号而定的.如下图,尾号为352的设备号只有前置摄像头,尾号为657的设备号前置和后置摄像头都有. 问题说明 一般情况下,这个需 ...

  3. 动态改变select 宽度

    有一个简单的办法:动态改变宽度         <select   οnblur="this.style.width=30"   οnfοcus="this.sty ...

  4. 改变mysql的菜单栏的颜色_导航条——动态改变导航菜单的背景颜色

    1.概述 在浏览一些网站时,当鼠标经过导航菜单某一项时,其背景颜色将切换为其他颜色,实现这种简单的效果会更吸引浏览者的注意. 2.技术要点 本实例主要是应用JavaScript方法来动态改变 标签的背 ...

  5. android 动态添加颜色,Android绘制一个三角形并且可动态改变颜色

    方法一: 这种方法的三角形角度没法控制,因为其实是矩形旋转. android:fromDegrees="45" android:pivotX="135%" an ...

  6. 用线程实现动态改变图标

    用线程实现动态改变图标 作者:cj_ict 下载本文示例代码 前几天看了一个<如何在标题栏中显示动态图标>文章,作者为重庆建设集团一所 唐星彬.觉得用SetTimer实现起来麻烦,且占用资 ...

  7. html动态资源加载进度,JavaScript_快速解决js动态改变dom元素属性后页面及时渲染的问题,今天实现一个进度条加载过程 - phpStudy...

    快速解决js动态改变dom元素属性后页面及时渲染的问题 今天实现一个进度条加载过程,dom结构其实就是两个div 控制里层div的宽width属性,就能实现进度条往前走的效果. 我的进度条是显示下载文 ...

  8. glog 设置日志级别_如何动态改变日志级别

    前言 关于日志级别,大部分项目可能都设置为info级别,当然也可能有一些追求性能或者说包含很多敏感信息的项目直接将级别设置为warn或者error:这时候如果项目中出现一些未知异常,需要用到很详细的日 ...

  9. 模仿企鹅FM播放主页面滑动动态改变各视图的大小

    国庆的一个任务就是把自己之前写的代码搬到博客.这次给各位带来的是通过滑动来动态改变各个View的大小进而达到企鹅FM播放页面的滑动效果(仅仅是滑动效果),老规矩看图先: 首先看看主界面的xml布局: ...

最新文章

  1. mysql数据库主从同步
  2. scala 中List的简单使用
  3. PHP 页面编码声明方法详解(header或meta)
  4. 互联网1分钟 |1129
  5. Transact-SQL 示例 - 如何在拼接的动态sql内调用外部变量
  6. Android开发之java8 lambad表达式的使用
  7. c语言中 %.2s,C2S是什么意思
  8. aws dynamodb_DynamoDB备忘单–您需要了解的有关2020 AWS认证开发人员助理认证的Amazon Dynamo DB的所有信息
  9. Matlab编程知识点
  10. Linux 命令(2)—— od 命令
  11. Shell 获取进程号
  12. matlab fullbnt,Matlab2010下使用FULLBNT工具箱建立复杂的动态贝叶斯网络
  13. android英文用的是什么字体
  14. elasticsearch报错:bootstrap checks failed. You must address the points described in the following [1]
  15. 全网最详细的Android11.0长按power键关机流程分析
  16. 高性能分布式执行框架——Ray
  17. 【深度学习】什么是解耦?
  18. jarvisoj_level1
  19. 林伟 刘念《曾经爱过我》
  20. c语言十进制转八进制递归,C语言之利用递归将十进制转换为二进制

热门文章

  1. java程序初始化_Java程序初始化顺序
  2. bootstrap之glyphicon字体图标
  3. mysql 张三的语文成绩_八道 经典的 MYSQL 面试题目(有答案)
  4. 万能钥匙ctf--4-ReeHY-main调试记录--unlink
  5. Selenium学习之==Switch与SelectApi接口详解
  6. 使用Apache Commons IO组件读取大文件
  7. 闭包造成的内存泄露怎么解决?
  8. 数据可视化 -- Python
  9. Intel汇编语言程序设计学习笔记1
  10. Hsiao United Cheap Nike Air Max