在ASP中隐藏和显示内容.基于价值的净额



我正在寻找一个从ASP中删除内容的优雅解决方案。如果未设置数据,则显示网页。让我再解释一下。

我在一个页面上有一些数据块,其中包含一些带有单独值的小节。如果没有为其中一个值设置数据,我需要隐藏它(这样它就不会占用空间)。此外,如果子节中没有设置任何值,则也需要将其隐藏。最后,如果块/面板中没有可见的子部分,那么我需要隐藏整个部分。

使用嵌套面板/DIVs 实现布局

<Panel id="block">
    <Panel id="sub1">
        <Panel id="value1-1">blah</Panel>
        <Panel id="value1-2">blah</Panel>
    </Panel>
    <Panel id="sub2">
        <Panel id="value2-1">blah</Panel>
        <Panel id="value2-2">blah</Panel>
    </Panel>
</panel>

我想知道是否有人能在不写一堆嵌套的if的情况下实现这样的东西。。Else语句,而不创建一堆自定义控件。无论我实现什么,都需要足够健壮,以处理标记中的更改,而无需不断地操纵代码绑定。

我希望有一种方法可以通过一些简单的标记更改(自定义属性)和对PageLoad或PreRender的递归函数调用来实现这一点。

非常感谢您的帮助。

编辑:

好的,所以让这件事变得棘手的是,在子部分中可能有其他控件没有考虑到控件的隐藏和显示。每个面板中可能都有控件,这些控件不考虑是否显示。示例:

<Panel id="sub2">
    <Image id="someImage" src="img.png" />
    <Panel id="value2-1">
        <Label>blah</Label>
        <TextBox id="txtValue" />
    </Panel>
    <Panel id="value2-2">blah</Panel>
</Panel>

这是一个过于简化的例子,但离我所担心的不远了。

如果您可以编写函数为每个组返回true/false,则可以避免递归遍历,例如

<Panel id="block" runat="server" visible="<%=IsBlockVisible%>">
    <Panel id="sub1" runat="server" visible="<%=IsSubVisible(1)%>">
        <Panel id="value1-1">blah</Panel>
        <Panel id="value1-2">blah</Panel>
    </Panel>
    <Panel id="sub2" runat="server" visible="<%=IsSubVisible(2)%>">
        <Panel id="value2-1">blah</Panel>
        <Panel id="value2-2">blah</Panel>
    </Panel>
</panel>

使用递归。按节点第一顺序遍历控制树。根据控制值酌情使用节点的可见属性。如果父级设置为不可见,则不要访问子级

我认为您使用递归是正确的。但我会远离自定义属性——坚持标准。您真正需要的只是通过递归方法在每个面板上设置Visible属性。

如果您有一个严格的层次结构块/子/值,并且数据来自数据库,我建议使用嵌套的中继器和返回3个结果集的存储过程

我认为我们需要更多地了解您试图实现的目标,以便从一开始就确定这是否是正确的方法。

相关内容

  • 没有找到相关文章

最新更新