当网页上的GridView不显示时隐藏按钮

本文关键字:显示 隐藏 按钮 GridView 网页 | 更新日期: 2023-09-27 18:14:39

我使用c# VS2005和SQL Server 2005。

我有一个GridView,从2个表中导入数据,我有一个"导出"按钮在GridView下面,允许导出GridView数据的结果。

然而,当GridView不显示时,我的导出按钮仍然显示。无论如何隐藏一个按钮条件,并显示它只有当GridView显示?下面是我的代码示例:

<%@ Page Language="C#" MasterPageFile="~/MainPage.master" AutoEventWireup="true" CodeFile="Comparison.aspx.cs" Inherits="UserDatabase" Title="User Comparison" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" Runat="Server">
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:<ConnectionString> %>" SelectCommand="<SQL>" OnSelecting="SqlDataSource1_Selecting">
    </asp:SqlDataSource>
<script language="javascript" type="text/javascript">
// <!CDATA[
// ]]>
</script>
    <asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1">
    </asp:GridView>
    <asp:Button ID="btnExpExcel" runat="server" Height="23px" OnClick="btnExpExcel_Click"
        Text="Export" Width="200px" />
</asp:Content>

当网页上的GridView不显示时隐藏按钮

在Gridview中添加一个DataBound事件。检查gridview中的行,并相应地设置可见性。

ASPX

<asp:GridView ID="GridView1" runat="server" 
     DataSourceID="SqlDataSource1" ondatabound="gv_DataBound" 
     >
</asp:GridView>

背后的代码
protected void gv_DataBound(object sender, EventArgs e)
{
     btnExpExcel.Visible = GridView1.Rows.Count > 0;
     //The Following is actually better , but less readable
     //We cast the sender to Gridview. The sender is the control
     //initiating the event
     //btnExpExcel.Visible = ((GridView)sender).Rows.Count > 0;
}

在页面上放置一个面板,并以编程方式添加GridView和Button。当你想显示面板时,将面板的Visible属性设置为true,当你不想显示面板时,将其设置为false。

不使用DataSourceID,您可以在后面的代码中使用DataSource和DataBind,这样您就可以检查数据源的数据来显示或隐藏导出按钮…像这样:

if(!Page.IsPostBack){
  GridView1.DataSource = your_DataSet_or_DataTable_or_Anything;
  GirdView1.DataBind();
  if(your_DataSet_or_DataTable_or_Anything == null){
    btnExpExcel.Visible = false;
  }
}

^ ^

能否将按钮放在gridview的页脚模板中

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.templatefield.footertemplate.aspx

这样做…

  1. 创建绑定gridview数据的方法

    private void Export_Bind()
        {
            DataSet oDs_Export = new DataSet();
            oDs_Export = oFCC.GetExport(); ---> this is method which i have define in the Class Lib.
            if (oDs_Export.Tables[0].Rows.Count > 0)
            {
                GridView1.DataSource = oDs_Export;
                GridView1.DataBind();
                lbGVCount.Text = oDs_Export.Tables[0].Rows.Count.ToString();
                btnExpExcel.Enabled = true;  
            }
                else
                {
                   btnExpExcel.Enabled = false;
                 }
        }
    
  2. 那么page_load

    中的这个方法如果(! IsPostBack

    ){

    Export_Bind ();}

    如果你觉得有用,请标记为你的答案,否则让我知道