自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

修改ASP.NET DataGrid的樣式

開發(fā) 后端
本文介紹如何修改ASP.NET DataGrid的樣式。DataGrid 允許您修改成分單元格的樣式和布局,這可通過掛鉤ItemCreated 事件來完成。
ASP.NET DataGrid的樣式

ASP.NET DataGrid 允許您修改成分單元格的樣式和布局,這可通過掛鉤 ItemCreated 事件來完成。該控件每次處理子項(頁眉、頁腳、行、頁導(dǎo)航)時,該事件都會被激發(fā)。事件處理程序接收類型為 DataGridItemEventArgs 的參數(shù),您可以從該參數(shù)提取所處理項目的類型。

匯總行是 DataGrid 行,同樣,它的類型可以是 ItemAlternatingItem。因此,在編寫 ItemCreated 處理程序時,要確保只有在該項的類型正確時才處理相應(yīng)的單元格。下面的列表概述所需的代碼。

  1. public void ItemCreated(Object sender, DataGridItemEventArgs e)  
  2. {  
  3.     // Get the type of the newly created item  
  4.     ListItemType itemType = e.Item.ItemType;  
  5.     if (itemType == ListItemType.Item ||   
  6.     itemType == ListItemType.AlternatingItem)   
  7.     {  
  8.         // Get the data bound to the current row  
  9.         DataRowView drv = (DataRowView) e.Item.DataItem;  
  10.     if (drv != null)  
  11.     {  
  12.         // Check here the app-specific way to detect whether the   
  13.         // current row is a summary row  
  14.         :  
  15.     }  
  16.     }  
  17. }  

如果所創(chuàng)建的項是 DataGrid 項(或交替項),則可以通過 DataItem 屬性訪問綁定到行的數(shù)據(jù)。根據(jù) DataGrid 綁定到的對象的類型,DataItem 屬性會指向不同的行對象。如果網(wǎng)格綁定到 DataView,會獲取 DataRowView 對象;如果該源用 DataTable 對象來表示,會獲取 DataRow 對象。在該示例應(yīng)用程序中,我使用 DataView 對象填充了網(wǎng)格。后來,單行的數(shù)據(jù)對象成為 DataRowView 對象。

