您的位置:首页 > 编程语言 > ASP

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.在后台页面写逻辑代码,返回字符串

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