如何在网格视图中隐藏空列而不知道哪些列是空的?

Kat*_*ate 3 c# asp.net gridview

我正在使用一个 gridview,它根据下拉列表中的选择从 SQL 数据库中提取数据。源表有六列用于选择的属性,但根据选择的内容,可能会有一到六列为空(全部为空值)。当该列为空时,我希望将其隐藏,以便页面不那么笨重和混乱。

在过去的几天里我一直在寻找答案,但到目前为止我发现的要么是隐藏你知道为空但我不知道的列,要么是在 SQL 代码中删除它们,但我认为这不是如果在 gridview 代码中调用该列并且查询中不存在该列,则该列有效。

我对 ASP.NET 很陌生,所以如果我的一些术语不正确,我很抱歉!如果您对我的问题有任何疑问,请告诉我。

在此先感谢您的帮助!

For*_*lon 5

你可以尝试:

  1. 设置gridview将所有列隐藏( Visible="false")
  2. 在gridview的RowDataBound事件中,检查每个列的值,如果有数据,则将该列设置为显示(Visible="true"

RowDataBound 方法可能如下所示:

void YourGridview_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        // if this is a SqlDataSource you can use DataRowView, 
        // otherwise use whatever type is used in the data source
        DataRowView rowView = (DataRowView)e.Row.DataItem;

        if (!String.IsNullOrEmpty(rowView["ColumnA"])) 
            YourGridview.Columns[0].Visible = true;
        // repeat for your other columns
    }
}
Run Code Online (Sandbox Code Playgroud)