在擁有了數(shù)據(jù)行對象之后,可以應(yīng)用一些應(yīng)用程序特定的規(guī)則來確定該行是否為匯總行。在該示例應(yīng)用程序中,匯總行的 MyOrderID 字段設(shè)置為 –1。

  1. if ((int) drv["MyOrderID"] == -1)  
  2. {  
  3.    // Modify style and layout here.   
  4.    //    --> Set the background color to white and use bold font  
  5.    e.Item.BackColor = Color.White;   
  6. e.Item.Font.Bold = true;      

DataGrid 現(xiàn)在看上去如下圖所示。

以粗體顯示且背景為白色的匯總行

DataGrid的樣式:以粗體顯示且背景為白色的匯總行

DataGrid 行實際上只是表中的一行。同樣,使用它可以很好地進(jìn)行單元格刪除以及其他調(diào)整。讓我們看一看如何使用跨越所有現(xiàn)有列的單一單元格來呈現(xiàn)匯總行。

  1. if ((int) drv["MyOrderID"] == -1) 

具有自定義布局的匯總行

DataGrid的樣式:具有自定義布局的匯總行

在這三個原始單元格中,前兩個被刪除,第三個(現(xiàn)在包含索引 0)被正確對齊并跨越外部表的寬度。如果您希望在匯總行上顯示一些自定義文本,則需要做好面對其他問題的準(zhǔn)備。

假設(shè)您需要添加一些文本以對小計進(jìn)行注釋,而且與此同時,讓小計與單個定單量出現(xiàn)在同一列中。在這種情況下,只需刪除一個單元格。

  1. e.Item.Cells.RemoveAt(1);         // remove the order # cell  
  2. e.Item.Cells[0].ColumnSpan = 2;      // span the custID cell  
  3. e.Item.Cells[1].HorizontalAlign = HorizontalAlign.Right;  
  4. e.Item.Cells[0].Text = "Total is"

此代碼的結(jié)果如下所示。正如您所看到的那樣,它與您的預(yù)期結(jié)果不完全相同。匯總行的第一個單元格中并沒有您剛剛設(shè)置的文本。這是怎么回事呢?

具有修改后的自定義布局的匯總行

DataGrid的樣式:具有修改后的自定義布局的匯總行

此處需要考慮的重要一點是,ItemAlternatingItem 行均為綁定行。它們的明確文本只是在 OnItemDataBound 事件的過程中設(shè)置。您可能已經(jīng)猜到了,OnItemDataBound 事件會在創(chuàng)建該項之后激發(fā)。因此,在處理 ItemCreated 時分配給單元格的任何文本在后來都由某個事件以靜默方式改寫??赏ㄟ^設(shè)置 DataGrid 的 OnItemDataBound 屬性來掛鉤 OnItemDataBound 事件。

  1. < asp:DataGrid id="grid" runat="server"   
  2. AutoGenerateColumns="false" 
  3. :  
  4. OnItemCreated="ItemCreated" 
  5. OnItemDataBound="ItemDataBound" 
  6. OnPageIndexChanged="PageIndexChanged"> 
  7. The structure of the code for   
  8.                                                                                                                                                                                                                     ItemDataBound is shown below.  
  9. public void ItemDataBound(Object sender, DataGridItemEventArgs e)  
  10. {  
  11. DataRowView drv = (DataRowView) e.Item.DataItem;  
  12. if (drv == null)  
  13.     return;  
  14.  
  15. if ((int) drv["MyOrderID"] == -1)  
  16. {  
  17. if (drv["MyCustomerID"].ToString() == "(Total)")  
  18. {  
  19.     e.Item.BackColor = Color.Yellow;  
  20.     e.Item.Cells[0].Text = "Orders total";  
  21. }  
  22. else  
  23.     e.Item.Cells[0].Text = "Customer subtotal";  
  24. }  
  25. }  

最上面的一行是在黃色背景上繪制的,它顯示其他匯總行中的另一個文本。最終的 DataGrid 顯示如下。

最終的 DataGrid

DataGrid的樣式:最終的 DataGrid

以應(yīng)用程序特定的劑量很好地混合 SQL 代碼和 ASP.NET 技術(shù)可以實現(xiàn)有效的 Web 數(shù)據(jù)庫應(yīng)用程序。DataGrid 控件是一個前沿工具,可用來為它所提供的編程功能構(gòu)建完美而又功能強大的 Web 應(yīng)用程序,而且對于它所支持的自定義級別來說用途更多。

【編輯推薦】

  1. ASP.NET DataGrid控件數(shù)據(jù)分組操作
  2. 什么是ASP.NET DataGrid控件:完全模板化的網(wǎng)格
  3. ASP.NET的GridView與DataGrid控件比較淺析
  4. .NET新手指南:輕松自定義DataGridView控件
  5. C#中對DatagridView的部分常用操作
責(zé)任編輯:yangsai 來源: MSDN
相關(guān)推薦

2009-08-07 17:42:43

ASP.NET Dat

2009-08-03 18:29:31

GridView與Da

2009-08-12 14:38:05

ASP.NET Dat

2009-08-07 17:31:26

ASP.NET Dat

2009-08-04 13:35:16

ASP.NET自定義樣

2009-07-22 17:45:35

ASP.NET教程

2009-08-03 14:22:33

什么是ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2009-08-07 18:04:22

ASP.NET Dat確認(rèn)對話框

2009-07-27 12:22:03

ASP.NET和ASPASP.NET入門教程

2009-07-27 10:35:33

TypeConvertASP.NET

2009-07-29 11:19:03

JavaScriptASP.NET

2009-07-29 14:52:12

IScriptContASP.NET

2009-07-29 16:33:28

GreeterLogiASP.NET

2009-07-27 15:48:43

2009-08-10 13:32:15

ASP.NET TimASP.NET組件設(shè)計

2009-07-29 17:11:25

ASP.NET ISA

2009-07-29 16:08:07

ASP和ASP.NET

2009-07-29 17:29:46

ASP與ASP.NET

2009-07-22 18:03:00

ASP.NET ASP
點贊
收藏

51CTO技術(shù)棧公眾號