程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#實現DataGrid(GridView)動態生成列

C#實現DataGrid(GridView)動態生成列

編輯:關於C#

有時候需要在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 = "";
     }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved