问题的目标:动态隐藏为空的字段,比如,Nominal Size一列没有数据,那么就隐藏它 代码实现bom_detail.aspx.cs//Page_load事件的代码片断protected void Page_load(object sender, EventArgs e) { //dynamic display columns DataSet ds = new DataSet (); string sGetdetails = "SELECT * FROM BOMGeneral"; string sConnect = "Data Source=servername;Initial Catalog=databasename;Uid=sa;Pwd=123"; SqlConnection con =new SqlConnection (sConnect ); con.Open (); SqlDataAdapter da = new SqlDataAdapter (sGetdetails ,con);//因为可能会对数据库修改,我这里使用SqlDataAdapter da.Fill(ds,"myTable"); //获取列(字段)的个数,和行的个数 //这里有一段小插曲,我在用C#的时候把[]全部写成了(),当然死活都不对啦! //()是VB.Net的写法,汗自己一个先。。。。 int columncount = ds.Tables["myTable"].Columns.Count; int rowcount = ds.Tables["myTable"].Rows.Count; for(int j=0;j < columncount ;j++) // 遍历所有列,j为列,i为行 { int count =0; //定义一个计数器,用以判别字段是否为空 for(int i=0;i<rowcount ;i++) //遍历所有行 { if (Convert.IsDBNull(ds.Tables["myTable"].Rows[i][j])) count++; } if (count == rowcount ) bomDetail.Columns[j].Visible = false; //bomDetail是Gridview的ID } con.Close(); }OK啦!这段代码可以隐藏所有为空的字段。不过有个缺点:在Gridview自动绑定数据的时候会读取数据库一次,page_load时又会读取一次,不知道有没有更好的方法可以避免。虽然不是什么高妙的方法,但这是我自己没有google自己想出来的,呵呵,也算小有成就感一把。