【发布时间】:2010-10-06 18:00:37
【问题描述】:
我有一个简单的网络表单,其中有几个列表框和一个搜索按钮。单击该按钮时,它会返回一个 DataSet。如果数据集包含记录,我将最初设置为 false 的 asp:label 设置为 true,但这并没有发生。如果数据集有记录并且可见属性设置为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;
}
}
我在一些 ListBox 和一个 GridView 周围有几个更新面板,但没有标签和下拉菜单。这会导致问题吗?
我做了一个测试,如果找到记录并且标签消失,我将更新面板中的标签设置为 false,因此如果它在更新面板中,它就可以工作。
【问题讨论】:
-
为了可用性,您应该将 AssociatedControlId 设置为 ddlSortBy 以便将其呈现为实际的
-
-
GetData() 方法在何处/何时被调用?
-
按钮是否在更新面板中?如果不是,并且按下它会导致完整的回发,那么更新面板应该无关紧要。
-
您已经验证 GetReportData() 实际上是返回行?