扫描每列中的每个gridview行,如果所有行都为空,则隐藏该列 [英] Scan each gridview row in each column and hide the column if all rows are empty

查看:77
本文介绍了扫描每列中的每个gridview行,如果所有行都为空,则隐藏该列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下代码不起作用..



The code below doesn't work..

Protected Sub grdsf_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles grdsf.DataBoundsafdf
        For iCol As Integer = 0 To grdsf.Columns.Count - 1
            For iRow As Integer = 0 To grdsf.Rows.Count - 1
                If grdsf.Rows(iRow).Cells(iCol).Text <> String.Empty Then
                    grdsf.Columns(iCol).Visible = True
                ElseIf grdsf.Rows(iRow).Cells(iCol).Text = String.Empty Then
                    grdsf.Columns(iCol).Visible = False
                End If
            Next
        Next
    End Sub







ID	1ST	2ND	3RD	4TH
12345	87	90		89
54321		89		
12233	93			97





我有这样的网格视图。它绑定在数据源中。现在,我需要隐藏一个列,其行没有可用的数据。在上面的表格示例中,应该隐藏带有3RD作为HeaderText的列,因为它没有数据。



我认为我的问题标题非常简单。

感谢任何帮助..



I have a gridview something like this. It is binded in a datasource. Now, what I need is to hide a column that its rows has no data available. In the table example above, the column with "3RD" as HeaderText should be hidden since it has no data.

I think my question title is quite straight forward.
Any help is appreciated..

推荐答案

protected void Page_Load(object sender,EventArgs e)

{

bool isempty = false;



DataTable dt = new DataTable();

dt.Columns.Add( Id);

dt.Columns.Add(名称);



DataRow dr = dt.NewRow();

dr [Id] =1;

dr [Name] =;

dt.Rows.Add(博士);



DataRow dr1 = dt.NewRow();

dr1 [Id] =2;

dr1 [Name] =;

dt.Rows.Add(dr1);



DataRow dr2 = dt.NewRow();

dr2 [Id] =3;

dr2 [姓名] =;

dt.Rows.Add(dr2);



DataRow dr3 = dt.NewRow();

dr3 [Id] = 1;

dr3 [姓名] =;

dt.Rows.Add(dr3);



GridView1.DataSource = dt;

GridView1.DataBind();



List< int> colno = new List< int>();



for(int i = 0; i< GridView1.Columns.Count; i ++)

{

isempty = false;

for(int j = 0; j< GridView1.Rows.Count; j ++)

{

if(GridView1.Rows [j] .Cells [i] .Text.Trim()。Replace( ,)!=)

{

isempty = true;

休息;

}

}

if(isempty == false)

{

colno.Add(i);

}

}



for(int i = 0; i< GridView1.Columns.Count; i ++)

{

if(colno.Contains(i))

{

GridView1.Columns [i] .Visible = false;

}

}



}
protected void Page_Load(object sender, EventArgs e)
{
bool isempty = false;

DataTable dt = new DataTable();
dt.Columns.Add("Id");
dt.Columns.Add("Name");

DataRow dr = dt.NewRow();
dr["Id"] = "1";
dr["Name"] = "";
dt.Rows.Add(dr);

DataRow dr1 = dt.NewRow();
dr1["Id"] = "2";
dr1["Name"] = "";
dt.Rows.Add(dr1);

DataRow dr2 = dt.NewRow();
dr2["Id"] = "3";
dr2["Name"] = "";
dt.Rows.Add(dr2);

DataRow dr3 = dt.NewRow();
dr3["Id"] = "1";
dr3["Name"] = "";
dt.Rows.Add(dr3);

GridView1.DataSource = dt;
GridView1.DataBind();

List<int> colno = new List<int>();

for (int i = 0; i < GridView1.Columns.Count; i++)
{
isempty = false;
for (int j = 0; j < GridView1.Rows.Count; j++)
{
if (GridView1.Rows[j].Cells[i].Text.Trim().Replace(" ","") != "")
{
isempty = true;
break;
}
}
if (isempty == false)
{
colno.Add(i);
}
}

for (int i = 0; i < GridView1.Columns.Count; i++)
{
if (colno.Contains(i))
{
GridView1.Columns[i].Visible = false;
}
}

}


预渲染代码



code in pre render

bool isempty = false;

       List<int> colno = new List<int>();

       for (int i = 0; i < GridView1.Columns.Count - 1; i++)
       {
           isempty = false;
           for (int j = 0; j < GridView1.Rows.Count - 1; j++)
           {
               if (GridView1.Rows[j].Cells[i].Text != string.Empty)
               {
                   isempty = true;
                   break;
               }
           }
           if (isempty == true)
           {
               colno.Add(i);
           }
       }

       for (int i = 0; i < GridView1.Columns.Count - 1; i++)
       {
           if (colno.Contains(i))
           {
               GridView1.Columns[i].Visible = false;
           }
       }


这篇关于扫描每列中的每个gridview行,如果所有行都为空,则隐藏该列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