/*by Jiangong SUN*/
I have encountered the problem when i want to use IF condition for Eval in C# repeater a few days ago.
The actuality is I can not use IF clause for Eval in a repeater. A solution proposed on internet is using tertiary operator.
For example :
<%# Eval("Property") != TestValue ? DestinationValue1: DestinationValue2 %>
This solution can't handle the problem when it becomes a little complex. And that is my situation.
Originally I have the code which receives the parameters in repeater:
<asp:Repeater ID="RepeaterLinks" runat="server">
<ItemTemplate>
<li>
<a href="<%#Eval("Url") %>" Target="<%#Eval("OpenMode")%>">
<%#Eval("Label") %>
</a>
</li>
</ItemTemplate>
</asp:Repeater>
What I intented to do is this :
<asp:Repeater ID="RepeaterLinks" runat="server">
<ItemTemplate>
<li>
<% if(Eval("OpenMode") == "PopUp") { %>
<a οnclick="openLinks(
'<%#(((RepeaterItem)Container).ItemIndex+1).ToString() %>',
'<%#Eval("Url") %>',
'<%#Eval("OpenMode") %>',
<%#Eval("Height") %>,
<%#Eval("Width") %>,
<%#Eval("XPosition")%>,
<%#Eval("YPosition")%>,
<%#Eval("MenuBarVisible")%>,
<%#Eval("ScrollBarVisible")%>,
<%#Eval("StatusBarVisible")%>,
<%#Eval("IsResizable")%>)" >
<%#Eval("Label") %>
</a>
<% } else { %>
<a href="<%#Eval("Url") %>" Target="<%#Eval("OpenMode")%>">
<%#Eval("Label") %>
</a>
<% } %>
</li>
</ItemTemplate>
</asp:Repeater>
As it doesn't work, I have to do it alternatively in javascript.
And now what i use is:
C#:
<asp:Repeater ID="RepeaterLinks" runat="server">
<ItemTemplate>
<li>
<a οnclick="openLinks(
'<%#(((RepeaterItem)Container).ItemIndex+1).ToString() %>',
'<%#Eval("Url") %>',
'<%#Eval("OpenMode") %>',
<%#Eval("Height") %>,
<%#Eval("Width") %>,
<%#Eval("XPosition")%>,
<%#Eval("YPosition")%>,
<%#Eval("MenuBarVisible")%>,
<%#Eval("ScrollBarVisible")%>,
<%#Eval("StatusBarVisible")%>,
<%#Eval("IsResizable")%>)" >
<%#Eval("Label") %>
</a>
</li>
</ItemTemplate>
</asp:Repeater>
JS:
function openLinks(nbr, url, openMode, xhight, xwidth, xposition, yposition, xmenubarVisible, xscrollbarVisible, xstatusbarVisible, xresizable) {
if (xhight == 0) {
if (openMode == "Blank") {
window.open(url, "link");
} else {
$(this).attr('target', '_' + openMode);
document.location.target = $(this).attr('target');
document.location = url;
}
} else {
window.open(url, 'link', 'height=' + xhight + ', width=' + xwidth + ', left=' + xposition + ', top=' + yposition + ', scrollbars=' + xscrollbarVisible + ', status=' + xstatusbarVisible + '');
}
}
And now it works perfectly.
Enjoy coding !!!