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

Xai*_*oft 4 c# asp.net

我有一个简单的Web表单,其中包含几个列表框和一个搜索按钮.单击该按钮时,它将返回一个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>
Run Code Online (Sandbox Code Playgroud)

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

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

    if(dv.ToTable().Rows.Count > 0)
     {
        lblSortBy.Visible = true;
     }
     else
     {
        lblSortBy.Visible = false;
     }
  }
Run Code Online (Sandbox Code Playgroud)

我在一些ListBoxes和GridView周围有几个更新面板,但没有标签和下拉列表.这会引起问题吗?

我做了一个测试,如果找到记录并且标签消失,我将更新面板中的标签设置为false,因此如果它在更新面板中,它就可以正常工作.

Gre*_*egD 5

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


M4N*_*M4N 5

如果按钮位于 UpdatePanel 内,则表、标签等也必须位于 UpdatePanel 内才能更新。否则,只有在单击按钮时 UpdatePanel 的内容才会更新(这就是所谓的部分页面渲染)。

因此,如果按钮在 UpdatePanel 中,您有两种可能来解决问题:

  1. 将表、标签、DropDownList 等放入同一个 UpdatePanel
  2. 或者将它们放在另一个 UpdatePanel 中并将该属性的 UpdateMode 设置为 Always,以便它得到更新,即使回发是由另一个 UpdatePanel 中的控件启动的。

有关详细信息,请参阅MSDN 中的此页面