熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

DataGrid Web控件深度歷險(2) Part2

2013-11-13 10:27:36  來源: .NET編程 

  在本文的第一部分我們研究了如何設定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
  FontName=Verdana CellPadding=
  FontSize=pt AutoGenerateColumns=False>
  <HeaderStyle BackColor=Black ForeColor=White
  FontBold=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 ItemStyleHorizontalAlign=Center />
  <asp:BoundColumn DataField=SubmittedByName HeaderText=Author />
  <asp:BoundColumn DataField=SubmittedByEmail HeaderText=Authors Email />
  <asp:BoundColumn DataField=DateEntered HeaderText=Date Added
  DataFormatString={:MMddyyyy} />
  </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)?
  …
  
  
  
  ASPNET
  How can I format numbers and date/times using ASPNET? 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返回的那個特定列的值)在示例中我使用了格式化字符串####它在每個數字前加上一個逗號格式化字符串MMddyyyy指定通過月日和年的格式顯示日期/時間字段
  
  結論
  
  花一些時間看一下第一個示例(見DataGrid Web控件深度歷險())和現在的示例改進確實很大!請注意所有這些樣式和用戶界面的改進不需要寫一行代碼就可實現我們只是在Web控件的標記中設定了一些屬性!事實上如果你正在使用類似Visual Studio Net的編輯器 你可通過點擊一些按鈕選中一些復選框選擇列表框的一些項來設定格式化選項想象一下在傳統ASP中實現同樣效果需要編寫的那些冗長代碼那會使你愛上ASPNet如果你現在還沒有的話
  
  祝編程愉快!

From:http://tw.wingwit.com/Article/program/net/201311/13708.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.