我有一个列表视图,用于从sql数据源中检索数据。我正在尝试制作两个按钮(是和否),并且仅当列表视图不为空时,列表视图外的标签才可见。过程是:一个人将信息输入文本框并单击按钮检索,如果输入的数据存在于数据库中,则列表视图显示某些信息。 我有以下代码:
protected void btnExistingRetrive_Click(object sender, EventArgs e)
{
if (lstExisting.Items.Count>0 )
{
lblIsITYou.Visible = true;
btnYes.Visible = true;
btnNo.Visible = true;
}
}
默认情况下,按钮和标签不可见。 问题是,当我点击检索按钮时,它会显示包含信息的列表视图,但按钮标签仍然不可见。只有当我双击检索按钮时,它们才会变得可见。请告诉我,我的错误是什么? 谢谢
答案 0 :(得分:4)
<asp:ListView ID="ContactsListView"
DataSourceID="ContactsDataSource"
runat="server">
<LayoutTemplate>
<table runat="server" id="tblProducts">
<tr runat="server" id="itemPlaceholder" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr runat="server">
<td>
<asp:Label ID="FirstNameLabel" runat="Server" Text='<%#Eval("FirstName") %>' />
</td>
<td>
<asp:Label ID="LastNameLabel" runat="Server" Text='<%#Eval("LastName") %>' />
</td>
</tr>
</ItemTemplate>
<EmptyDataTemplate>
<table class="emptyTable" cellpadding="5" cellspacing="5">
<tr>
<td>
<asp:Image ID="NoDataImage"
ImageUrl="~/Images/NoDataImage.jpg"
runat="server"/>
</td>
<td>
No records available.
</td>
</tr>
</table>
</EmptyDataTemplate>
</asp:ListView>
答案 1 :(得分:1)
在检查项目计数之前绑定listview吗?
答案 2 :(得分:1)
在回发时而不是在事件中执行此操作。 在你的Page_Load做这样的事情:
protected void Page_Load(object sender, EventArgs e)
{
bool visible = (lstExisting.Items.Count > 0); // assuming it's never null
lblIsITYou.Visible = visible;
btnYes.Visible = visible;
btnNo.Visible = visible;
}
如果上述情况产生了并发症,那就像我先回复说的那样:
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
bool visible = (lstExisting.Items.Count > 0); // assuming it's never null
lblIsITYou.Visible = visible;
btnYes.Visible = visible;
btnNo.Visible = visible;
}
}