在本文的第一部分
我們研究了如何設定DataGrid Web控件的顯示屬性以及如何通過樣式設定DataGrid的頁眉
頁腳
行和交替行的顯示
所有這些技術或是用於設定整個DataGrid的顯示
或是用於設定DataGrid中行的顯示
但是如何設定DataGrid中列的顯示屬性?其實並不難
接著讀你就知道了
設定哪些列應該顯示
缺省情況下DataGrid在生成的HTML表格中為SQL查詢返回的每一列生成一個對應的列
但是在一些情況下僅希望在DataGrid中顯示這些列中的一部分列
例如
在我正在進行的示例中
通過調用sp_Popularity存儲過程顯示了最受歡迎的
個問題
它包含FAQID列
或許我並不希望顯示該列
如果不想在DataGrid中顯示數據庫查詢返回的所有列
必須顯式地聲明所有希望顯示的列
第一步是將DataGrid的AutoGenerateColumns屬性設為False
一旦執行完這個操作
就需要通過BoundColumn Web控件設定需顯示的列
如下所示
<asp:DataGrid runat=
server
AutoGenerateColumns=
False
>
<Columns>
<asp:BoundColumn DataField=
DatabaseColumnName
/>
<asp:BoundColumn DataField=
DatabaseColumnName
/>
<asp:BoundColumn DataField=
DatabaseColumnNameN
/>
</Columns>
</asp:datagrid>
對於每一個希望顯示的列
需要通過一個包含DataField屬性的<asp:BoundColumn
/>標記來指定數據庫中需要顯示的列
所有這些BoundColumn標記必須包含在Column標記內
(也可通過編程的方式指定這些綁定列
但是它的可讀性差
並且需要很多代碼!)請注意只有通過BoundColumn標記指定的列才會在DataGrid中顯示
你必須指定需要顯示的列!
BoundColumn控件的優點在於它包含一些設定格式的屬性
包括
l HeaderText — 設定列標題的文字
l FooterText — 設定列尾的文字(記住若要在DataGrid中顯示頁腳
應將ShowFooter設為True)
l HeaderStyle/FooterStyle/ItemStyle — 包含與DataGrid樣式相同的屬性
對設定列居中
前景色
背景色等很有用
l DataFormatString — 設置格式命令
(參考下面的示例
參考文檔以獲得全部的格式化規范)
讓我們看一下如何通過使用BoundColumn標記來進一步增強前面的示例
正如前面所提到的
我們不想顯示FAQID或FAQCategoryID列
並且我們希望對數字列(ViewCount)和日期/時間列(DateEntered)設定格式
另外
我們希望數字列的值居中
這些均可通過幾行易於閱讀易於理解的代碼完成
<asp:DataGrid runat=
server
id=
dgPopularFAQs
BackColor=
#eeeeee
Width=
%
HorizontalAlign=
Center
Font
Name=
Verdana
CellPadding=
Font
Size=
pt
AutoGenerateColumns=
False
>
<HeaderStyle BackColor=
Black
ForeColor=
White
Font
Bold=
True
HorizontalAlign=
Center
/>
<AlternatingItemStyle BackColor=
White
/>
<Columns>
<asp:BoundColumn DataField=
CatName
HeaderText=
Category Name
/>
<asp:BoundColumn DataField=
Description
HeaderText=
FAQ Description
/>
<asp:BoundColumn DataField=
ViewCount
DataFormatString=
{
:#
###}
HeaderText=
Views
ItemStyle
HorizontalAlign=
Center
/>
<asp:BoundColumn DataField=
SubmittedByName
HeaderText=
Author
/>
<asp:BoundColumn DataField=
SubmittedByEmail
HeaderText=
Author
s Email
/>
<asp:BoundColumn DataField=
DateEntered
HeaderText=
Date Added
DataFormatString=
{
:MM
dd
yyyy}
/>
</Columns>
</asp:datagrid>
實際運行結果如下
Category Name
FAQ Description
Views
Date Added
Getting Started
Where can I host my ASP Web site for free (similar to GeoCities or Tripod or any of the many other free Web site sites)?
…
ASP
NET
How can I format numbers and date/times using ASP
NET? For example
I want to format a number as a currency
Databases
Errors
I am using Access and getting a
error (or a [Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot open the file
(unknown)
error) when trying to open a connection! How can I fix this problem?
…
如上例所示
上述代碼指定了需要顯示的特定列並且應用了特定的格式
請注意DataFormateString看上去很有趣
它的格式始終是{
:format string}
{
: …}指定通過格式化字符串(由…指定的)來格式化第一個參數(第一個參數指由DataReader返回的那個特定列的值)
在示例中我使用了格式化字符串#
###
它在每
個數字前加上一個逗號
格式化字符串MM
dd
yyyy指定通過月
日和年的格式顯示日期/時間字段
結論
花一些時間看一下第一個示例(見DataGrid Web控件深度歷險(
))和現在的示例
改進確實很大!請注意所有這些樣式和用戶界面的改進不需要寫一行代碼就可實現
我們只是在Web控件的標記中設定了一些屬性!事實上如果你正在使用類似Visual Studio
Net的編輯器
你可通過點擊一些按鈕
選中一些復選框
選擇列表框的一些項來設定格式化選項
想象一下在傳統ASP中實現同樣效果需要編寫的那些冗長代碼
那會使你愛上ASP
Net
如果你現在還沒有的話
祝編程愉快!
From:http://tw.wingwit.com/Article/program/net/201311/13708.html