VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > C#教程 >
  • C#实现DataGridView动态生成实例

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

  有时候需要在DataGrid(GridView)里显示的数据列数是不固定的,而且还需要对数列列进行控制,如显示或隐藏,这时我们就不能用DataGrid里的自动生成列,更不能对列做数据绑定了,但我们有个办法,就是动态地生成数据列,DataGrid的动态列其实就是以类的形式存在,功能很强大.

  要实现动态列,首先要添加一个类文件,这个类必须要继承ITemplate接口,主要是要实现一个方法:InstantiateIn,在InstantiateIn里做的是对该动态列做事件控制的绑定,如OnDataBinding,OnDataBinding就相当于DataGrid的ItemDataBound事件了,这样就可以对该动态列的每一行做相应处理了.

  这样有了动态列,你就可以按某些条件来对列进行相应的控制了,如在配置文件定义他们的个数,哪些该不该显示等等.

  具体实现源码如下:

  程序代码

public class DynamicColumn:ITemplate
{
    private string colname;
    private int colvalue;
  //构造函数,能传入必要的参数,当然也可属性的方式传入参数
    public DynamicColumn(string p_colname, int p_colvalue)
   {
      colname = p_colname;
      colvalue = p_colvalue;
   }
   //指定了在控件Label lb上做DataBinding事件的绑定
   public void InstantiateIn(Control container)   
   {
     Label lb = new Label();
     lb.DataBinding += new EventHandler(this.OnDataBinding);
     container.Controls.Add(lb);
     }
     //这里是我的具体绑定操作,你可以写自己的
     public void OnDataBinding(object sender, EventArgs e)
     {
      Label lb = (Label)sender;
      int AndResult = 0;
         DataGridItem container = (DataGridItem) lb.NamingContainer;
         AndResult = int.Parse(((DataRowView)container.DataItem)[colname].ToString());
      if( AndResult == colvalue)
        lb.Text = "√";
      else
        lb.Text = "";
     }
}

  转:

  http://www.techmango.com/blog/article.asp?id=470 



相关教程