服務熱線
153 8323 9821
很多次,我在使用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>