日期:2014-05-17  浏览次数:20454 次

repeater 嵌套问题
问题思路:如何根据repeater2中是否有数据进行判断repeater1中h3是否以链接方式展示
C# code
<div class="pro_list">
    <ul id="help_list">
        <asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
                <li>
                    <h3 class="ta2 <%# flag(Eval("selfcode").ToString(),2)%>">
                        <a href='productslist.aspx?id=<%# Eval("selfcode") %>' title='<%# Eval("thename") %>'>
                        <%# areahelper.substr(Eval("thename").ToString(),30) %></a></h3>
                    <ul style="display:none">
                        <asp:Repeater ID="repeater2" runat="server" DataSource='<%# twotype(Eval("selfcode").ToString())%>'>
                            <ItemTemplate>
                                <li><a href='productslist.aspx?id=<%# Eval("selfcode") %>' title='<%# Eval("thename") %>'>
                        <%# areahelper.substr(Eval("thename").ToString(),30) %></a></li>
                        <div style="clear:both;"></div>
                            </ItemTemplate>
                        </asp:Repeater>
                    </ul>
                </li>
                <div style="clear:both;"></div>
            </ItemTemplate>
        </asp:Repeater>
    </ul>
</div>


------解决方案--------------------
这样写?建议在数据查询的时候把状态给repeater1的数据源,然后用三元 来判断
------解决方案--------------------
twotype(Eval("selfcode").ToString()) 你的这个结果应该是DataTable吧


就是更具返回回来的行数 绑定你的连接是输出还是不输出
<%# twotype(Eval("selfcode").ToString()).Rows.Count==0 ? areahelper.substr(Eval("thename").ToString(),30) : “ <a href='productslist.aspx?id="+ Eval("selfcode") +"' title='"+ Eval("thename") +"'>"+ areahelper.substr(Eval("thename").ToString(),30) +"</a> ” %>
用这句话直接盖掉你的超链接应该就可以了


------解决方案--------------------
我觉得应该这样。

在查询repeater1的数据时,就顺便把“有没有子表数据”当作一个自定义字段查出来,例如Flag字段,0表示无,1表示有。

然后,绑定repeater1的数据时,就可以直接根据flag的值来决定h3是否要链接。

这样做,就很easy啦。