ASP.NET中使用Eval()函数绑定数据时,不能使用IF进行逻辑判断的解决方案
2012-01-11 09:12
971 查看
转自:/article/5281051.html
很多次,我在使用ASP.NET数据绑定控件中绑定数据时 使用if语句进行逻辑判断!但是肯定那是失败了!没有办法,既然遇到了这个棘手问题,先Google,baidu一下吧! 其他人也有此想法,虽然方案不是很好,但我还是记录下来吧!以便以后查看。
先来说一说:<%# Eval(“Field”)%> 吧!
我们在控件中直接用<%# Eval(“Field”)%>,那他应该相当于:<%="str”%>和<% respose.write(“str”)%> 吧!因为在控件中绑定后他值就直接显示了!相当于输出咯!
我曾经多少次想这样写:<%# if(Eval(“Field”)=="str”){...}else{...}%> 可惜这样他不行啊!
1.如果简单的话可以使用三元运算符,<%# Eval(“Field”)=="str”?"somecode":"somecode"%>
但是如何if判断后处理很复杂呢?显然三元运算符不是很好!那样页面代码很多,我们毕竟不是在做ASP,也不好看,美工也不好写样式!
2.在后台页面写逻辑代码,返回字符串
前台调用:
<% 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>
来自CSDN博客,转载请标明出处:http://blog.csdn.net/afritxia/archive/2004/10/22/146936.aspx
很多次,我在使用ASP.NET数据绑定控件中绑定数据时 使用if语句进行逻辑判断!但是肯定那是失败了!没有办法,既然遇到了这个棘手问题,先Google,baidu一下吧! 其他人也有此想法,虽然方案不是很好,但我还是记录下来吧!以便以后查看。
先来说一说:<%# Eval(“Field”)%> 吧!
我们在控件中直接用<%# Eval(“Field”)%>,那他应该相当于:<%="str”%>和<% respose.write(“str”)%> 吧!因为在控件中绑定后他值就直接显示了!相当于输出咯!
我曾经多少次想这样写:<%# if(Eval(“Field”)=="str”){...}else{...}%> 可惜这样他不行啊!
1.如果简单的话可以使用三元运算符,<%# Eval(“Field”)=="str”?"somecode":"somecode"%>
但是如何if判断后处理很复杂呢?显然三元运算符不是很好!那样页面代码很多,我们毕竟不是在做ASP,也不好看,美工也不好写样式!
2.在后台页面写逻辑代码,返回字符串
public void Handler(string str) { if (str.Length > 5000) { Response.Write("<div title='" + str + "'>" + str.Substring(0, 1000) + "</div>"); } else { Response.Write(str); } } // or public string Handler(string str) { if (str.Length > 5000) { return "<div title='" + str + "'>" + str.Substring(0, 1000) + "</div>"; } else { return str; } }
前台调用:
<%# Handler(Eval("Field").ToString()) %>
注意Eval还可以绑定对象.属性 如:<%# Handler(Eval("User.Name").ToString()) %>
3.摘自网络
<% 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>
来自CSDN博客,转载请标明出处:http://blog.csdn.net/afritxia/archive/2004/10/22/146936.aspx
相关文章推荐
- ASP.NET中使用Eval()函数绑定数据时,不能使用IF进行逻辑判断的解决方案
- ASP.NET中使用Eval()函数绑定数据时,不能使用IF进行逻辑判断的解决方案
- Eval()函数绑定数据时,不能使用IF进行逻辑判断的解决
- asp.net 数据绑定 使用eval 时候报 字符文本中的字符太多 问题的解决方法
- ASP.NET Eval如何进行数据绑定
- [原创]ASP.NET对数据进行HTML编码将其绑定到DrowdownList并解码的解决方案
- asp.net下的“Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用。”错误的一个可能的成因
- 【翻译】使用Knockout, Web API 和 ASP.Net Web Forms 进行简单数据绑定
- asp.net 数据绑定 使用eval 时候报 字符文本中的字符太多 问题的解决方法
- asp.net中自定义控件ascx增加自定义属性以及给该属性使用绑定数据的解决方案
- ASP.NET Eval如何进行数据绑定
- ASP.NET对数据进行HTML编码将其绑定到DrowdownList并解码的解决方案
- ASP.NET Eval进行数据绑定的方法
- ASP.NET 中如何在使用Eval()绑定数据时使用三元运算符
- ASP.NET - 使用 Eval() 绑定数据时使用 三元运算符
- ASP.NET 前端使用Eval()绑定数据时使用三元运算符
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
- C# ASP.NET ADO.NET 数据绑定IF判断
- ASP.NET Eval进行数据绑定的方法