在Repeater控件中使用if语句(参考)

在Repeater控件中使用if语句 .Afr_ARTICLE_TITLE{font: NORMAL BOLD 14px "Tahoma";}.Afr_CONTENTS{font: NORMAL NORMAL 12px "Tahoma";line-height: 22px;}.Afr_CODE{font: NORMAL NORMAL 11px "Courier New"; 阅读详情

来自:http://blog.youkuaiyun.com/Afritxia/article/details/146936

我最近正在写一个 BBS 的项目,在显示主题列表时,我遇到了一个问题。 BBS_Topic 的数据表结构定义大致是下面这样:

TABLE BBS_Topic
(
    TopicID      INT NOT NULL IDENTITY(1, 1) PRIMARY KEY,
    Title        NVARCHAR(40),
    Author       NVARCHAR(20),
    PostDate     DATETIME NOT NULL DEFAULT GETDATE(),
    Content      NTEXT,
    Clicked      INT NOT NULL DEFAULT 0,
    ReCount      INT NOT NULL DEFAULT 0,
    LastReplyer  NVARCHAR(20)
)

下面是ListTopic.aspx文件中的部分内容:

<asp:Repeater ID="_TopicRepeater" Runat="SERVER" DataSource="...">
<ItemTemplate>
    <%# DataBinder.Eval(Container.DataItem, "Title")   %>
    <%# DataBinder.Eval(Container.DataItem, "Author")  %>
    <%# DataBinder.Eval(Container.DataItem, "Clicked") %>
    <%# DataBinder.Eval(Container.DataItem, "ReCount") %>
    <!-- 注意下面的if语句 -->
    <% if((int)(DataBinder.Eval(Container.DataItem, "ReCount"))==0){ %>
        ----
    <% } else { %>
        <%# DataBinder.Eval(Container.DataItem, "LastReplyer") %>
    <% } %>
</ItemTemplate>
</asp:Repeater>

使用if语句的目的是在于:判断当前帖子的回复次数为 0 时,就将 LastReplyer 这项显示成“----”。而当前的帖子的回复次数不为 0 时,则显示回复人的名字。但是,这样的做法是行不通的。在IE中会出现类似的警告
         编译器错误信息: CS0246: 找不到类型或命名空间名称“Container”(是否缺少 using 指令或程序集引用?)
即便,根据这个错误提示,将所有可能用到的命名空间全都 Import 到这个文件里,也还是会提示其他错误信息的。至于为什么这样?可能是因为 DataBinder.Eval 和 Container.DataItem 同属 Repeater 类的成员的缘故。 “<%# %>”就是“作用”在 Repeater 上,但是 “if ... else ...” 语句则不同,它是“作用”在整个页面上。这就象是在全局过程中直接访问局部变量。当然,用类似下面(三目运算)的语句也可以实现上述功能:

<%# ((int)(DataBinder.Eval(Container.DataItem, "ReCount"))==0)
    ? "----"
    : DataBinder.Eval(Container.DataItem, "LastReplyer") %>

可问题是,对于复杂的判断处理,这样的做法就相当困难了。
而 <%# if ... else ... %> 这样的用法又为什么也不行呢?因为 <%# %> 相当于 <%= %>,而 <%= %> 就是 Response.Write(),那么前面的判断就显得可笑:
         Response.Write( if ... else ... );
如果非要在 Repeater 中使用 if 语句来判断其中的数据,那么可以采用下面的方法:

<% int _nIndex=0; %> <!--定义一个临时的整型变量-->
<asp:Repeater ID="_TopicRepeater" Runat="SERVER" DataSource="...">
<ItemTemplate>
    <%# DataBinder.Eval(Container.DataItem, "Title")   %>
    <%# DataBinder.Eval(Container.DataItem, "Author")  %>
    <%# DataBinder.Eval(Container.DataItem, "Clicked") %>
    <%# DataBinder.Eval(Container.DataItem, "ReCount") %>
<%
int nReCount=(int)(((DataView)_TopicRepeater.DataSource).Table.Rows[_nIndex++]["ReCount"]);
// 也可以分成几句来写
// DataView DV=(DataView)_TopicRepeater.DataSource;
// DV.Table.Rows[_nIndex++]["ReCount"];
if(nReCount==0) { %>
     ----
<% } else { %>
    <%# DataBinder.Eval(Container.DataItem, "LastReplyer") %>
<% } %>
</ItemTemplate>
</asp:Repeater>

其基本思路是,得到 _TopicRepeater 的数据源(DataSource)
(注明:我在绑定 Repeater 的数据源时,使用的是 DataSet.Tables["..."].DefaultView。如果使用的是其他的数据源,那么在给 Repeater.DataSource 强制转型时,要稍加注意)
并返回该表(Table)的当前行(Rows[_nIndex++])最后判断 ReCount 列是否为 0?在最初的时候 _nIndex 被赋值为 0,然后,在每一次的 ItemTemplate 里都自加一次。其目的,也就是让 _nIndex 记录当前正在访问的记录“行”。
对于DataGrid和DataList,这个方法也是可行的。

最后,这个方法在进行复杂判断绑定数据时确实有效,但是我并不推荐这样的做法!因为这样的做法并不符合面向对象的封装特性,或者说,它是以破坏了封装特性的做法使之透明,来完成判断功能的。 我推荐的做法是,使用“自定义用户控件”来完成复杂的判定绑定任务。
完,希望能对您有所帮助...

Afritxia2003@Yahoo.com.cn, Afritxia@Hotmail.com

 

Repeater控件的分页实现 本文讲解Repeater控件与PagedDataSource相结合实现其分页功能。PagedDataSource 类封装那些允许数据源控件(如 DataGrid、GridView)执行分页操作的属性。如果控件开发人员需对自定义数据绑定控件提供分页支持,即可使用此类。 PagedDataSource 类的部分公共属性: AllowCustomPaging // 获取或设置指示是否启用自定义分页的 阅读详情

相关推荐

repeater用法

repeater用法,保证你可以用到repeater用法,保证你可以用到repeater用法,保证你可以用到

在Repeater控件中使用if语句判断前4条数据 和后面数据样式 不同 并且对4求余的样式又是一种 老是出错

<br /> <asp:Repeater ID="rptProductList" runat="server"><br />                <ItemTemplate><br />                    <!--控制循环的样式--><br />                    <%#if(Container.ItemIndex+1>=4){ %><br />                    <dd class="<%# (Container.ItemIndex+1

shenyong985873401的专栏 516

asp.net Repeater中使用if的代码

代码如下:<%# String.IsNullOrEmpty(Eval(“enddate_duty_”).ToString())?”<tr xss=removed>”:”<tr>”%>asp.net日期绑定的转换 代码如下:<%#Eval(“date_”,”{0:d}”)%>

在Repeater控件中使用if语句(转载自Afritxia的Blog)

我最近正在写一个 BBS 的项目,在显示主题列表时,我遇到了一个问题。 BBS_Topic 的数据表结构定义大致是下面这样: TABLE BBS_Topic(    TopicID      INT NOT NULL IDENTITY(1, 1) PRIMARY KEY,    Title        NVARCHAR(40),    Author       NVARCHAR(

croppy的专栏 862

【STM32项目】老人健康跌倒检测系统实现(附教程PCB资料)

功能概述 跌倒检测 倾倒告警,人体角度倾斜至阈值触发蜂鸣报警 异常运动,加速度超过正常行动阈值时触发报警 心率监测 实时检测心率数据 血氧监测 实时检测采集血氧 血压测量 血压在线测量 红外体温 非接触体温采集方案 接触式体温采集方案 实时定位 中科微GPSGT-U12双频GPS北斗 GLONASS IRNSS定位系统 NEMA数据解析 可扩展高精度定位方案厘米级 屏幕显示 数据采集显示 告警阈值设置 语音提示 1欢迎使用老人智慧监测系统

洋洋的博客 1万+

HALCON 20.11实战:5步搞定工业图像异常检测(附完整代码)

本文提供了一份基于HALCON 20.11的工业图像异常检测实战指南。通过五个核心步骤——环境准备、数据预处理、模型训练、推理解析与工程化部署,详细演示了如何利用深度学习技术,仅使用正常样本快速构建并优化金属表面划痕等缺陷的检测模型,并附有完整可运行的HDevelop代码,助力工程师实现高效、智能的工业视觉质检。

weixin_29243279的博客 140

repeater控件介绍、 repeater嵌套的代码实现

Repeater 控件的几个模板项介绍 AlternatingItemTemplate 对交替数据项进行格式设置,与 ItemTemplate 元素类似,但在 Repeater 控件中隔行(交替项)呈现一次。通过设置 AlternatingItemTemplate 元素的样式属性,可以为其指定不同的外观。 FooterTemplate 该模板确定了控件页脚的呈现样式,在所有数据

学习也休闲 1510

python知网爬虫论文pdf下载+立即可用(动态爬虫)

python实现动态爬虫知网论文,搜索+自动翻页+下载 收集数据利器

Braylon的博客 5379

Repeater控件嵌套效果的实现

最近在做动态网页,希望在网上寻找关于Repeater控件嵌套使用的文章,但绝大多数的文章经过测试都是有问题的,对于刚接触.net控件使用的我来说是一个很大的难题。以下一篇文章经过测试,达到了我预期想要的效果,也就是从数据库中读取数据,分别读取大类别和小类别的信息,小类别的信息嵌套显示在大类别中。文章内容很详细和完整,看得出是个权威之作。有人将它翻译成中文,但是存在一些错误,所以还是收藏了这篇E文版

Dennis的专栏 1312

南方cass9.1【Frame主框架程序没有加载】解决方法(附安装包)

南方cass9.1【Frame主框架程序没有加载】解决方法。

weixin_46066938的博客 3万+

基于多智能体的自动化公司调研系统

在当今竞争激烈的商业世界中,了解公司的详细信息对于投资者、合作伙伴和研究机构等具有重要意义。传统的公司调研方式往往需要耗费大量的人力、物力和时间,且容易出现信息不全面、不准确等问题。基于多智能体的自动化公司调研系统的目的是利用多智能体技术,实现公司调研的自动化和智能化,提高调研的效率和准确性。本系统的范围涵盖了公司基本信息收集、市场竞争力分析、财务状况评估等多个方面。本文将按照以下结构进行组织:首先介绍系统的核心概念和相关联系,包括多智能体系统的原理和架构;

架构师的AI之路,分享AI应用开发架构的学习与实践。 966

如何在Repeater控件中实现RaidoButton单选

在Asp.Net的Repeater控件中,由于内部控件是动态生成的,那么为了保持各控件的独立不相互混淆,Repeater会自动为内部的各种服务器端控件生成唯一的ID。然而很不幸,RaidoButton的Name属性也不能幸免,而我们知道RaidoButton是通过Name属性进行归组的,也就是说在Repeater控件中的RadioButton失去了最原始的作用——单选。 那么如果我们要实现这个单

crcr1127的专栏 1376

69页完整版智慧港口综合解决方案

智慧港口需求4港机远程操控等自动化改造需求自动化码头AGV无线通信及专用视频系统需求安全生产视频监控类需求港机RCMS及设备管理需求岸边智能理货码头三维全景应用智慧港口解决方案5自动化码头AGV/跨运车/无人集卡无线接入港机远控视觉及冗余无线通信视觉集卡防吊起系统集装箱码头岸边智能理货港机RCMS系统无线接入港机智能化管理(无线高清视频监控、一键报警、远程抄表系统)港口拖轮无线接入岸边溢油监测系统TD-LTE覆盖及业务终端接入港口生产管理系统港口可视化集群调度港口GiNMS综合网络设备智能管理全球作业效率最

zuoan1993的博客 2130

Repeater控件中使用if语句的完美解决方案

Repeater控件中使用if语句的完美解决方案 原文: http://hi.baidu.com/robert080610/blog/item/c547a8029ba688e008fa93aa.html 想用嵌套repeater制作,这一点没问题,可是在设置repeater模板时出了问题,判断数据库中的一条记录strIMG字段的值是否为空,若为空则显示文字链接,不为空则显示图片链接,代码如

1118

基于matlab的CNN食物识别分类系统,matlab深度学习分类,训练+数据集+界面

饮食在人们的日常生活、营养与医疗建议以及运动员等专业人士的训练上起着越来越重要的作用。随着互联网的发展和医学的进步,人们普遍上传分享和记录的食物图像形成了非常多的数据库,为了改善饮食结构,塑造更健康的生活方式,分析食物的种类、热量和进食时间成为了营养学上非常重要的研究方法,本文的使用深度学习算法可以根据用户上传的食物图像自动分析食物种类。深度学习是机器学习领域的一个研究方向。深度学习通过对数据特征的学习将原始数据转化为计算机可以理解的抽象数据,根据学习到的特征,可以对原始数据进行检测或分类。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 4724

国科大学习资料--机器学习方法与应用(叶齐祥)-期末考试题整理

国科大学习资料–机器学习方法与应用-期末考试题整理 ============================================================================================================================================================================================ =======================================

无名何许人的博客 2852

repeater控件实现分页

<br />repeater控件实现排序的方法,今天我再向大家介绍repeater控件如何实现分页的效果。 <br />分页分为真分页和假分页。<br /> 真分页:控件上一页需要显示多少数据,就从数据库取出并绑定多少数据,每次换页时都需要访问数据库。<br /> 假分页:从数据库一次性取出所有数据绑定到控件上,再将所有数据根据一页显示多少条而分页。<br /> 从以上二者的概念上我们可以看出,区别在于分页时从数据库读取信息的方式,真分页的效率无疑是最高的。假分页在首次页面加载的时候会比较慢(如果数

dfdj1010的专栏 7368

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Repeater控件实现编辑、更新、删除操作

如何在Repeater控件中实现像GridView控件一样的编辑、更新、删除功能?   protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { BindGrid(); } } private void BindGrid() { string strSQL = "SELECT

刘凤飞 2178

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

asp.net中Repeater控件里Radiobutton如何实现单选

HTML code<br /><table><br /><asp:Repeater ID="Repeater1" runat="server"><br /><ItemTemplate><br /><tr><br /><td><%#Eval("Areaname") %></td><br /><td><asp:RadioButton ID="rdb1" runat="server" AutoPostBack="true" oncheckedchanged="RadioButton_CheckedChanged"

sjj2011的专栏 4983

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

在Repeater控件中使用if语句(转自AfritXia)

我最近正在写一个 BBS 的项目,在显示主题列表时,我遇到了一个问题。 BBS_Topic 的数据表结构定义大致是下面这样: TABLE BBS_Topic(    TopicID      INT NOT NULL IDENTITY(1, 1) PRIMARY KEY,    Title        NVARCHAR(40),    Author       NVARCHA

soarheaven的专栏 1174
上一篇: javascript 调用后台方法
下一篇: SQLite简单教程
ArvinStudy
博客等级 码龄15年 83粉丝 193原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值