我有一個需要具有以下表達式但不確定語法的列的轉發器。在asp.net上使用IF進行復雜綁定表達式
如果value = 「DispForm.aspx」 然後 顯示 「無文件」 否則 顯示了真正的價值。
我試圖用一切expresion在同一行,但不知道我在這裏缺少
<a href=" <%# DataBinder.Eval(Container.DataItem, "Path") %>">
<%#
if (DataBinder.Eval(Container.DataItem, "FileName") == "DispForm.aspx")
{
"No document";
}
else
{
DataBinder.Eval(Container.DataItem, "FileName");}%>
</a>
錯誤:
http://screencast.com/t/ZERZjzZxST
我不同意,項目數據綁定是針對每行觸發的,報表值2000行。 – 2014-09-26 07:49:51
當然它在每一行都被調用。您的DataBinder.Eval將在每行以及ItemTemplate中的任何標記上進行評估。您甚至可能會獲得提升性能的方式,因爲與內聯標記相比,在編譯時,代碼隱藏會稍微更優化。 – 2014-09-26 12:31:43
也許我在這裏丟失了一些東西,數據表在內存中,而databinder.eval只是基於已經在內存中的數據列計算表達式。但是,每一行都會觸發一次服務器端數據綁定事件,因此它必須到每一行的服務器端,我認爲databinder.eval已經在內存中具有數據表,並且應該更快。 – 2014-09-26 16:33:00