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

DataGrid Web控件深度歷險(3) part1

2013-11-13 09:58:42  來源: .NET編程 

  這篇文章是一系列關於使用DataGrid Web控件文章的第三篇ASPNet DataGrid Web控件可將數據庫信息顯示在HTML表格中並且功能強大在第一篇文章中我們討論了DataGrid的基本功能在第二篇文章中我們討論了設定DataGrid顯示屬性的信息本文將研究如何將事件與DataGrid聯系起來
  
  導言
  
  在第一篇文章中我們研究了DataGrid的基本功能 (它是一個被設計用於在HTML表格標簽中顯示數據的ASPNet Web控件)展示了通過ASPNet頁面顯示數據庫內容是如何的簡單在第二篇文章中我們研究了如何自定義DataGrid的顯示正如在先前演示(Demo)中看到的通過很少的程序代碼我們就能以印象深刻的格式顯示數據庫信息
  
  雖然顯示數據非常有效但是真正有用的是能否將某種形式的動作與DataGrid聯系起來例如想象一下你正在為某個電子商務公司工作並被要求通過DataGrid顯示所有訂單信息每一個訂單含有很多相關的數據包括訂購的商品訂購時間購買者的信息(姓名地址等)購買者選擇的運貨方式等在一個DataGrid中(為每一個訂單)顯示所有這些信息將會導致過度的信息顯示
  
  正如在DataGrid Web控件深度歷險()中看到的我們可以通過將AutoGenerateColumns屬性設為False然後通過Columns屬性指定需要顯示的列雖然這種做法使得數據易於理解但是如果用戶同時希望能夠查看到任意一個訂單的復雜細節那又該怎麼做呢?理想地我們希望在DataGrid的每一行上有一個標記為Detail的按鈕當點擊這個按鈕後將顯示訂單的全部信息
  
  本文的示例將引領讀者創建一個非常類似的應用在前面的演示中我們顯示了最受歡迎的個常見問題本文將對該演示進行擴充以顯示個常見問題的最關鍵信息同時每一行包含一個Detail按鈕
  
  構建基礎
  
  我們在第二篇文章中提到DataGrid控件允許在DataGrid的Columns標記中放置一些BoundColumn標記回想一下每一個BoundColumn標記代表DataGrid中的一列為了將按鈕放置在DataGrid中我們可以使用ButtonColumn標記這與BoundColumn標記的用法很類似下面的代碼顯示如何將按鈕放置在DataGrid中:
  
  <form runat=server>
  <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:ButtonColumn Text=Details HeaderText=FAQ Details />
  <asp:BoundColumn DataField=FAQID Visible=False />
  <asp:BoundColumn DataField=Description HeaderText=FAQ Description />
  </Columns>
  </asp:datagrid>
  </form>
  示例運行結果如下:
  
  包含按鈕的DataGrid
  
  本示例顯示一個包含Detail按鈕的DataGrid Web控件按鈕以鏈接形式顯示若想使鏈接成為標准的按鈕需要在ButtonColumn標記中輸入ButtonType=PushButton
  
  FAQ Details
  FAQ ID
  FAQ Description
  
  Details
  
  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)?
  
  Details
  
  How can I format numbers and date/times using ASPNET? For example I want to format a number as a currency
  
  …
  
  源代碼:
  
  <% @Import Namespace=SystemData %>
  <% @Import Namespace=SystemDataSqlClient %>
  <script language=vb runat=server>
  Sub Page_Load(sender as Object e as EventArgs)
  BindData()
  End Sub
  
  Sub BindData()
   Create a connection
  Dim myConnection as New SqlConnection(ConfigurationSettingsAppSettings(connectionString))
  
   Create the command object passing in the SQL string
  Const strSQL as String = sp_Popularity
  Dim myCommand as New SqlCommand(strSQL myConnection)
  
  Set the datagrids datasource to the datareader and databind
  myConnectionOpen()
  dgPopularFAQsDataSource = myCommandExecuteReader(CommandBehaviorCloseConnection)
  dgPopularFAQsDataBind()
  End Sub
  </script>
  
  <form runat=server>
  <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:ButtonColumn Text=Details HeaderText=FAQ Details />
  <asp:BoundColumn DataField=FAQID HeaderText=FAQ ID />
  <asp:BoundColumn DataField=Description HeaderText=FAQ Description />
  </Columns>
  </asp:datagrid>
  </form>
  
  請注意為了使示例正常運行需要將DataGrid放置在一個服務器端的表單中(如上所示黑體的<form runat=server>)這是因為為了跟蹤被點擊的按鈕和應該發生的關聯動作ASPNet頁面應能夠重新創建頁面和DataGrid中的一系列按鈕為了做到這一點需要使用頁面的狀態信息(ViewState)對狀態信息的討論超出了本文的范圍為了獲取更多信息請閱讀: Form Viewstate
  
  注意在示例中創建的按鈕是一個文本鏈接按鈕這是ButtonColumn類生成的缺省外觀如果想顯示一個標准的按鈕可在ButtonColumn標記中指定ButtonType=PushButtonButtonColumn類包含一些重要的屬性在上面的代碼中使用了兩個格式方面的屬性HeaderText屬性指定DataGrid中按鈕所在列的頁眉中的文字Text屬性指定了每個按鈕的文本顯示與BoundColumn標記類似ButtonColumn標記可將每個按鈕的文本設為DataGrid的DataSource屬性中某一列的值在ButtonColumn類中省略掉Text屬性並將DataTextField屬性設為數據庫中某個列的名稱該列的值將作為按鈕的文本

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