C # Скрыть кнопку, когда GridView на веб-странице не отображается - PullRequest
1 голос
/ 16 ноября 2011

Я использую 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>

Ответы [ 5 ]

1 голос
/ 16 ноября 2011

Добавьте событие 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;
}
0 голосов
/ 16 ноября 2011

Сделайте так ..

  1. Создайте метод для привязки данных в виде сетки

    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

    if (! IsPostBack) {

    Export_Bind ();}

    Если вы найдете это полезным, отметьте его как свой ответ, иначе дайте мне знать ...

0 голосов
/ 16 ноября 2011

Вместо использования 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;
  }
}

^^ * * 1004

0 голосов
/ 16 ноября 2011

Можете ли вы поместить кнопку в пределах сетки в шаблоне нижнего колонтитула сетки

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

0 голосов
/ 16 ноября 2011

Поместите панель на страницу и программно добавьте к ней GridView и Button.Установите для свойства Visible панели значение true, если вы хотите показать его, и установите для него значение false, если вы этого не делаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...