Alternative solution for using IF condition with Eval in C# Repeater

30 篇文章 0 订阅
13 篇文章 0 订阅

/*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 !!!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值