GridView动态绑定列(据条件显示某些列)

有的情况下,GridView数据源的所有数据并不需要全部显示,会根据条件部分的显示,或者是动态的添加删减某些列。

这种情况下,可以先把数据源所有的数据抽取出来,存放在一个DataTable中。

DataTable dt=new DataTable();

GridView1.AutoGenerateColumns=false;//只有添加了这个之后,才不会显示出所有的列

GridView1.DataSource=dt; //这句很重要,需要特别注意。如果没有指定数据源,GridView中无法显示出数据

GridView1.Columns.Clear();//如果没有这个方法,GridVIew1的数据列就会一直增加。所以注意每次增加数据源之后,先把之前的列清除

得到整个数据源后,在按照条件动态绑定所需要的列。可添加的列同GridView一样,有模板列,命令列,按钮列,数据列。。。

CommandField 列:

             //add an edit column for grdReport1
            CommandField cf = new CommandField();
            cf.ButtonType = ButtonType.Link;
            cf.ShowEditButton = true;
            cf.CausesValidation = false;
            cf.HeaderText = "Edit";
            cf.ItemStyle.HorizontalAlign = HorizontalAlign.Center; //居中对齐
              grdReport1.Columns.Add(cf); //GridView添加命令列
            GridView1.DataBind();

BoundField 列:(这是最基本的绑定,可以对新添加的列设置格式,对齐方式,文本颜色等等)

           //遍历dt中的所有列,或者根据条件选择 
           for (int i = 0; i < dt.Columns.Count; i++)
            {
                BoundField bfCase = new BoundField();
                bfCase.DataField = dt.Columns[i].ToString();
                bfCase.HeaderText = dt.Columns[i].ToString();
                grdReport1.Columns.Add(bfCase);
            }
           GridView1.DataBind();

Template 列:(待验证……)

               //添加模板列
                   TemplateField tf= new TemplateField ();
                tf.ItemTemplate=new MyTemplate("",DataControlRowType.DataRow);
                bfCase.HeaderText = ""; //你想在模板列中显示的
                   tf.HeaderTemplate=new MyTemplate("",DataControlRowType.Header);
                tf.ItemStyle.HorizontalAlign = HorizontalAlign.Center; //居中对齐
                grdReport1.Columns.Add(tf);            
                GridView1.DataBind();

在这些都完成之后,要记得添加一句:GridView1.DataBind();

 

(谨以此对自己的工作做个记录和参考,以备以后忘记时候参阅~ 如有错误,欢迎指正,万分感谢~)

posted @ 2011-10-11 10:19  eva.xiao  阅读(5796)  评论(0编辑  收藏  举报