Asp:当visible设置为true时,不显示标签?

时间:2009-02-10 20:26:54

标签: c# asp.net

我有一个简单的网页表单,里面有几个列表框和一个搜索按钮。单击该按钮时,它将返回一个DataSet。如果数据集包含记录,我将最初设置为false的asp:标签设置为true,但这不会发生。如果数据集包含记录且visible属性设置为true,则标签仍然不会显示。

我还尝试将标签和其他一些控件放在html表中,并在表上设置runat =“server”属性并更改其可见性,但它也没有显示。

这是aspx代码:

<table>
    <tr>
        <td>
        <asp:Label ID="lblSortBy" runat="server" Text="Sort By:" Visible="false">   
        </asp:Label>
        <asp:DropDownList
                        ID="ddlSortBy" 
                        runat="server" 
                        AutoPostBack="True" 
                        OnSelectedIndexChanged="ddlSortBy_SelectedIndexChanged">
        <asp:ListItem Value="Gross">Gross</asp:ListItem>
        <asp:ListItem Value="Population">Population</asp:ListItem>
        </asp:DropDownList>
        </td>
    </tr>
</table>

以下是单击按钮时的简化代码:

public void GetData()
{
    DataView dv = GetReportData().DefaultView;

    if(dv.ToTable().Rows.Count > 0)
     {
        lblSortBy.Visible = true;
     }
     else
     {
        lblSortBy.Visible = false;
     }
  }

我在一些ListBoxes和GridView周围有一些更新面板,但没有Label和Dropdown。这会引起问题吗?

我做了一个测试,如果找到记录并且标签消失,我将更新面板中的标签设置为false,因此如果它在更新面板中,它就会起作用。

6 个答案:

答案 0 :(得分:5)

如果我没有弄错,你的标签应该存在于更新面板上,因为就静态HTML页面而言,当前标签存在的唯一时间,它被设置为不可见。您必须重新加载整个页面才能再次显示它。

答案 1 :(得分:4)

如果按钮位于UpdatePanel内,则表,标签等也必须位于UpdatePanel内才能更新。否则,只有单击按钮时才会更新UpdatePanel的内容(这就是所谓的partial page-rendering)。

因此,如果按钮位于UpdatePanel中,则有两种方法可以解决问题:

  1. 将表格,Label,DropDownList等放入同一个UpdatePanel
  2. 或将它们放在另一个UpdatePanel中,并将该属性的UpdateMode设置为Always,以便更新,即使其他UpdatePanel中的控件启动了回发。
  3. 有关详细信息,请参阅this page in MSDN

答案 2 :(得分:0)

  • 你只需要标签上的runat =“server”;虽然Visible应该默认为True。
  • 确保添加ForeColor以避免在背景中混合。
  • 调试以确保您的标签包含内容,并且它不在另一个Visible = False的控件中。

答案 3 :(得分:0)

我假设如果没有数据,你也会隐藏ddl。您是否尝试在其中放置一个面板并将其可见性设置为真

如果您要返回行并且您的按钮位于更新面板中,则该更新面板中的标签和ddl也是

答案 4 :(得分:0)

如果表格正在变化并且是标签的父容器,我认为根本不需要更改标签的可见性,因为它应始终设置为可见。

答案 5 :(得分:-2)

感谢它非常有用,将Label放在更新面板中。

        <ContentTemplate>
       <table>
           <tr>
                <td>
                     <asp:LinkButton ID="LinkNM" runat="server" Text="Learn>" BackColor="Transparent" style=" color: #6699FF;text-decoration-color:none;border:none;font-size:x-large" OnClick="LinkNM_Click"/>
                    &nbsp;&nbsp;&nbsp;
                                  <asp:Label ID="lblChapterName"  runat="server" BackColor="Transparent" style=" color: #6699FF;text-decoration-color:none;border:none;font-size:x-large" ></asp:Label>

                                </td>
           </tr>
       </table>
             </ContentTemplate>
        <Triggers>
            <asp:PostBackTrigger ControlID="btnFileUpload" />
        </Triggers>

    </asp:UpdatePanel>