如何在 gridview 中读取已删除的列

How to readd removed columns in gridview

我只是有一个问题,我应该如何在 gridview 中再次添加已删除的列。我有一个应用程序,例如,当您选择 1 时,其他列被隐藏,当您选择 2 时,隐藏的列应该出现,我尝试让它可见 true 和 false 但是当我将其数据导出到 excel 时出现另一个问题所有其他隐藏的列也都保存在 excel 中,因为这些列只是隐藏的,所以我开始搜索如何再次添加已删除的列,希望你能帮助我解决这个问题。这就是我删除列的方式。

Public Sub RemoveGridColumn(ByRef Data As GridView, ByVal colName As String)
    For x As Integer = 0 To Data.Columns.Count - 1
        If Data.Columns(x).HeaderText = colName Then
            Data.Columns.RemoveAt(x)
            Exit For
        End If
    Next
End Sub

在隐藏不想导出到 Excel 的列之前,您需要调用 GridView 控件的 DataBind 方法,大致如下:

Protected Sub btnExportExcel_Click(ByVal sender As Object, ByVal e As EventArgs)
    '' Set response settings here (header, content type, etc.)

    '' Turn paging off so you get all the rows of the grid
    GridView1.AllowPaging = False

    '' Make sure to bind before you hide anything
    GridView1.DataBind()

    '' Put logic here to hide columns that need to be hidden
    '' Possible from Session/ViewState, etc.


    '' Render out to response

End Sub

完整的代码示例(在 VB.NET 和 C# 中),然后查看 ASP.NET GridView Export to Excel - Hide Columns

请考虑使用 CSS 设置印刷品的可见性:

@media print {
.noPrint {
    display:none;
  }
}

数据绑定事件期间的代码部分应该类似于:

Data.Columns(x).ItemStyle.CssClass = "noPrint"

通过这种方式,您可以使用 javascript 来更改打印可见性:

function hideColumn()
{
    col_num = document.getElementById("ColumnToChange").value;
    rows = document.getElementById("GridViewId").rows;
    for(i=0;i<maxrow;i++) {
       rows[i].cells[col_num].style.display="none";
    }
}