成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

利用TemplateField顯示GridView中數據的元數據

開發 后端
本文介紹了TemplateField的第三種用法。

第三種TemplateField的用法是,顯示GridView中數據的元數據。比如說,除了顯示雇員的受雇日期,我們可能還希望用一列來顯示這個雇員在公司干了多久。 

另外還有一種用法,它將在某些情況下需要用到,比如說在頁面上某個數據的顯示格式需要用一種不同于其在數據庫中的存儲格式的時候。想象一下,雇員表中有一個性別字段,其中存儲了M或是F這樣的字符用于表示此雇員是男的還是女的。當我們需要將這個信息顯示在頁面上的時候,我們可能希望能夠將其顯示為“男”或“女”而不是“M”或“F”。 

這兩種用法都可以采用在ASP.NET頁面的后置代碼類(或者是在一個獨立的類庫中,將其實現為一個靜態方法)創建一個供模板調用的格式化方法(formatting method)來做到。這樣的格式化方法將在模板中調用,語法跟前面的數據綁定語法是一樣的。格式化方法可以接受若干個參數,但是必須返回一個字符串。這個返回的字符串是一個用于插入到模板中的HTML。 

讓我們增加一點內容來說明這個概念。主要是增加一列以顯示雇員在公司干活的天數。這個格式化方法接受一個Northwind.EmployeesRow對象,然后返回以字符串的形式返回這個雇員在公司干活的天數。這個方法可以添加到ASP.NET頁面的后置代碼類中,不過一定要記得將其標記為protected或public,不然模板就訪問不到它了。 

  1. protected string DisplayDaysOnJob(Northwind.EmployeesRow employee)  
  2. {  
  3.     // 確保HiredDate不為空……如果為空的話,返回“Unknown”  
  4.     if (employee.IsHireDateNull())  
  5.         return "Unknown";  
  6.     else 
  7.     {  
  8.         // 返回當前日期/時間與HireDate之間所隔的天數   
  9.         TimeSpan ts = DateTime.Now.Subtract(employee.HireDate);  
  10.        return ts.Days.ToString("#,##0");  
  11.    }  

由于HiredDate可能會含有空值,所以我們必須在進行計算之前首先保證其值不為空。如果HiredDate值為空的話,直接返回一個“Unknown”就是了;如果不為空的話呢,就計算當前時間跟HiredDate的值之間所隔的天數,并把它作為一個字符串返回即可。

要使用這個方法,我們需要在GridView的TemplateField中使用數據綁定語法來調用它。同樣,我們還是先給GridView添加一個新的模板列。

 

TemplateField:給GridView添加一個新的模板列

將這個新的模板列的頁眉文本(HeaderText)設置成“Days on the Job”,并將其ItemStyle的水平對齊(HorizontalAlign)設置為居中(Center)。要調用DisplayDaysOnJob方法,我們需要給這個模板列添加一個ItemTemplate并加上如下的數據綁定代碼: 

  1. < %# DisplayDaysOnJob((Northwind.EmployeesRow) ((System.Data.DataRowView) Container.DataItem).Row) %>    

Container.DataItem返回數據源對象中的一個相應的DataRowView對象給GridView。它的Row屬性返回一個強類型化的Nothwind.EmployeesRow,然后再將其傳遞給DisplayDaysOnJob方法。這個數據綁定語法可以直接出現再ItemTemplate(就像下面的代碼中那樣)中或是賦值給Label控件的Text屬性。 

注意:除了傳遞一個EmployeesRow的實例,其實我們也可以僅僅傳遞HireDate的值,使用< %# DisplayDaysOnJob(Eval("HireDate")) %>就可以了。不過呢,Eval方法將返回一個object類型,所以我們就必須要修改DisplayDaysOnJob方法的簽名以使其可以接受一個object類型的參數。我們不能將Eval("HireDate")調用的結果隱式的轉換成一個DateTime類型,因為Employees表的HireDate字段是允許為空的。因此,我們需要使DisplayDaysOnJob方法可以接受一個object類型的參數,并判斷這個參數是不是空值(我們可以使用Convert.IsDBNull(objectToCheck)來完成這個驗證工作),然后再進行后面的操作。 

就是因為這個,所以我還是選擇了傳遞整個EmployeesRow實例。在下一節教程中,我們會看到一個更加合適使用Eval("columnName")來傳遞參數給格式化方法的例子。 

在給我們的GridView添加了模板列并在ItemTemplate中添加了調用DisplayDaysOnJob方法的代碼后,聲明代碼應該是這個樣子: 

  1. < asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"   
  2. DataKeyNames="EmployeeID" 
  3.     DataSourceID="ObjectDataSource1">  
  4.      < Columns>  
  5.          < asp:TemplateField HeaderText="Name" SortExpression="FirstName">  
  6.              < EditItemTemplate>  
  7.                  < asp:TextBox ID="TextBox1" runat="server" Text='< %# Bind("FirstName") %>'>  
  8. < /asp:TextBox>  
  9.              < /EditItemTemplate>  
  10.              < ItemTemplate>  
  11.                  < asp:Label ID="Label1" runat="server" Text='< %# Bind("FirstName") %>'>< /asp:Label>  
  12.                 < asp:Label ID="Label2" runat="server" Text='< %# Eval("LastName") %>'>< /asp:Label>  
  13.             < /ItemTemplate>  
  14.         < /asp:TemplateField>  
  15.         < asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />  
  16.         < asp:TemplateField HeaderText="HireDate" SortExpression="HireDate">  
  17.             < EditItemTemplate>  
  18.                 < asp:TextBox ID="TextBox2" runat="server" Text='< %# Bind("HireDate") %>'>  
  19. < /asp:TextBox>  
  20.             < /EditItemTemplate>  
  21.             < ItemTemplate>  
  22.                 < asp:Calendar ID="Calendar1" runat="server" SelectedDate='< %# Bind("HireDate") %>' 
  23.                     VisibleDate='< %# Eval("HireDate") %>'>< /asp:Calendar>  
  24.             < /ItemTemplate>  
  25.         < /asp:TemplateField>  
  26.         < asp:TemplateField HeaderText="Days On The Job">  
  27.             < ItemTemplate>  
  28.                 < %# DisplayDaysOnJob((Northwind.EmployeesRow) ((System.Data.DataRowView)  
  29.  Container.DataItem).Row) %>  
  30.             < /ItemTemplate>  
  31.             < ItemStyle HorizontalAlign="Center" />  
  32.         < /asp:TemplateField>  
  33.     < /Columns>  
  34. < /asp:GridView> 

