日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

测试ASP.NET 2.0中Gridview控件高级技巧

發布時間:2023/12/20 asp.net 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 测试ASP.NET 2.0中Gridview控件高级技巧 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ASP.NET 2.0中,新增加的gridview控件的確十分強大,彌補了在asp.net 1.1中,使用datagrid控件時的不足之處。因為在asp.net 1.1中,在使用datagrid時,很多情況下依然要編寫大量的代碼,十分不方便,而且有時需要很多技巧。而在asp.net 2.0中,很多情況下,使用gridview控件的話,甚至只需要拖拉控件,設置屬性就可以了,不需要編寫任何代碼。在《使用ASP.NET 2.0中的GridView控件》和《ASP.NET2.0中用Gridview控件操作數據》中,已經對gridview控件做了一系列介紹,如果之前沒有了解過gridview的讀者,請先閱讀這兩篇文章。在本文中,將繼續深入介紹gridview的一些使用技巧。

  一 格式化gridview

  和asp.net 1.1一樣,gridview可以很方便地定制其樣式,比如css,顏色等。要定制gridview的格式,十分簡單,只需要鼠標右擊gridview,在彈出的菜單中選擇"AUTO FORMAT",則可以選擇gridview的樣式,內置了許多樣式,如下圖:


  如果你要對gridview中每一列自定義格式,則只需要點擊gridview右上角的"smart tag"智能標記,在彈出的菜單中,選擇"edit columns",會彈出如下圖的窗體,這樣就可以對每列進行詳細的設置了:
  

  比如,如果要某一列設置為特殊格式,如要將unitprice設置為貨幣格式,可以在unitprice列的DataFormatString屬性中設置為{0:C},程序代碼如下:

?

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
 <form id="form1" runat="server">
 <div>
  <asp:SqlDataSource ID="productsDataSource"
    Runat="server"
    SelectCommand="SELECT [ProductID], [ProductName],
    [QuantityPerUnit], [UnitPrice], [UnitsInStock] FROM
    [Products]"
    ConnectionString="<%$ ConnectionStrings:NWConnectionString %>"
     DataSourceMode="DataReader">
  </asp:SqlDataSource>
  <asp:GridView ID="productGridView" Runat="server"
     DataSourceID="productsDataSource"
     DataKeyNames="ProductID" AutoGenerateColumns="False"
     BorderWidth="1px" BackColor="#DEBA84"
     CellPadding="3" CellSpacing="2" BorderStyle="None"
     BorderColor="#DEBA84">
  <FooterStyle ForeColor="#8C4510" BackColor="#F7DFB5"></FooterStyle>
  <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center"></PagerStyle>
  <HeaderStyle ForeColor="White" Font-Bold="True" BackColor="#A55129"></HeaderStyle>
  <Columns>
  <asp:BoundField ReadOnly="True" HeaderText="ID" InsertVisible="False" DataField="ProductID"
SortExpression="ProductID">
  <ItemStyle HorizontalAlign="Center"></ItemStyle>
 </asp:BoundField>
 <asp:BoundField HeaderText="Name" DataField="ProductName" SortExpression="ProductName">
 </asp:BoundField>
 <asp:BoundField HeaderText="Qty/Unit"
    DataField="QuantityPerUnit"
    SortExpression="QuantityPerUnit"></asp:BoundField>
 <asp:BoundField HeaderText="Price/Unit"
    DataField="UnitPrice" SortExpression="UnitPrice"
    DataFormatString="{0:c}">
   <ItemStyle HorizontalAlign="Right"></ItemStyle>
 </asp:BoundField>
 <asp:BoundField HeaderText="Units In Stock" DataField="UnitsInStock"
    SortExpression="UnitsInStock"
    DataFormatString="{0:d}">
  <ItemStyle HorizontalAlign="Right"></ItemStyle>
 </asp:BoundField>
</Columns>
<SelectedRowStyle ForeColor="White" Font-Bold="True"
  BackColor="#738A9C"></SelectedRowStyle>
  <RowStyle ForeColor="#8C4510" BackColor="#FFF7E7"></RowStyle>
  </asp:GridView>
 </div>
 </form>
</body>
</html>
  程序運行后結果如下:


  而有的時候,我們可能要根據需要,對gridview中的數據進行特殊的顯示,比如當某樣商品庫存為0時,要求gridview中以不同顏色進行顯示,這時,可以按如下的方法進行:

  首先,gridview提供了rowdatabound事件,該事件在gridview中每行被創建并且綁定到datasource控件后被觸發,因此,我們可以利用該事件去檢查庫存是否為0,如果為0的話,將所在行的北京顏色設置為黃色,代碼如下:

?

public void productsGridView_RowDataBound(object sender,
GridViewRowEventArgs e)
{
 if (e.Row.RowType == DataControlRowType.DataRow)
 {
  int unitsInStock = Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "UnitsInStock"));
  if (unitsInStock == 0)
   e.Row.BackColor = Color.Yellow;
 }
}
  首先,該事件首先檢查,當前的行是否屬于datarow類型的行,因為象gridview中的headerrow,footerrow等行,并不包含實際的數據,因此,我們不需要使用headerrow和footerrow,而為了取得庫存unitesinstock的內容,通過使用databinder.eval的方法取出其內容,并轉換為int類型,接著判斷是否為0,如果為0的話,則設置其行的背景顏色為黃色。程序運行結果如下圖所示:

?

  二 gridview的分頁和排序

  在asp.net 1.1中,datagrid分頁是很常見的。而在asp.net 2.0中,依然有兩種分頁方式,一種是默認的分頁方式,比如,有1000條數據,每頁顯示10條數據,則每次頁面請求都必須從數據庫中將1000條數據讀取出來,只不過每次顯示一頁時,顯示10條數據,速度和性能會降低。另一種是自定義分頁方式,比如1000條數據,每頁顯示10條數據,則程序每次在頁面跳轉時,只會從數據庫中拿10條數據出來顯示給用戶,而不是每次都把1000條數據拿出來,因此性能大為提高。

  在asp.net 2.0中,使用sqldatasource控件進行分頁是十分容易的事情。Sqldatasource數據源控件是用來與數據庫打交道的,可以讀取數據庫中的數據,并可以和gridview等控件進行綁定。在下面的演示中,首先拖拉一個sqldatasource控件,并且設置其數據源為sql server 中的northwind數據庫,再拖拉一個gridview控件,并且點gridview的smart tag智能標記,在彈出的菜單中,選擇"enable paging"和"enable sorting",即允許分頁和排序,則可以完成分頁和排序的功能了,是不是很簡單呢?如下圖所示:


  而在分頁的效果中,有時我們想讓用戶知道,目前正在瀏覽的是第幾頁,那么要如何實現呢?在gridview中,有一個pageindex的屬性,指示頁面的序號(從0開始),則只需在頁面的html代碼內,寫下如下代碼,即可實現效果:

<i>You are viewing page
<%=productsGridView.PageIndex + 1%>
of
<%=productsGridView.PageCount%>
</i>
  完整代碼如下:

?

<form id="form1" runat="server">
<div>
<asp:SqlDataSource ID="productDataSource" Runat="server"
 SelectCommand="SELECT [ProductName], [UnitPrice],
 [UnitsInStock], [QuantityPerUnit] FROM [Products]"
 ConnectionString="<%$ ConnectionStrings:NWConnectionString %>">
  </asp:SqlDataSource>
  <asp:GridView ID=" productsGridView" Runat="server"
    DataSourceID="productDataSource" AutoGenerateColumns="False"
    AllowSorting="True" BorderWidth="2px" BackColor="White" GridLines="None" CellPadding="3"
    CellSpacing="1" BorderStyle="Ridge" BorderColor="White" AllowPaging="True">
   <FooterStyle ForeColor="Black" BackColor="#C6C3C6"></FooterStyle>
   <PagerStyle ForeColor="Black" HorizontalAlign="Right" BackColor="#C6C3C6"></PagerStyle>
   <HeaderStyle ForeColor="#E7E7FF" Font-Bold="True" BackColor="#4A3C8C"></HeaderStyle>
   <Columns>
   <asp:BoundField HeaderText="Product" DataField="ProductName" SortExpression="ProductName">
  </asp:BoundField>
  <asp:BoundField HeaderText="Unit Price" DataField="UnitPrice" SortExpression="UnitPrice"
DataFormatString="{0:c}">
   <ItemStyle HorizontalAlign="Right"></ItemStyle>
  </asp:BoundField>
  <asp:BoundField HeaderText="Units In Stock" DataField="UnitsInStock"
SortExpression="UnitsInStock" DataFormatString="{0:d}">
   <ItemStyle HorizontalAlign="Right"></ItemStyle>
  </asp:BoundField>
  <asp:BoundField HeaderText="Quantity Per Unit" DataField="QuantityPerUnit"></asp:BoundField>
 </Columns>
 <SelectedRowStyle ForeColor="White" Font-Bold="True" BackColor="#9471DE"></SelectedRowStyle>
 <RowStyle ForeColor="Black" BackColor="#DEDFDE"></RowStyle>
</asp:GridView>
<i>You are viewing page
<%=productsGridView.PageIndex + 1%>
of
<%=productsGridView.PageCount%>
</i>
</div>
</form>
  實現的效果如下圖所示:


  注意的是,可以點擊gridview中各字段的名稱,如product,unit price,等進行排序,十分方便。如果要對分頁時每頁顯示多少條數據進行顯示,則只需要設置gridview的pagesize屬性就可以了。

