国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

關于DataGrid Web控件的熱門問題__連載之四

2024-07-21 02:22:58
字體:
來源:轉載
供稿:網友
動態顯示和隱藏列&動態增加列 
——動態顯示隱藏列 
動態顯示列的一種方式就是在設計時創建它們,然后在需要時隱藏或顯示它們,可以通過設定列的visible屬性來實現。下面的例子說明了如何控制datagrid的第二列(索引為一的列)的可見性。 
 datagrid1.column[1].visible=!(datagrid1.column[1].visible); 
——動態增加列(這里列都是由數據庫讀出的列) 
如果你事先知道需要哪些列,你可以隱藏或顯示它們,但是,有時你不到運行時是不知道需要哪些列的,在這種情況下,你可以動態創建列,并將其加入datagrid中。 
實現的方法是創建一個datagrid支持的列類型的一個實例——綁定列、按鈕列、或者超鏈接列(還可以添加模板列,但是稍微復雜些)。 
下例說明如何綁定兩個列到 datagrid中: 
private void button1_click(object sender, system.eventargs e) 

   datagrid1.autogeneratecolumns = false; 
   datagrid1.datasource = this.dsbooks1; 
   datagrid1.datamember = "books"; 
   datagrid1.datakeyfield = "bookid"; 

   // add two columns 
   boundcolumn dgc_id = new boundcolumn(); 
   dgc_id.datafield = "bookid"; 
   dgc_id.headertext = "id"; 
   dgc_id.itemstyle.width = new unit(80); 
   datagrid1.columns.add(dgc_id); 

   boundcolumn dgc_title= new boundcolumn(); 
   dgc_title.datafield = "title"; 
   dgc_title.headertext = "title"; 
   datagrid1.columns.add(dgc_title); 

   this.sqldataadapter1.fill(this.dsbooks1); 
   datagrid1.databind(); 

任何時候向列中動態增加控件,都會遇到如何保持的問題。動態增加的列并非自動地添加到page的視圖態,因此,你需要添加page的邏輯,使得在每次提交—回傳的過程中,列是可見的。 
實現上述問題的一個優秀的方法就是重載page的loadviewstate方法,它為我們提供了重新確定datagrid控件中列的較早機會,因為該方法的調用是在page_load事件觸發之前。在loadviewstate中重新添加列保證了它們在任何事件代碼執行前,對正常的操作是可用的。 
下例展示了如何擴展上例使得每次page執行時都將列重新保存。和上例一樣,button1_click事件向datagrid中添加了兩列(該例中,事件句柄調用了一個獨立的方法——addcolumns()來實現),而且,page還包含了一個簡單的布爾屬性,稱為dynamiccolumnsadded來指示datagrid中是否有列動態增加。該屬性在視圖態下保存它的值。loadviewstate方法首先調用它的基類的loadviewstate方法,它摘錄視圖態信息并配置控件。如果列事先被添加到datagrid中,該方法就再次添加它們。 
private bool dynamiccolumnadded{ 
   get 
   { 
      object b = viewstate["dynamiccolumnadded"]; 
      return (b == null) ? false : true; 
   } 
   set 
   { 
      viewstate["dynamiccolumnadded"] = value; 
   } 


protected override void loadviewstate(object savedstate) 

   base.loadviewstate(savedstate); 
   if (dynamiccolumnadded) 
   { 
      this.addcolumns(); 
   } 


private void button1_click(object sender, system.eventargs e) 

   if(this.dynamiccolumnadded != true) 
   { 
      this.addcolumns(); 
   } 


private void addcolumns() 

   boundcolumn dgc_id = new boundcolumn(); 
   dgc_id.datafield = "bookid"; 
   dgc_id.headertext = "id"; 
   dgc_id.itemstyle.width = new unit(80); 
   datagrid1.columns.add(dgc_id); 

   boundcolumn dgc_title= new boundcolumn(); 
   dgc_title.datafield = "title"; 
   dgc_title.headertext = "title"; 
   datagrid1.columns.add(dgc_title); 

   this.sqldataadapter1.fill(this.dsbooks1); 
   datagrid1.databind(); 
   this.dynamiccolumnadded = true; 

 (unfinished 所有代碼已經經過測試,只要獲得一個你自己的dataset即可)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 甘泉县| 盘山县| 巴青县| 新和县| 穆棱市| 永济市| 高邮市| 巧家县| 疏勒县| 礼泉县| 肥东县| 丰城市| 洛宁县| 威信县| 乐安县| 云南省| 平安县| 屏东县| 祁阳县| 松桃| 华坪县| 图们市| 邢台县| 涪陵区| 仲巴县| 邻水| 五莲县| 阳曲县| 东台市| 饶阳县| 泰兴市| 吉林市| 永春县| 张家界市| 敖汉旗| 根河市| 韶关市| 大名县| 临猗县| 吴江市| 汉阴县|