完成了整節教程之后,頁面在瀏覽器中的樣子應該是圖十六的這個樣子。

“雇員在公司干了多久”也顯示出來了 

TemplateField:“雇員在公司干了多久”也顯示出來了 

【編輯推薦】

  1. 使用ASP.NET DetailsView顯示詳細信息
  2. 熟悉DropDownList和ObjectDataSource的配合使用
  3. ASP.NET DropDownList的創建與填充
  4. 使用ASP.NET中的GridView和ObjectDataSource
  5. ASP.NET DropDownList使用范例

責任編輯:book05 來源: 博客園
相關推薦

2009-07-28 08:36:45

TemplateFie

2009-07-27 16:09:05

GridView顯示數

2009-07-28 08:24:16

GridView綁定數

2021-09-01 10:37:25

鴻蒙HarmonyOS應用

2016-10-27 13:40:02

編程語言 數據庫

2009-07-01 09:43:40

WCF安全元數據

2021-09-01 14:36:14

鴻蒙HarmonyOS應用

2010-10-21 14:12:07

SQL Server游

2009-11-09 17:17:31

WCF元數據交換

2022-03-16 11:03:40

數據庫元數據數據引擎

2022-05-06 14:50:54

元宇宙數據安全數據隱私

2024-01-02 13:16:00

數據遷移PythonPETL

2020-10-29 06:02:44

PythonPandasExcel

2023-05-11 08:37:46

LinuxSpring MVC

2009-07-28 03:42:00

ASP.NET Gri

2022-06-16 08:00:00

元數據數據中心數據架構

2018-03-12 08:17:27

分布式存儲

2023-10-30 15:28:51

數據倉庫

2023-04-14 15:50:29

元數據數據治理

2024-09-21 09:55:57

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产区在线 | 自拍偷拍中文字幕 | 国产目拍亚洲精品99久久精品 | 日韩精品视频在线 | 国产精品无码专区在线观看 | 美日韩精品 | 一区中文字幕 | 久久久www成人免费无遮挡大片 | 中文字幕精品一区二区三区精品 | 亚洲视频一区二区 | 亚洲精品久久久久久国产精华液 | 日韩在线不卡视频 | 黄色毛片网站在线观看 | 999视频在线播放 | 日韩av在线中文字幕 | 妞干网视频 | av中文字幕网| 亚洲精品成人av久久 | 欧美日韩在线一区二区三区 | 欧美一级在线观看 | 免费能直接在线观看黄的视频 | 国产美女在线播放 | 美女131mm久久爽爽免费 | 成人福利在线观看 | 日韩a v在线免费观看 | 中文字幕在线看第二 | h小视频 | 亚洲视频区 | 欧美另类视频 | 中文字幕中文字幕 | 欧美精品久久久久久久久久 | 国产精品一卡二卡三卡 | 日韩亚洲一区二区 | 国产高清免费 | 精品久久久久久久 | 亚洲精品中文在线 | 亚洲一区| 国产日韩一区 | 日韩在线精品 | 国产激情偷乱视频一区二区三区 | 精品www |