我有一个简单的网页表单,里面有几个列表框和一个搜索按钮。单击该按钮时,它将返回一个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,因此如果它在更新面板中,它就会起作用。
答案 0 :(得分:5)
如果我没有弄错,你的标签应该存在于更新面板上,因为就静态HTML页面而言,当前标签存在的唯一时间,它被设置为不可见。您必须重新加载整个页面才能再次显示它。
答案 1 :(得分:4)
如果按钮位于UpdatePanel内,则表,标签等也必须位于UpdatePanel内才能更新。否则,只有单击按钮时才会更新UpdatePanel的内容(这就是所谓的partial page-rendering)。
因此,如果按钮位于UpdatePanel中,则有两种方法可以解决问题:
有关详细信息,请参阅this page in MSDN。
答案 2 :(得分:0)
答案 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"/>
<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>