?

  三 在gridview中使用圖片

  在asp.net 1.1中,如果要使用圖片的話,需要設置templatecolumn模版列。而在asp.ne 2.0中,則提供了imagefield列可以顯示gridview中的圖片。下面,我們設計一個簡單的相冊列表,讓大家了解如何在gridview中使用圖片,其中,數據表的結果如下,并且已經假設用戶已經上傳了相片,因此著重討論如何在gridview中顯示圖片

  · PictureID-圖片的序號,自動遞增.

  · Title-圖片的標題

  · DateAdded-圖片上傳日期

  · PictureUrl-圖片上傳后的相對路徑

  接下來,我們拖拉一個gridview到IDE環境中去,設置將其與sqldatasource綁定。由于我們要在gridview中顯示的是實際的圖片,因此我們首先選gridview的smart tag標記,在彈出的菜單中選擇"edit columns",之后將pictureurl綁定字段移除,添加一個ImageField綁定字段,并且將ImageField字段的dataimageurlfield屬性設置為PictureURL字段,用來顯示圖片的路徑,如下圖所示:


  下面是相關HTML部分的代碼:

<asp:GridView ID="GridView1" Runat="server"
DataSource=’<%# GetData() %>’ AutoGenerateColumns="False"
BorderWidth="1px" BackColor="White" CellPadding="3" BorderStyle="None"
BorderColor="#CCCCCC" Font-Names="Arial">
<FooterStyle ForeColor="#000066" BackColor="White"></FooterStyle>
<PagerStyle ForeColor="#000066" HorizontalAlign="Left"
BackColor="White"></PagerStyle>
<HeaderStyle ForeColor="White" Font-Bold="True"
BackColor="#006699"></HeaderStyle>
<Columns>
<asp:BoundField HeaderText="Picutre ID" DataField="PictureID">
<ItemStyle HorizontalAlign="Center"
VerticalAlign="Middle"></ItemStyle>
</asp:BoundField>
<asp:BoundField HeaderText="Title" DataField="Title"></asp:BoundField>
<asp:BoundField HeaderText="Date Added" DataField="DateAdded"
DataFormatString="{0:d}">
<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:BoundField>
<asp:ImageField DataImageUrlField="PictureURL"></asp:ImageField>
</Columns>
<SelectedRowStyle ForeColor="White" Font-Bold="True"
BackColor="#669999"></SelectedRowStyle>
<RowStyle ForeColor="#000066"></RowStyle>
</asp:GridView>
  我們并且通過手動編寫代碼的方式,創建數據表,如下代碼所示:

DataTable GetData()
{
 // This method creates a DataTable with four rows. Each row has the
 // following schema:
 // PictureID int
 // PictureURL string
 // Title string
 // DateAdded datetime
 DataTable dt = new DataTable();
 // define the table’s schema
 dt.Columns.Add(new DataColumn("PictureID", typeof(int)));
 dt.Columns.Add(new DataColumn("PictureURL", typeof(string)));
 dt.Columns.Add(new DataColumn("Title", typeof(string)));
 dt.Columns.Add(new DataColumn("DateAdded", typeof(DateTime)));
 // Create the four records
 DataRow dr = dt.NewRow();
 dr["PictureID"] = 1;
 dr["PictureURL"] = ResolveUrl("~/DisplayingImages/Images/Blue hills.jpg");
 dr["Title"] = "Blue Hills";
 dr["DateAdded"] = new DateTime(2005, 1, 15);
 dt.Rows.Add(dr);
 dr = dt.NewRow();
 dr["PictureID"] = 2;
 dr["PictureURL"] = ResolveUrl("~/DisplayingImages/Images/Sunset.jpg");
 dr["Title"] = "Sunset";
 dr["DateAdded"] = new DateTime(2005, 1, 21);
 dt.Rows.Add(dr);
 dr = dt.NewRow();
 dr["PictureID"] = 3;
 dr["PictureURL"] =
 ResolveUrl("~/DisplayingImages/Images/Water lilies.jpg");
 dr["Title"] = "Water Lilies";
 dr["DateAdded"] = new DateTime(2005, 2, 1);
 dt.Rows.Add(dr);
 dr = dt.NewRow();
 dr["PictureID"] = 4;
 dr["PictureURL"] = ResolveUrl("~/DisplayingImages/Images/Winter.jpg");
 dr["Title"] = "Winter";
 dr["DateAdded"] = new DateTime(2005, 2, 18);
 dt.Rows.Add(dr);
 return dt;
}
  程序運行后,結果如下圖所示

?

轉載于:https://www.cnblogs.com/babayaluo/archive/2006/07/17/452537.html

總結

以上是生活随笔為你收集整理的测试ASP.NET 2.0中Gridview控件高级技巧的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。