0

我有一个从 sql 数据源检索数据的列表视图。我试图使两个按钮(是和否)和列表视图外部的标签仅在列表视图不为空时可见。过程是:一个人在文本框中输入信息并点击检索按钮,如果输入的数据存在于数据库中,则列表视图显示某些信息。我有以下代码:

protected void btnExistingRetrive_Click(object sender, EventArgs e)
{

     if (lstExisting.Items.Count>0 )
    {
       lblIsITYou.Visible = true;
       btnYes.Visible = true;
       btnNo.Visible = true;
    }

}

默认情况下,按钮和标签是不可见的。问题是当我单击检索按钮时,它会显示包含信息的列表视图,但标签仍然不可见。只有当我双击检索按钮时它们才可见。请告诉我我的错误是什么?谢谢

4

3 回答 3

4

使用ListView EmptyDataTemplate

  <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>
于 2013-04-05T18:04:11.827 回答
1

你在检查项目计数之前绑定列表视图吗?

于 2013-04-05T18:08:49.353 回答
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;
    }
}
于 2013-04-05T18:09:03.943 回答