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

首頁 > 編程 > .NET > 正文

ASP.NET DataGrid 控件深入研究

2024-07-10 12:57:35
字體:
來源:轉載
供稿:網友
中國最大的web開發資源網站及技術社區,
首先我們將從一個示范開始,在這個示范中我將使用一個按鈕點擊事件排序表格中的數據。然后介紹的是一組屬性——hyperlinkcolumn、bottoncolumn 和 boundcolumn,使用這些屬性可以為 datagrid 添加一些有趣的自定義功能。

下面我們首先從上一次結束的地方——清單a開始。下面是清單a中代碼的輸出。


datagrid 的輸出

要注意的第一個變化是表頭中的列名現在是可點擊的。自己運行一下這個示例,你會發現在點擊每個字段時,數據會自動排序。

現在我們看一下引發這個變化的代碼。首先我將介紹 strsortby 變量,這個變量用于存儲排序參數的名字。page_load() 函數也已有改動:當頁面第一次被裝載時,id字段被選作默認的排序參數。

下面創建 dataview 對象的一個實例,用于在運行時期改變排列順序。只要把這個屬性設置為要排序的列,dataview 就會替我們完成排序工作。

最后,使用 datagird 控件的一些新屬性將這些東西粘合到一起。allowsorting激活排序,而 onsortcommand屬性指定在接收到一個排序請求時需要調用的事件處理器。第二個屬性已經設置為dgsuperheroes_sort(),這個函數將在我們點擊頭部的字段名時由 .net 編譯器自動調用。在這個函數中,sortexpression屬性保存被選作排序參數的字段名,然后根據這個字段重新綁定 datagrid,從而實現排序。



向 datagrid 中添加鏈接


接著,我們可以通過以下方式改進 datagrid 的界面:只在前面展示信息的摘要,并在 datagrid 中插入一些超鏈接,然后在點擊這些鏈接時顯示詳細信息。清單b 展示了如何實現這一效果,圖b 展示了相應的輸出:

圖b

在 datagrid 中插入超鏈接
這里 datagrid 只包含兩列——第一列是 id,第二列是名字。如果點擊任何一個名字,就會調出另外一個 asp.net 腳本,顯示被選項的所有詳細信息。

在這個腳本中最重要的東西是 autogeneratecolumns 屬性。該屬性如果設為 false,那么就可以保證 .net 編譯器不會根據表的字段自動產生 datagrid 的列。

很明顯的問題是,然后該怎樣生成列?很簡單,使用 <columns> 元素,這一元素將圍起需要顯示的列的定義。

第一種列是 <asp:boundcolumn> 類型,該類型允許我們將 datagrid 的一列綁定到數據庫表的一個字段。所需的字段被賦予 <asp:boundcolumn> 元素的 datafield屬性。

然后,<asp: hyperlinkcolumn> 元素允許我們插入一個特殊列,在該列中有 datagrid 每一行的一個鏈接。datatextfield屬性控制列中要顯示的表字段,datanavigateformatstring屬性控制超鏈接的 url 目標(注意 {0} 格式用于變量填補),datanavigateurlfield屬性指定用于填補的數據庫字段。

如果點擊超級英雄(super hero)的名字,會進入 more.aspx 腳本,該腳本以 id 作為一個 get 參數傳遞,然后從數據庫中獲取信息,并將信息顯示在頁面上。
命令中心
前面的例子引入了一個包含超鏈接的列。現在,你將看到如何引入一個能夠在用戶點擊時運行自定義命令的列。比如說,當用戶點擊一個列時,在頁面上隱藏或者顯示一個元素。



首先,在前面創建的 datagrid 中添加兩個列。第一個新列使用被選記錄的詳細信息填充另外一個 datagrid(位于同一頁面),而第二個列用于在用戶點擊一個按鈕時顯示或隱藏這個新的 datagrid。

清單c是產生的代碼,下圖是清單以中代碼的簡單輸出:

圖c


使用 datagrid 顯示/隱藏詳細信息
腳本中實際上包含兩個 datagrid:第一個是“dgsuperheroes”,用于顯示超級英雄(superheroes)的名字,第二個是“dgsuperheroes_details”,用于顯示被選英雄的詳細信息。默認情況下,第二個 datagrid 在頁面加載時是不可見的,因為其 visible 屬性設置為 false。

現在回到“dgsuperheroes” datagrid,你會發現我們已經把 autogeneratecolumns 屬性設置為“false”并且引入了四個自定義列:兩個用于記錄 id 和名稱的 <asp:boundcolumn>,還有兩個用于保存命令的 <asp:buttoncolumn>。

每個 <asp:buttoncolumn> 都有三個有用的屬性:headertext,控制表頭行顯示的文字;text,控制每一行顯示的文字;commandname,用于為每個命令指定一個唯一標識符。

“dgsuperheroes” datagrid定義還引入了 onitemcommand 屬性,這個屬性指定在用戶點擊一個 <asp:buttoncolumn> 鏈接時被調用的事件處理器。在這個例子中,事件處理器叫做 superhero_details(),它使用 commandname 區分對“顯示詳細信息(show details)”和“隱藏詳細信息(hide details)”請求的調用。注意這里顯式地將事件(作為事件處理器的一個輸入參數)轉型為一個 linkbutton。

分享你的 datagrid 技巧和竅門
在學習完本文的這兩部分課程之后,我已經嘗試盡量深入地講解了 asp.net 中非常酷的 datagrid 控件的很多東西。此外還展示了如何使用最簡單的方法向 datagrid 中添加排序列,之后我還快速地介紹了 datagrid 控件的三個有用但有點復雜的屬性:<asp:boundcolumn> 元素,用于將 datagrid 列綁定到數據庫表的具體字段;<asp:hyperlinkcommand> 元素,用于在 datagrid 中插入超鏈接;<asp:buttoncolumn> 元素,使得將自定義命令引入到 datagrid 中更加容易。不妨到discussion board 跟大家分享你最愛的 datagrid 技巧或竅門。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新蔡县| 犍为县| 嘉鱼县| 桦川县| 临猗县| 呼伦贝尔市| 阿克| 德钦县| 名山县| 抚顺市| 武定县| 普陀区| 玉屏| 黄石市| 曲阜市| 黄冈市| 蕲春县| 新乐市| 石门县| 红桥区| 青川县| 河北省| 孙吴县| 云浮市| 新河县| 德惠市| 仙居县| 祁东县| 高州市| 楚雄市| 安西县| 赤城县| 静海县| 长顺县| 天峨县| 顺平县| 乐山市| 太谷县| 博白县| 思南县| 交口县|