仅在标签可见时才在标签后添加。 C#

时间:2010-11-01 15:06:27

标签: c# asp.net

我有一大堆代码在页面加载时填充以下部分或全部标签。它应该每行有两个标签(每个xData标签后需要一个换行符)。我遇到的问题是,由于带有数据且设置为在页面加载时可见的标签数量发生变化,br /标签会导致间距问题,而不是所有标签都可见。

<div id="Status">
    <asp:Label ID="1" runat="server" Text="1:" Width="125px" Visible="false" />
    <asp:Label ID="1Data" runat="server" Text="" Visible="false" />
    <asp:Label ID="2" runat="server" Text="2:" Width="125px" Visible="false" />
    <asp:Label ID="2Data" runat="server" Text="" Visible="false" />
    <asp:Label ID="3" runat="server" Text="3:" Width="125px" Visible="false" />
    <asp:Label ID="3Data" runat="server" Text="" Visible="false" />
</div>

我希望能够在标签填充并设置为可见时在后面的代码中的每个“xData”标签后添加换行符。

我尝试将"\n"添加到标签文字和\或Environment.NewLine但没有运气。

感谢您的帮助

6 个答案:

答案 0 :(得分:2)

简单的方法......

<div id="Status">
    <div id="Status1" runat="server" Visible="false">
        <asp:Label ID="1" runat="server" Text="1:" Width="125px" />
        <asp:Label ID="1Data" runat="server" Text="" />
    </div>
    <div id="Status2" runat="server" Visible="false">
        <asp:Label ID="2" runat="server" Text="2:" Width="125px" />
        <asp:Label ID="2Data" runat="server" Text="" />
    </div>
    <div id="Status3" runat="server" Visible="false">
        <asp:Label ID="3" runat="server" Text="2:" Width="125px" />
        <asp:Label ID="3Data" runat="server" Text="" />
    </div>
</div>

正确的方式......

<div id="Status">
    <asp:Label CssClass="statusLabel" ID="1" runat="server" Text="1:" Width="125px" Visible="false" />
    <asp:Label ID="1Data" runat="server" Text="" Visible="false" />
    <asp:Label CssClass="statusLabel" ID="2" runat="server" Text="2:" Width="125px" Visible="false" />
    <asp:Label ID="2Data" runat="server" Text="" Visible="false" />
    <asp:Label CssClass="statusLabel" ID="3" runat="server" Text="3:" Width="125px" Visible="false" />
    <asp:Label ID="3Data" runat="server" Text="" Visible="false" />
</div>

/* CSS */
#Status span {
  display: block;
}
#Status .statusLabel {
  clear: both;
  float: left;
}

答案 1 :(得分:1)

我认为你可以通过几种不同的方式做到这一点。

一个选项是@Greg在他对你的帖子的评论中指出的。

另一种可能的选择是将每个标签用<div>标记在自己的runat="server"标记中,然后在需要时使这些<div>可见。由于<div>

的性质,<div>应该创建自己的换行符

答案 2 :(得分:1)

asp:Label解析为html中的span。如果您希望每个人都有自己的行,请添加css样式“display:block”。通常,您可以通过设置CssClass并在该类中放置display:block

来完成此操作

答案 3 :(得分:1)

如果你想这样,你需要对每个BR标签使用Literal控件,这样你就可以根据相应Label控件的可见性将它设置为可见/不可见。

答案 4 :(得分:1)

为什么不直接向这些标签添加带有display: block规则的CSS类?

毕竟这是表现性的。

答案 5 :(得分:0)

尝试将标签包裹在<div>周围,而不是在最后添加<br />。根据我的经验,空<div>不会创建那个空白区域。