面对GridView.Columns.Count为0的问题

好久没有用纯ADO.NET进行开发了,近日重操旧码,想来个温故而知新,就做了几个小Demo.其中一个简单的应用就是把一个DataTable简单的绑定到GridView,把数据显示出来.数据绑定之后,我惯性的想屏蔽掉部分Columns和设置一些Columns属性,可问题就来了,调用GridView.Columns[0]时竟然抛出边界错误,一查GridView.Columns.Count,莫大的一个0跃然纸上,开始当然是以为自己的代码有问题,反复检查后,确信一点问题都没有,驱猫上网百一下和G一下,发现遇到这个问题的朋友还不少.

原来服务器端DataSet或者DateTbale之流绑定给GridView之后,GridView只会按照字段的顺序显示所有列,此时无论GridView的AutoGenerateColumns属性启用还是不启用,Columns对象的Count将为0,因为GridView还是会自动生成的列,而自动生成列是不会放入到Columns集合中去的.

没有办法了,锅穿洞就自己补补咯,难道要饿着等MS爷爷给你饭吃么.其实做法也很简单,写个动态添加Columns函数就行了吧.

 

     /// <summary>
    
/// 动态生成GridView的Columns
    
/// </summary>
    
/// <param name="gv"></param>
    
/// <param name="dt"></param>
    
/// <returns></returns>

     public   static  GridView dynamicGenerateColumns(GridView gv, DataTable dt)
    
{
        
// 把GridView的自动产生列设置为false,否则会出现重复列
        gv.AutoGenerateColumns = false;

        
// 清空所有的Columns
        gv.Columns.Clear();

        
// 遍历DataTable 的每个Columns,然后添加到GridView中去
        foreach (DataColumn item in dt.Columns)
        
{
            BoundField col 
= new BoundField();
            col.HeaderText 
= item.ColumnName;
            col.DataField 
= item.ColumnName;
            col.Visible 
= true;
            gv.Columns.Add(col);
        }

        
return gv;
    }

添加完Columns,就可以舒心的用GridView.Columns[index]进行操作了,操作完还是来两句DataSource和DataBind,目的即可达到 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值