扫描每列中的每个gridview行,如果所有行都为空,则隐藏该列 [英] Scan each gridview row in each column and hide the column if all rows are empty
本文介绍了扫描每列中的每个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屋!
查看全文