如果列表视图为空,则显示按钮

时间:2013-04-05 18:02:26

标签: c# asp.net sql

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

protected void btnExistingRetrive_Click(object sender, EventArgs e)
{

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

}

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

3 个答案:

答案 0 :(得分: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>

答案 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;
    }
}